메뉴 건너뛰기

Bigdata, Semantic IoT, Hadoop, NoSQL

Bigdata, Hadoop ecosystem, Semantic IoT등의 프로젝트를 진행중에 습득한 내용을 정리하는 곳입니다.
필요한 분을 위해서 공개하고 있습니다. 문의사항은 gooper@gooper.com로 메일을 보내주세요.


1. 다운로드

https://www.apache.org/dyn/closer.cgi?path=/kafka/0.9.0.1/kafka_2.11-0.9.0.1.tgz


2. upload및 압축풀기

  가. tar xvfz kafka_2.11-0.9.0.1.tgz

  나. ln -s kafka_2.11-0.9.0.1 kafka


3. properties파일 수정(zookeeper는 별도로 기동중인 상태임)

  가. config/consumer.properties : zookeeper.connect=sda1:2181,sda2:2181,so1:2181

  나. config/producter.properties : metadata.broker.list=sda1:9092,sda2:9092,so1:9092

  다. config/server.properties를 broker개수 만큼 복사하고 아래의 내용을 수정한다.

   (예, broker가 3개인경우 는server-1.properties, server-2.properties, server-3.properties의 

       이름을 각각 가지는 설정파일을 3개 만든다.)

    - broker.id=1 : broker마다 unique한 값

    - port=9092

    - host.name=sda1  : 각 서버의 고정ip

    - log.dirs=/logs/kafka/kafka-logs

    - zookeeper.connect=sda1:2181,sda2:2181,so1:2181


4. broker로 사용할 서버에 각각 복사(sda1, sda2, so1)

  scp -r -P 22 kafka_2.11-0.9.0.1 root@sda2:$HOME

  

5. broker노드로 사용할 각 서버에서 kafka server를 기동한다.(root로 각 서버에서 실행)

  가. ln -s kafka_2.11-0.9.0.1 kafka

  나. bin/kafka-server-start.sh config/server-1.properties &  (해당 서버에서 실행)

      (Kafka Manager모니터링툴을 이용하기 위한 JMX PORT를 설정하기 위해서

        env JMX_PORT=8989 bin/kafka-server-start.sh config/server-1.properties &

       와 같이 실행한다.)


  나-1. bin/kafka-server-start.sh config/server-2.properties &  (해당 서버에서 실행)

       (Kafka Manager모니터링툴을 이용하기 위한 JMX PORT를 설정하기 위해서

        env JMX_PORT=8989 bin/kafka-server-start.sh config/server-2.properties &

       와 같이 실행한다.)

  나-2. bin/kafka-server-start.sh config/server-3.properties &  (해당 서버에서 실행)

       (Kafka Manager모니터링툴을 이용하기 위한 JMX PORT를 설정하기 위해서

        env JMX_PORT=8989 bin/kafka-server-start.sh config/server-3.properties &

       와 같이 실행한다.)


  * 서버중지 : bin/kafka-server-stop.sh

  * 데몬확인(jps -m) : 81589 Kafka config/server-1.properties

 

6. topic관리(토픽명 : test-topic)

 가. 생성

  * bin/kafka-topics.sh --create --zookeeper sda1:2181,sda2:2181,so1:2181 --replication-factor 3 --partitions 3 --topic test-topic


 나. 목록

 * topic목록 확인 : bin/kafka-topics.sh --list --zookeeper sda1:2181,sda2:2181,so1:2181


 다. topic정보

 * topic정보 : bin/kafka-topics.sh --describe --zookeeper sda1:2181,sda2:2181,so1:2181


 라. topic삭제

 * topic삭제 : bin/kafka-topics.sh --delete --zookeeper sda1:2181,sda2:2181,so1:2181 --topic COLLECT_ONEM2M 

 * 지정topic(예, COL_TEST)에 대한 replica와 partition정보 확인 :

     ./kafka-topics.sh --describe  --zookeeper sda1:2181 --topic COL_TEST


 마. topic설정 정보 변경

 * topic 설정변경(partitions의 수를 5로 변경하는 경우) : bin/kafka-topics.sh --alter --zookeeper sda1:2181,sda2:2181,so1:2181 --topic COL_TEST --partitions 5


 바.topic 생성시 주의사항 

    존재하지 않은 topic에 대하여 메시지를 생산하거나 소비할 경우 broker의 설정값에 따라 디폴트 설정으로 topic을 자동생성될 수 있다. (자동생성하지 않도록 하려면 auto.create.topics.enable를 false로 설정한다)


 - broker관련 기본적으로 설정해야 하는 값(Kafka API사용시 conf설정)

   auto.create.topics.enable=true

   num.partitions=1   

   default.replication.factor=1

   delete.topic.enable=false


   #30MB(전송가능량, Kafka API사용시 conf설정)

   message.max.bytes=31457280

   replica.fetch.max.bytes=31457280


8. test

  가. producer기동

    bin/kafka-console-producer.sh --broker-list sda1:9092,sda2:9092,so1:9092 --topic test-topic

  나. consumer기동

    bin/kafka-console-consumer.sh --zookeeper sda1:2181,sda2:2181,so1:2181 --from-beginning --topic test-topic


  * producer의 console에서 텍스트 입력후 consumer에서 data가 보이면 정상적으로 작동되는것임


9. Kafka API를 이용하여 consumer프로그램 만들때 conf는 아래와 같이 설정해준다.

properties.put("zookeeper.connect",Utils.ZOOKEEPER_LIST);

properties.put("group.id",user_id);

properties.put("zookeeper.session.timeout.ms", "500");

properties.put("zookeeper.sync.time.ms", "250");

properties.put("auto.commit.interval.ms", "1000");

properties.put("fetch.message.max.bytes", "31457280"); // 30MB 전송가능함

properties.put("auto.offset.reset", "smallest");

번호 제목 글쓴이 날짜 조회 수
321 VPS에서는 root로 실행해도 swap파일을 만들지 못하게 만들어 두었지만 swap파일을 생성하는 방법 총관리자 2017.06.20 120
320 cassandra cluster 문제가 있는 node제거 하기(DN상태의 노드가 있으면 cassandra cluster 전체에 문제가 발생하므로 반드시 제거할것) 총관리자 2017.06.21 309
319 Not enough replica available for query at consistency QUORUM가 발생하는 경우 총관리자 2017.06.21 256
318 http://blog.naver.com... 총관리자 2017.06.23 88
317 elasticsearch 기동시 permission denied on key 'vm.max_map_count' 오류발생시 조치사항 총관리자 2017.06.23 431
316 solr 6.2에 한글 형태소 분석기(arirang 6.x) 적용 및 테스트 file 총관리자 2017.06.27 881
315 mysql에서 외부 디비를 커넥션할 경우 접속 속도가 느려질때 총관리자 2017.06.30 1083
314 solr명령 실행시 "Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect" 오류발생 총관리자 2017.06.30 202
313 python test.py실행시 "ImportError: No module named pyspark" 혹은 "ImportError: No module named py4j.protocol"등의 오류 발생시 조치사항 총관리자 2017.07.04 766
312 halyard 1.3을 다른 서버로 이전하는 방법 총관리자 2017.07.05 66
311 halyard 1.3의 rdf4j-server.war와 rdf4j-workbench.war를 tomcat deploy후 조회시 java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/Cell발생시 조치사항 총관리자 2017.07.05 65
310 halyard의 console스크립트에서 생성한 repository는 RDF4J Web Applications에서 공유가 되지 않는다. 총관리자 2017.07.05 45
309 schema.xml vs managed-schema 지정 사용하기 - 두개를 동시에 사용할 수는 없음 총관리자 2017.07.09 153
308 HBase write 성능 튜닝 file 총관리자 2017.07.18 87
307 HBase 설정 최적화하기(VCNC) file 총관리자 2017.07.18 120
306 Current heap configuration for MemStore and BlockCache exceeds the threshold required for successful cluster operation 총관리자 2017.07.18 892
305 갑자기 DataNode가 java.io.IOException: Premature EOF from inputStream를 반복적으로 발생시키다가 java.lang.OutOfMemoryError: Java heap space를 내면서 죽는 경우 조치방법 총관리자 2017.07.19 1685
304 9대가 hbase cluster로 구성된 서버에서 테스트 data를 halyard에 적재하고 테스트 하는 방법및 절차 총관리자 2017.07.21 56
303 Core with name 'xx_shard4_replica1' already exists. 발생시 조치사항 총관리자 2017.07.22 62
302 LUBM 데이타 생성구문 총관리자 2017.07.24 143

A personal place to organize information learned during the development of such Hadoop, Hive, Hbase, Semantic IoT, etc.
We are open to the required minutes. Please send inquiries to gooper@gooper.com.

위로