[DW ver.2] Druid 사용 방법
Druid
high-performance, column-oriented, distributed data store
http://druid.io/
Quick Start
http://druid.io/docs/0.12.0/tutorials/quickstart.html
1. Prerequisites
* Java 8 or higher
* Linux, Mac OS X, or other Unix-like OS (Windows is not supported)
* 8G of RAM
* 2 vCPUs
2. Getting started
1) Druid 다운로드
curl -O http://static.druid.io/artifacts/releases/druid-0.12.0-bin.tar.gz
tar -xzf druid-0.12.0-bin.tar.gz
cd druid-0.12.0
2) Zookeeper 실행
Druid의 distributed coordination을 위해 zookeeper의 실행이 필요하다.
curl http://www.gtlib.gatech.edu/pub/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gz -o zookeeper-3.4.10.tar.gz
tar -xzf zookeeper-3.4.10.tar.gz
cd zookeeper-3.4.10
cp conf/zoo_sample.cfg conf/zoo.cfg
./bin/zkServer.sh start
3) Druid 실행
Druid(druid-0.12.0) 디렉토리로 돌아와서, Druid를 init하자. init을 하면 directory setting이 완료된다.
bin/init
Druid는 “Historical, Coordinator, Broker, Indexing Service, Realtime”총 5개 node로 구성되어있다.
(Druid is architected as a grouping of systems each with a distinct role and together they form a working system.)
Druid를 실행하기 위해선, 5개의 nodeㄹ를 모두 실행해야한다. Druid Architecture에 대한 자세한 설명은 다음 사이트 참고
http://druid.io/docs/0.12.0/design/design.html
java `cat conf-quickstart/druid/historical/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/historical:lib/*" io.druid.cli.Main server historical
java `cat conf-quickstart/druid/broker/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/broker:lib/*" io.druid.cli.Main server broker
java `cat conf-quickstart/druid/coordinator/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/coordinator:lib/*" io.druid.cli.Main server coordinator
java `cat conf-quickstart/druid/overlord/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/overlord:lib/*" io.druid.cli.Main server overlord
java `cat conf-quickstart/druid/middleManager/jvm.config | xargs` -cp "conf-quickstart/druid/_common:conf-quickstart/druid/middleManager:lib/*" io.druid.cli.Main server middleManager
이 명령어들을 systemd service로 만들어놓으면, 실행 및 관리가 편하다. session이 만료될때마다 다시 이 각각의 명령어들을 실행해줘야 하는 불편함이 줄어든다.
service 등록하는 법은 다음 링크 참
https://steemit.com/ubuntu/@uneedcomms/ubuntu-systemd-service
각각을 다음과 같은 이름으로 service로 등록 한 후 실행시킨다.
druid-broker.service
druid-historical.service
druid-overload.service
druid-coordinator.service
druid-middle-manager.service
4) Druid에 data load 하기
Druid에는 세가지 방법으로 Data를 로드하여 사용할 수 있다.
http://druid.io/docs/0.12.0/tutorials/ingestion.html
- Files - Load data from HDFS, S3, local files, or any supported Hadoop filesystem in batches. We recommend this method if your dataset is already in flat files.
- Stream push - Push a data stream into Druid in real-time using Tranquility, a client library for sending streams to Druid. We recommend this method if your dataset originates in a streaming system like Kafka, Storm, Spark Streaming, or your own system.
- Stream pull - Pull a data stream directly from an external data source into Druid using Realtime Nodes.
- Load file from local disk
druid/quickstart/에 있는 샘플 데이터 (wikiticker-2015-09-12-sampled.json) 를 Druid에 load해보자.
curl -X 'POST' -H 'Content-Type:application/json' -d @quickstart/wikiticker-index.json localhost:8090/druid/indexer/v1/task
wikiticker-index.json 파일은 load할 데이터에 대한 정보를 갖고 있는 파일이다. 저 파일을 8090 포트로 전송하게 되면, druid는 json파일에 적혀있는대로 wikiticker-2015-09-12-sampled.json 파일을 load 한다.
성공적으로 load 되면 다음과 같은 message가 뜬다.
{"task":"index_hadoop_wikipedia_2013-10-09T21:30:32.802Z"}
<추가자료-다른 서버의 hadoop에 있는 데이터를 Druid에 load하는 방법>
다음 명령어를 이용해 wikiticker-2015-09-12-sampled.json 파일을 hadoop 에 저장한다
hadoop fs -put [로컬시스템의 파일] [hdfs 파일시스템의 디렉토리]
(혹시 hdfs 유저만 접근할 수 있다는 권한 문제가 발생한다면, 앞에 sudo -u hdfs 를 붙인다.)
sudo -u hdfs hadoop fs -put [로컬시스템의 파일] [hdfs 파일시스템의 디렉토리]
다음 명령어를 통해 hadoop에 파일이 잘 들어갔나 확인할 수 있다.
hadoop fs -ls [hdfs 파일시스템의 디렉토리]
(hadoop 명령어 관련 참고 사이트: http://blog.iotinfra.net/?p=12)
wikiticker-index.json 파일을 열어 “paths”를 hdfs 경로로 지정한다.
{
“type” : “index_hadoop”,
“spec” : {
“ifconfig” : {
“inputSpec” : {
“type” : “static”,
“paths” : “hdfs://[hadoop 주소]:9000/[파일 저장한 경로]/sikiticker-2015-09-12-sampled.json”
}
},
다음 명령어로 wikiticker-index.json 파일을 Druid 서버에 전송한다.
curl -X 'POST' -H 'Content-Type:application/json' -d @quickstart/wikiticker-index.json [druid 주소]:8090/druid/indexer/v1/task
- Streaming 데이터
Streaming 데이터를 생성하기 위해 Tranquility를 사용한다.
(Tranquility = a high level data producer library for Druid.)
다음 명령어를 통해 Tranquility를 다운받는다.
curl -O http://static.druid.io/tranquility/releases/tranquility-distribution-0.8.0.tgz
tar -xzf tranquility-distribution-0.8.0.tgz
cd tranquility-distribution-0.8.0
Tranquility server 실행
bin/tranquility server -configFile <path_to_druid_distro>/conf-quickstart/tranquility/server.json
다음 명령어를 실행하면 Tranquility가 random sample metrics를 생성하여 보낸다.
bin/generate-example-metrics | curl -XPOST -H'Content-Type: application/json' --data-binary @- http://localhost:8200/v1/post/metrics
완료시 다음과 같은 메시지가 생성된다.
{"result":{"received":25,"sent":25}}
작성자 : RE팀 김연수 (yeonsuyam@gmail.com)
Leave [DW ver.2] Druid 사용 방법 to:
Read more #druid posts
Best Posts From uneedcomms
We have not curated any of uneedcomms's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.