
저번주 화욜일부터 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...
HFile 데이터는 HFile 이라는 파일에 저장된다 이 파일은 데이터가 영구 저장되고 정렬되며 고정불변의 Key-Value쌍 맵이다. 이 저장파일은 특정 값에 접근할수도 있고 시작값과 끝값이 주어지면 값의 범위를 탐색할 수 있는 API를 제공한다. 모든 HFile이 블록 색인을 갖고 있으므로 검색은 단 한번의 디스크 판독으로 수행될 수 있다. 검색하고자 하는 키를 가지고 있을 것으로 예상되는 블록을 지정-> 메모리에 저장되어 있는 블록 색인에서 이진탐색을 수행하여 결정 -> 디스크에서 블록을 읽어들여 실제 키를 얻는다. HFile은 보통 hdfs에 저장되는데 확장성이 있고, 데이터가 영구저장되며, 여러 사본으로 복제되는 저장계층을 제공해준다. 데이터가 갱신되면 제일 먼저 WAL (Write-Ahead ..
컬럼 hbase의 가장 기본적인 단위 컬럼은 여러 개의 버전을 지닐 수 있고, 버전의 값은 각각 별도의 셀에 저장된다. 각 셀의 다중 버전을 허용하여 추가적인 차원을 제공한다. 개수에 제한이 있다. 컬럼패밀리의 이름은 출력가능한 문자들로 이뤄져있어야함 패밀리: 퀄리파이어 컬럼은 제한이 없다. ==> 하나의 컬럼패밀리에 수백만개의 컬럼 저장가능. 컬럼값의 데이터 타입이나 길이에도 제한 없음 컬럼 자동생성 또는 명시적 생성 가능 셸 하나의 서로 다른 버전은 타임스탬프에 대해 내림차순으로 저장되서 최근의 값을 먼저 읽을 수 있다. 사용자는 값에 몇 개의 버전을 저장할지 지정 가능 술어적 삭제를 이용해서 지난주에 추가된 값들만 유지하는 식의 활용 가능 값은 해석되지 않은 바이트 배열이다 --> 클라이언트는 이것..
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정보를 받아올 ..