Druid是目前非常流行的一款高性能的、分布式列存储的实时OLAP框架,有比较多的用户需要部署该框架解决他们的业务问题。
本文档适用于在EMRv2.1.0版本部署Druid系统。
在EMRv2.1.0集群上成功安装Druid, 并且正常运行。
官网下载Druid源码包, https://druid.apache.org/downloads.html
将安装包上传至emr master1服务器的/usr/local/service目录,使用如下命令解压:
tar -xzf apache-druid-0.17.0-bin.tar.gz
cd apache-druid-0.17.0
mv apache-druid-0.17.0 druid
Druid组件 | EMR节点类型 | 硬件信息 |
---|---|---|
Master Server | Master2 | 4核16G |
Query Server | Master1 | 4核16G |
Data Server | Core | 8核32G |
Druid默认使用derby数据库存储元数据,生产环境推荐使用mysql,可以使用EMR集群自带的cdb作为druid元数据库。
1.登录cdb,执行如下命令,创建druid数据库:
-- create a druid database, make sure to use utf8 as encoding
CREATE DATABASE druid DEFAULT CHARACTER SET utf8;
2.Druid安装包目录$DRUID_HOME/extensions/mysql-metadata-storage下部署mysql-connector-java-x.x.xx.jar, 该jar包可在emr集群的hive目录下找到。
3.$DRUID_HOME/conf/druid/cluster/_common/common.runtime.properties修改
将如下参数,替换为mysql配置
druid.extensions.loadList=["mysql-metadata-storage"]
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql:///druid
druid.metadata.storage.connector.user=root
druid.metadata.storage.connector.password=
Druid默认使用本地磁盘存储数据,生产环境推荐使用hdfs分布式存储系统,需修改$DRUID_HOME/conf/druid/cluster/_common/common.runtime.properties配置文件
1.druid.extensions.loadList追加druid-hdfs-storage
2.Deep Storage和Indexing service logs部分注释掉本地存储配置
3.Deep Storage和Indexing service logs部分打开hdfs存储配置
修改完成之后的配置如下:
druid.extensions.loadList=[ "druid-hdfs-storage", "druid-kafka-indexing-service", "druid-datasketches","mysql-metadata-storage"]
#druid.storage.type=local
#druid.storage.storageDirectory=var/druid/segments
druid.storage.type=hdfs
druid.storage.storageDirectory=/druid/segments
#druid.indexer.logs.type=file
#druid.indexer.logs.directory=var/druid/indexing-logs
druid.indexer.logs.type=hdfs
druid.indexer.logs.directory=/druid/indexing-logs
4.Hadoop集群配置文件(core-site.xml, hdfs-site.xml, yarn-site.xml, mapred-site.xml)复制或软链到$DRUID_HOME/conf/druid/cluster/_common目录
修改$DRUID_HOME/conf/druid/cluster/_common/common.runtime.properties配置文件,将druid.zk.service.host参数的值修改为emr集群的zk节点,示例如下:
druid.zk.service.host=10.9.0.21:2181,10.9.0.15:2181,10.9.0.11:2181
druid.zk.paths.base=/druid
druid依赖zk进行分布式协调和通信,所以各服务会向zk注册host信息,druid.host默认值是localhost, 在多个节点部署时,该值会造成冲突,所以需要修改为节点hostname, 命令如下:
sed -i "s/druid.host=localhost/druid.host=${HOSTNAME}/g" /usr/local/service/druid/conf/druid/cluster/_common/common.runtime.properties && cat /usr/local/service/druid/conf/druid/cluster/_common/common.runtime.properties |grep druid.host
因query server中的router进程端口默认是8888,与emr agent的端口冲突,需要修改$DRUID_HOME/conf/druid/cluster/query/router/runtime.properties文件,将端口改为8889
druid.service=druid/router
druid.plaintextPort=8889
将配置好的安装包,分发到集群所有节点,分别启动服务
1.Master Server
$DRUID_HOME/bin/start-cluster-master-no-zk-server &
2.Data Server
$DRUID_HOME/bin/start-cluster-data-server &
3.Query Server
$DRUID_HOME/bin/start-cluster-query-server &
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。