
저번주 화욜일부터 Hive를 공부하기 시작해서 화, 수, 목, 일 4일동안 공부한 여정을 정리해보고자 한다. 하이브를 공부해야한다.어떻게 공부하면 좋을까? 책을 살까?https://www.yes24.com/Product/Goods/8655208 하이브 완벽 가이드 - 예스24이 책은 예제를 중심으로 여러분의 환경에서 하이브를 어떻게 설치하고 설정하는지 보여준다. 하둡과 맵리듀스에 대해 간략하게 설명하고 하이브가 하둡 생태계에서 어떻게 동작하는지도 보여www.yes24.com절판됐다. 구매하려면 중고로 구해야하고 가격이 원가의 두배다.빠른시간동안 공부를 완료하고 테스트를 해봐야하니 공식문서를 살펴보자.공식문서들이 평균 2016년 이후로 업데이트 되있지 않다.음... 일단 개요만 훑고 다른 방법을 찾아봐야겠..

1. 프로듀서 개요 - 카프카를 사용하는 용도와 요구사항은 카프카에 메시지를 쓰는 프로듀서 API를 사용하는 방법과 구성에 영향을 준다. ( 일부 유실해도 되는지, 처리 대기시간이 짧아야 하는지 등 ) - 카프카 API는 먼저 키랑 메시지를 갖는 ProducerRecord를 생성한 후, 해당 데이터를 직렬처리기를 통해 바이트 배열로 직렬화한다. 그후, 데이터는 파티셔너에 의해 적절하게 특정 파티션 batch에 추가되고 별개의 스레드가 그 batch를 카프카 브로커에 전송한다. 2. 카프카 프로듀서 구성하기 org.apache.kafka kafka-clients 1.1.0 org.apache.kafka kafka-streams 1.1.0 org.apache.kafka kafka_2.11 0.8.2.1 Pr..
2. 카프카 설치와 구성하기 1) 제일 먼저 할일 - jdk 8이상을 다운로드 하고, 주키퍼를 설치한다. 주키퍼는 카프카 배포판에 포함되어 있어서 따로 설치할 필요는 없지만 별도로 설치해도 무방하다. * 주키퍼란? - 주키퍼는 분산환경의 코디네이터 역할을 수행한다. - 카프카 관련해서는 메타데이터를 통합 관리해준다. - 주키퍼는 보통 클러스터로 구성되는데 3개 또는 5개가 적당하다. (하나가 장애가 나도 남은 2개로 active - standby가 성립되기 때문) - 카프카의 리더 선출을 결정한다. 2) 카프카 브로커 설치하기 - WSL 을 이용하는 방법 - Docker을 이용하는 방법 - 우분투에 그냥 설치하는 방법 3) 브로커 구성 - /usr/local/kafka/config/server.prope..
kafka_2.12-1.1.1.tgz 1. 카프카 훑어보기 - 카프카는 메시지 발행/구독 시스템으로서 '분산 커밋 로그' 라고도 불린다. - 카프카는 데이터를 수록할 파티션 결정을 위해 해시값으로 키를 생성한다. - 카프카는 효율성을 위해 여러개의 메시지를 모아 배치형태로 파티션에 수록하므로 네트워크 비용을 아낄 수 있다. (이경우, latency와 thorughput의 트레이드오프가 생김) - 카프카는 스키마를 지원한다. - 카프카의 메시지는 토픽을 분류되고, 토픽으로 분류된 메시지는 특정 파티션에 저장된다. - 카프카에서 데이터를 "스트림" 이라고 칭하는 경우가 많은데 이때 스트림은 대부분 파티션의 개수와 상관없이 하나의 토픽 데이터로 간주되며, 데이터를 쓰는 프로듀서로부터 데이터를 읽는 컨슈머로 이..

3일전 로그를 보고싶어져서 nifi log가 보관되는곳에 들어가봤다. 오잉??? 없네??? 로그가 자동삭제되는 로직이 있었나?? 알아보니 nifi-logback.xml의 maxHistory가 30으로 설정되있어서 발생하는 현상이었다. 하루에 생성되는 nifi-app.log 파일이 10개이상이라서 3일전 로그는 이미 삭제되버린것! ㅠㅠ 조만간 설정파일을 바꿔놓든 해야 겠다. 로그설정파일 위치 * Ambari를 사용하는 경우 /Services/NiFi/Configs/Advanced nifi-node-logback-env * 로컬인 경우 nifi/conf/logback.xml ${org.apache.nifi.bootstrap.config.log.dir}/nifi-app.log ${org.apache.nifi...
package practice;import org.apache.commons.lang.ArrayUtils;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.hadoop.hbase.client.HBaseAdmin;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;import scala.Tuple2;import..

https://www.youtube.com/watch?v=fikIR4eUkM0 1. kafka Broker 옵션log.retention.hours - Producer가 Broker 에게 메시지를 날리면 kafka Broker는 해당 메세지를 로컬 저장소에 보관하게 된다. - 이때 얼마나 오랫동안 지우지 않고 보관하고 있을 것인지에 대한 시간을 설정할 수 있는데- 이 것의 기본 설정값이 168시간- 즉, 일주일이다. 자 생각을 해보자. 우리 회사가 1KB 의 메세지를 초당 10000개 정도 카프카에 보내고 있다.1KB * 10000 = 약 9MB 즉, 초당 약 9MB의 메세지를 날리고 있다. 초당 9MB라면 한시간에는? 하루에는? 일주일에는? 어느정도의 메세지가 카프카에 날라가서 저장될까?참고로 카프카는 ..

1. Lag란? - Producer 오프셋과 Consumer 오프셋의차이 - Lag는 여러개가 존재할 수 있다. - 주로 Consumer의 상태를 볼 때 사용한다. Consumer가 잘 가져오고 있는지 성능이 좋게 나오고 있는지를 확인하기 위한 지표랄까. 2. Burrow - Consumer 에서 kafka Lag를 모니터링 할 수 있게 해주는 도구 - Golang으로 작성된 오픈소스임 - Consumer 성능측정을 위해서는 처음 Cousumer를 생성할 때부터 Lag 정보를 받아올 수 있게 코드를 짜놓아야 한다. ( 특정 저장소에 Lag 정보를 저장할 수 있게하는 로직) - 이것은 Consumer 자체에 많은 dependency를 주게되고 해당 컨슈머가 비정상 종료를 하게되는 경우 Lag정보를 받아올 ..
1. 카프카 왜 만들어졌나? - 데이터 처리 복잡.. - 여러 분석툴들에 데이터를 보낼때 일일이 바꿔서 보내줘야함... 귀찮... 유지보수 어려움 - 분석툴들 : redis, rabbitMQ - 카프카에 데이터를 보내서 데이터는를 카프카가 관리하게 함. 카프카는 데이터들을 다른 애플리케이션의 인풋 스트림 형식으로 잘 보내줌. 데이터를 보내는 입장에서 각 애플리케이션 별로 일일이 변환하는 코드를 짤 필요가 없다! 2. 카프카 왜 많이 사용되나? 1) High througput message capacity - 짧은시간 내에 엄청난 양의 데이터를 컨슈머까지 보낼 수 있다. - 파티션을 통한 분산처리가 가능하기때문에 데이터양이 많아지면 많아질 수록 컨슈머 개수를 늘려서 병렬처리가 가능하고 이를 통해 데이터 처..

1. 카프카 Consumer - 토픽의 데이터를 가져와도 데이터가 사라지지 않는다! - 토픽의 파티션에 저장된 데이터를 가져온다. (polling) - Partition offset 위치를 기록 (commit) 한다. 즉, 해당 파티션의 데이터를 어디까지 받아왔는지를 기록해놓기 때문에 나중에 컨슈머에 문제가 생겨서 다운된다 할지라도 중단된 시점에서부터 데이터를 받아 올 수 있다. offset은 파티션마다 레코드마다 저장된다 ( ex : 0번파티션의 5번째 데이터까지 읽었음) - Consumer group을 통해 병렬로 데이터를 받아올 수 있다 2. 카프카 사용하기 - 브로커와의 버전차이 확인 꼭! 3. 컨슈머 사용하기 - polling 루프 : poll() 함수가 들어있는 루프 - 브로커의 데이터를 0...