EMR과 함께 Druid를 셋팅해보자!¶
Versions¶
Druid 0.12.0
Java 1.8.0_161
과정¶
Java 설치
sudo yum install -y java-1.8.0-openjdk-devel.x86_64
druid User 추가 & druid 다운로드 & unzip
mv druid-0.12.0 /opt/druid/druid-0.12.0
설정 파일들 수정(jvm.config, runtime.properties)
metadata storage 설정(MySQL)
mysql-metadata-storage
extension은 기본적으로 포함되어 있지 않으니 다운받아야함.
# /opt/druid/druid-0.12.0/conf/druid/_common/common.properties
druid.extensions.loadList=["druid-kafka-eight","mysql-metadata-storage", "druid-s3-extensions"]
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://{host}:{port}/{database}
druid.metadata.storage.connector.user=user
druid.metadata.storage.connector.password=password
실행
$ ./bin/historical.sh start
$ ./bin/overlord.sh start
$ ./bin/middleManager.sh start
$ ./bin/broker.sh start
$ ./bin/coordinator.sh start
다운 타임없이 재실행을 하고 싶은 경우 다음과 같이 추천함
Historical
Overlord (if any)
Middle Manager (if any)
Standalone Real-time (if any)
Broker
Coordinator (or merged Coordinator+Overlord)
EMR과 같이 사용하고 싶다면¶
다른 하둡 버젼을 사용하는 것이기 때문에 그 하둡 설정관련 파일들이 필요합니다. Working with different versions of Hadoop 참고
EMR 하둡 config파일 가져오기 EMR의
/etc/hadoop/conf
안에 있는core-site.xml
,hdfs-site.xml
,mapred-site.xml
,yarn-site.xml
파일을 가져와서 드루이드의conf/druid/_common/
안에 넣어줍니다.S3 extension 추가 및 Deep Storage 설정
cont/druid/_common/common.runtime.properties
druid.extensions.loadList = ["druid-s3-extensions"]
druid.storage.type=s3
druid.storage.bucket=druid-bucket
druid.storage.baseKey=druid/segments
druid.s3.accessKey=XXXXXXXXXXXXXXX
druid.s3.secretKey=XXXXXXXXXXXXXXX
druid.indexer.logs.type=s3
druid.indexer.logs.s3Bucket=druid-bucket
druid.indexer.logs.s3Prefix=druid/indexing-logs
라이브러리 추가
$ cp -r /usr/lib/hadoop/client/* /opt/druid/druid-0.12.0/hadoop-dependencies/hadoop-client/emr-client/*
$ cp -r /usr/share/aws/emr/emrfs/* /opt/druid/emrfs
$ cp -r /usr/share/aws/aws-sdk-java/* /opt/druid/aws-sdk-java
bin/node.sh 수정 middleManager를 실행할 때 library를 추가함
JAVA_HOME=/usr/lib/jvm/java
if [ "$nodeType" == "middleManager" ]; then
LIB_DIR=$LIB_DIR/*:/opt/druid/emrfs/conf:/opt/druid/emrfs/lib/*:/opt/druid/emrfs/auxlib/*:/opt/druid/aws-java-sdk
fi
middleManager 재시작
index 파일에 s3 accessKey, secretKey 추가 &&
hadoopDependencyCoordinates
emr로 설정
{
...
"spec": {
"tuningConfig": {
"jobProperties": {
"fs.s3.awsAccessKeyId" : "XXXXXXXXXXXXXXX",
"fs.s3.awsSecretAccessKey" : "XXXXXXXXXXXXXXX"
}
}
},
"hadoopDependencyCoordinates": ["org.apache.hadoop:hadoop-client:emr-client"]
}
/mnt
디렉토리에s3
,var
디렉토리 생성
$ ll /mnt
drwxr-xr-x 2 druid druid 6 Apr 26 07:09 s3
drwxr-xr-x 2 druid druid 6 Apr 26 07:01 var
Issue¶
Permission on HDFS HDFS에 /user/druid` 디렉토리를 만들고 chown으로 권한을 주면 해결
Caused by: org.apache.hadoop.ipc.RemoteException: Permission denied: user=druid, access=WRITE, inode="/user":hdfs:hadoop:drwxr-xr-x
Refer¶
http://druid.io/docs/latest/operations/other-hadoop.html
http://aipkds.tistory.com/136