Hadoop/Flume

Flume을 통한 Kafka To HDFS 연계

희쨔응 2023. 4. 26. 08:50
  • 데모 시나리오 개요

해당 시나리오는 Kafka Topic 에 적재 되어 있는 Data를 Consume 하여 HDFS 에 ORC 확장 자로 적재 하는 데모 시나리오 입니다.

  • Apache Flume 이란

Apache Flume은 오픈소스 프로젝트로 개발된 로그 데이터를 수집 기술 입니다. 여러 서버에서 생산된 대용량 로그 데이터를 효과적으로 수집하여 HDFS과 같은 원격 목적지에 데이터를 전송하는 기능을 제공 합니다.

구조가 단순하고 유연하여 다양한 유형의 Streaming Data Flow아키텍처를 구성할 수 있습니다.

  • Flume 구축 메뉴얼
#설치 경로 접속
$ cd /usr/local/

#플룸 설치
$ wget <https://dlcdn.apache.org/flume/1.10.1/apache-flume-1.10.1-bin.tar.gz>

#압축풀기
$ tar -xvf apache-flume-1.10.1-bin.tar.gz

#심볼릭 링크 설정
$ ln -s apache-flume-1.10.1-bin/ flume

#맨 하단에 아래 내용 추가
$ vi /etc/profile
export FLUME_HOME=/usr/local/flume
export PATH=$PATH:$FLUME_HOME/bin
export CLASSPATH=$CLASSPATH:$FLUME_HOME/lib/*.jar

프로파일 적용
$ source /etc/profile

$ cd /usr/local/flume/conf/

$ cp flume-env.sh.template flume-env.sh

주석되있는 부분 풀어주고 자바홈 경로 잡아주기
$ vi flume-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.345.b01-1.el7_9.x86_64

플룸 버전 체크
$ flume-ng version
  • Flume 소스
agent.sources = kafka-source
agent.channels = memory-channel
agent.sinks = hdfs-sink

agent.sources.kafka-source.type = org.apache.flume.source.kafka.KafkaSource
agent.sources.kafka-source.batchSize = 100
agent.sources.kafka-source.topic = trino
agent.sources.kafka-source.kafka.bootstrap.servers = 221.168.47.203:9092
agent.sources.kafka-source.batchDurationMillis = 2000

agent.channels.memory-channel.type = memory
agent.channels.memory-channel.capacity = 1000

agent.sinks.hdfs-sink.type = hdfs
agent.sinks.hdfs-sink.hdfs.path = hdfs://localhost:9000/tmp/flume/%y-%m-%d
agent.sinks.hdfs-sink.hdfs.fileType = DataStream
agent.sinks.hdfs-sink.hdfs.filePrefix = %Y-%m-%d
agent.sinks.hdfs-sink.hdfs.fileSuffix = .orc
agent.sinks.hdfs-sink.hdfs.rollInterval = 3600
agent.sinks.hdfs-sink.hdfs.rollSize = 0
agent.sinks.hdfs-sink.hdfs.rollCount = 10000

agent.sources.kafka-source.channels = memory-channel
agent.sinks.hdfs-sink.channel = memory-channel
  • Flume 실행
#실행 경로
$ cd /usr/local/apache-flume-1.10.1-bin/bin
#실행 명령어
$ flume-ng agent --name agent --conf-file $FLUME_HOME/conf/flume-conf.properties -Dflume.root.logger=INFO,console
  • Hadoop 에 적재 된 데이터 확인
  • 데모 시나리오 개요

위 시나리오는 Kafka Topic 에 적재 되어 있는 Data를 Consume 하여 HDFS 에 ORC 확장 자로 적재 하는 데모 시나리오 입니다.

  • Apache Flume 이란

Apache Flume은 오픈소스 프로젝트로 개발된 로그 데이터를 수집 기술 입니다. 여러 서버에서 생산된 대용량 로그 데이터를 효과적으로 수집하여 HDFS과 같은 원격 목적지에 데이터를 전송하는 기능을 제공 합니다.

구조가 단순하고 유연하여 다양한 유형의 Streaming Data Flow아키텍처를 구성할 수 있습니다.

  • Flume 구축 메뉴얼
#설치 경로 접속
$ cd /usr/local/

#플룸 설치
$ wget <https://dlcdn.apache.org/flume/1.10.1/apache-flume-1.10.1-bin.tar.gz>

#압축풀기
$ tar -xvf apache-flume-1.10.1-bin.tar.gz

#심볼릭 링크 설정
$ ln -s apache-flume-1.10.1-bin/ flume

#맨 하단에 아래 내용 추가
$ vi /etc/profile
export FLUME_HOME=/usr/local/flume
export PATH=$PATH:$FLUME_HOME/bin
export CLASSPATH=$CLASSPATH:$FLUME_HOME/lib/*.jar

프로파일 적용
$ source /etc/profile

$ cd /usr/local/flume/conf/

$ cp flume-env.sh.template flume-env.sh

주석되있는 부분 풀어주고 자바홈 경로 잡아주기
$ vi flume-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.345.b01-1.el7_9.x86_64

플룸 버전 체크
$ flume-ng version
  • Flume 소스
agent.sources = kafka-source
agent.channels = memory-channel
agent.sinks = hdfs-sink

agent.sources.kafka-source.type = org.apache.flume.source.kafka.KafkaSource
agent.sources.kafka-source.batchSize = 100
agent.sources.kafka-source.topic = trino
agent.sources.kafka-source.kafka.bootstrap.servers = 221.168.47.203:9092
agent.sources.kafka-source.batchDurationMillis = 2000

agent.channels.memory-channel.type = memory
agent.channels.memory-channel.capacity = 1000

agent.sinks.hdfs-sink.type = hdfs
agent.sinks.hdfs-sink.hdfs.path = hdfs://localhost:9000/tmp/flume/%y-%m-%d
agent.sinks.hdfs-sink.hdfs.fileType = DataStream
agent.sinks.hdfs-sink.hdfs.filePrefix = %Y-%m-%d
agent.sinks.hdfs-sink.hdfs.fileSuffix = .orc
agent.sinks.hdfs-sink.hdfs.rollInterval = 3600
agent.sinks.hdfs-sink.hdfs.rollSize = 0
agent.sinks.hdfs-sink.hdfs.rollCount = 10000

agent.sources.kafka-source.channels = memory-channel
agent.sinks.hdfs-sink.channel = memory-channel
  • Flume 실행
#실행 경로
$ cd /usr/local/apache-flume-1.10.1-bin/bin
#실행 명령어
$ flume-ng agent --name agent --conf-file $FLUME_HOME/conf/flume-conf.properties -Dflume.root.logger=INFO,console
  • Hadoop 에 적재 된 데이터 확인
  • 데모 시나리오 개요

위 시나리오는 Kafka Topic 에 적재 되어 있는 Data를 Consume 하여 HDFS 에 ORC 확장 자로 적재 하는 데모 시나리오 입니다.

  • Apache Flume 이란

Apache Flume은 오픈소스 프로젝트로 개발된 로그 데이터를 수집 기술 입니다. 여러 서버에서 생산된 대용량 로그 데이터를 효과적으로 수집하여 HDFS과 같은 원격 목적지에 데이터를 전송하는 기능을 제공 합니다.

구조가 단순하고 유연하여 다양한 유형의 Streaming Data Flow아키텍처를 구성할 수 있습니다.

  • Flume 구축 메뉴얼
#설치 경로 접속
$ cd /usr/local/

#플룸 설치
$ wget <https://dlcdn.apache.org/flume/1.10.1/apache-flume-1.10.1-bin.tar.gz>

#압축풀기
$ tar -xvf apache-flume-1.10.1-bin.tar.gz

#심볼릭 링크 설정
$ ln -s apache-flume-1.10.1-bin/ flume

#맨 하단에 아래 내용 추가
$ vi /etc/profile
export FLUME_HOME=/usr/local/flume
export PATH=$PATH:$FLUME_HOME/bin
export CLASSPATH=$CLASSPATH:$FLUME_HOME/lib/*.jar

프로파일 적용
$ source /etc/profile

$ cd /usr/local/flume/conf/

$ cp flume-env.sh.template flume-env.sh

주석되있는 부분 풀어주고 자바홈 경로 잡아주기
$ vi flume-env.sh
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.345.b01-1.el7_9.x86_64

플룸 버전 체크
$ flume-ng version
  • Flume 소스
agent.sources = kafka-source
agent.channels = memory-channel
agent.sinks = hdfs-sink

agent.sources.kafka-source.type = org.apache.flume.source.kafka.KafkaSource
agent.sources.kafka-source.batchSize = 100
agent.sources.kafka-source.topic = trino
agent.sources.kafka-source.kafka.bootstrap.servers = 221.168.47.203:9092
agent.sources.kafka-source.batchDurationMillis = 2000

agent.channels.memory-channel.type = memory
agent.channels.memory-channel.capacity = 1000

agent.sinks.hdfs-sink.type = hdfs
agent.sinks.hdfs-sink.hdfs.path = hdfs://localhost:9000/tmp/flume/%y-%m-%d
agent.sinks.hdfs-sink.hdfs.fileType = DataStream
agent.sinks.hdfs-sink.hdfs.filePrefix = %Y-%m-%d
agent.sinks.hdfs-sink.hdfs.fileSuffix = .orc
agent.sinks.hdfs-sink.hdfs.rollInterval = 3600
agent.sinks.hdfs-sink.hdfs.rollSize = 0
agent.sinks.hdfs-sink.hdfs.rollCount = 10000

agent.sources.kafka-source.channels = memory-channel
agent.sinks.hdfs-sink.channel = memory-channel
  • Flume 실행
#실행 경로
$ cd /usr/local/apache-flume-1.10.1-bin/bin
#실행 명령어
$ flume-ng agent --name agent --conf-file $FLUME_HOME/conf/flume-conf.properties -Dflume.root.logger=INFO,consol

'Hadoop > Flume' 카테고리의 다른 글

Apache Flume(File To Hadoop)  (0) 2022.10.21