Druid平台搭建手册
机器和系统的标准规划
- 机器初始化, 创建用户
druid
- 程序安装在
/home/druid/software
目录下 - 数据存放在SSD盘上, 挂载目录为
/data
, 新建一个名为druid
的文件夹 - 权限授予, druid的用户仅能访问
/home/druid
和/data/druid
机器角色划分和配置
Druid集群不同类型的节点从功能上可以分为3个部分:
- Master: 管理节点, 包含coordinate和overlord节点, 负责管理数据写入任务及容错相关处理
- Data: 数据节点, 包含historical和middleManager节点, 负责数据写入处理、历史数据的加载与查询
- Query: 查询节点, 包含broker节点, 负责提供数据查询接口
以10台机器为例搭建集群
角色 | 数量 | 机器分布 | SSD | 端口号 |
---|---|---|---|---|
broker | 2 | 01, 02 | 推荐使用 | 8082 |
overlord | 1 | 01 | 8090 | |
coordinator | 2 | 01, 02 | 8081 | |
middleManager | 8 | 03-10 | 8091 | |
historical | 10 | 01-10 | 推荐使用 | 8083 |
zookeeper | 5 | 03-07 | 2181 |
Druid外部依赖
安装java
- java使用1.8.0版本
- 配置环境变量
Druid元数据管理(Metadata Storage)
负责存储和管理整个系统的配置记录信息
以MySQL为例:
- MySQL数据库需要开通建表和读写的权限, 集群初始化的时候会自动创建相关的元数据表
- Druid元数据的字符编码需要改为UTF-8
mysql-metadata-storage-<version>.tar.gz
需自行放置在druid/extensions
下并解压
Deep Storage
负责存储和加载Druid的数据文件(Segment)
以HDFS为例:
离线数据的摄入需要使用Yarn平台调度MR程序
- 安装Hadoop客户端, 方便查看HDFS上的落盘冷数据
- -把HDFS的集群的配置文件
core-site.xml
,hdfs-site.xml
,mapred-site.xml
,yarn-site.xml
以软链的方式放置在目录druid/conf/druid/_common
下
集群状态管理服务
由于Druid采用多节点、多角色的分布式设计, 因此管理并同步各个节点的状态信息, 以及新增节点时的服务发现功能则交给ZooKeeper服务来完成
- 如果Druid集群依赖一套独立的ZooKeeper集群, 那么zookeeper也安装在
/home/druid/software
目录下
Druid各节点配置
Druid的配置文件位于
conf/druid
中
基础配置
配置文件为common.runtime.properties
Zookeeper配置
#
# Zookeeper
#
druid.zk.service.host=zk.host.ip
druid.zk.paths.base=/druid
元数据存储配置
#
# Metadata storage
#
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://db.example.com:3306/druid
druid.metadata.storage.connector.user=...
druid.metadata.storage.connector.password=...
For MySQL: 注意用户名和密码不能多输入一个空格
Deep Storage
#
# Deep storage
#
# For HDFS (make sure to include the HDFS extension and that your Hadoop config files in the cp):
#druid.storage.type=hdfs
#druid.storage.storageDirectory=/druid/segments
#
# Indexing service logs
#
# For HDFS (make sure to include the HDFS extension and that your Hadoop config files in the cp):
druid.indexer.logs.type=hdfs
druid.indexer.logs.directory=/druid/indexing-logs
加载需要的扩展包
druid.extensions.loadList=["druid-kafka-eight", "druid-s3-extensions", "druid-histogram", "druid-datasketches", "druid-lookups-cached-global", "mysql-metadata-storage"]
组件调优
Druid的每个组件的配置文件都有
jvm.config
和runtime.properties
两个文件
jvm.config
的几处通用修改:
- -Duser.timezone=UTC
- -Dfile.encoding=UTF-8
启动
- 修改并执行init脚本
- 修改node.sh中的
JAVA_HOME
和日志的文件格式 - 先启动zookeeper, 再启动Druid的各个服务