|NO.Z.00021|——————————|Deployment|——|Hadoop&OLAP数据库管理系统.v21|——|Kylin.v12|Apache Druid部署|集群部署|

一、集群部署
### --- 环境资源说明

~~~     虚拟机每个节点2core、3G
~~~     DeepStorage:Hadoop 2.9.2
### --- 部署规划:集群部署采用的分配如下

~~~     主节点部署 Coordinator 和 Overlord进程
~~~     数据节点运行 Historical 和 MiddleManager进程
~~~     查询节点 部署 Broker 和 Router 进程
主机 Druid服务 其他服务
Hadoop01 Coordinator、Overlord Zookeeper、Kafka
Hadoop02 Historical、MiddleManager Zookeeper、Kafka
Hadoop03 Router、Broker Zookeeper、Kafka、MySQL
### --- 各服务 JVM 内存分配设置如下:

~~~     虚拟机每个节点2core、3G
~~~     coordinator-overlord,512m
~~~     historical,512m、堆外1g
~~~     middleManager,128m
~~~     broker,512m、堆外 512m
~~~     router,128m、堆外 128m
二、Druid环境配置
### --- 解压版本包

~~~     # Hadoop01、Hadoop02、Hadoop03节点解压Druid版本包,并修改目录名称
[root@hadoop01 software]# tar -zxvf apache-druid-0.21.1-bin.tar.gz -C ../servers/
~~~     # 修改目录名称
[root@hadoop01 software]# cd ../servers/
[root@hadoop01 servers]# mv apache-druid-0.21.1/ druid-0.21.1
### --- 设置环境变量

~~~     # 设置系统环境变量
[root@hadoop01 ~]# vim /etc/profile
##DRUID_HOME
export DRUID_HOME=/opt/yanqi/servers/druid-0.21.1
export PATH=$PATH:$DRUID_HOME/bin
~~~     # 使环境变量生效

[root@hadoop01 ~]# source /etc/profile
### --- MySQL中创建相关数据库

~~~     # 使用 root 账号登录MySQL,mysql -uroot -p123456
[root@hadoop03 ~]# mysql -uroot -p123456
~~~     # 授权密码等级及长度
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=6;
mysql> SHOW VARIABLES LIKE 'validate_password%'; 
~~~     # 创建数据库及用户
mysql> CREATE DATABASE druid DEFAULT CHARACTER SET utf8mb4;
mysql> CREATE USER 'druid'@'%' IDENTIFIED BY '123456';
mysql> GRANT ALL PRIVILEGES ON druid.* TO 'druid'@'%';

~~~     # 保存刷新配置
mysql> flush privileges;
三、Druid配置文件准备
### --- 准备Druid配置文件

~~~     # Hadoop01~03:将hadoop配置文件core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml
~~~     # 软连接到conf/druid/cluster/_common/ 下
[root@hadoop01 ~]# cd /opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/_common/
[root@hadoop01 _common]# ln -s $HADOOP_HOME/etc/hadoop/core-site.xml core-site.xml
[root@hadoop01 _common]# ln -s $HADOOP_HOME/etc/hadoop/hdfs-site.xml hdfs-site.xml
[root@hadoop01 _common]# ln -s $HADOOP_HOME/etc/hadoop/yarn-site.xml yarn-site.xml
[root@hadoop01 _common]# ln -s $HADOOP_HOME/etc/hadoop/mapred-site.xml mapred-site.xml
### --- 将mysql驱动程序拷贝到Druid配置目录

~~~     # Hadoop01~03:将MySQL的驱动程序,链接到 $DRUID_HOME/extensions/mysql-metadata-storage/ 下
[root@hadoop01 ~]# cd $DRUID_HOME/extensions/mysql-metadata-storage/
[root@hadoop01 mysql-metadata-storage]# ln -s $HIVE_HOME/lib/mysql-connector-java-5.1.46.jar mysql-connector-java-5.1.46.jar
四、Druid配置参数修改:全局配置文件修改
### --- 修改配置文件($DRUID_HOME/conf/druid/cluster/_common/common.runtime.properties)

~~~     # 修改配置文件
[root@hadoop01 ~]# vim $DRUID_HOME/conf/druid/cluster/_common/common.runtime.properties
~~~     # 27行:修改为mysql驱动:增加"mysql-metadata-storage"
druid.extensions.loadList=["mysql-metadata-storage", "druid-hdfs-storage", "druid-kafka-indexing-service", "druid-datasketches"]

~~~     # 35~37行:每台机器写自己的ip或hostname
# Hostname
druid.host=hadoop01

~~~     # 47~51行:填写zk地址
# Zookeeper
druid.zk.service.host=hadoop01:2181,hadoop02:2181,hadoop03:2181
druid.zk.paths.base=/druid
~~~     # 57~61行:注释掉前面 derby 的配置
# For Derby server on your Druid Coordinator (only viable in a cluster with a single Coordinator, no fail-over):
# druid.metadata.storage.type=derby
# druid.metadata.storage.connector.connectURI=jdbc:derby://localhost:1527/var/druid/metadata.db;create=true
# druid.metadata.storage.connector.host=localhost
# druid.metadata.storage.connector.port=1527

~~~     # 63~67行:增加 mysql 的配置
# For MySQL (make sure to include the MySQL JDBC driver on the classpath):
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://hadoop03:3306/druid
druid.metadata.storage.connector.user=druid
druid.metadata.storage.connector.password=123456
~~~     # 79~81行:注释掉local的配置:禁用本地存储
# For local disk (only viable in a cluster if this is a network mount):
# druid.storage.type=local
# druid.storage.storageDirectory=var/druid/segments

~~~     # 83~85行:开启HDFS的配置,即使用HDFS作为深度存储
# For HDFS:
druid.storage.type=hdfs
druid.storage.storageDirectory=/druid/segments
~~~     # 98~100行:注释掉 indexer.logs For local disk的配置
# For local disk (only viable in a cluster if this is a network mount):
# druid.indexer.logs.type=file
# druid.indexer.logs.directory=var/druid/indexing-logs

~~~     # 102~104行:增加 indexer.logs For HDFS 的配置
# For HDFS:
druid.indexer.logs.type=hdfs
druid.indexer.logs.directory=/druid/indexing-logs

五、配置主节点配置文件参数
### --- 配置主节点文件(参数大小根据实际情况配置)

~~~     # 修改主节点配置文件
[root@hadoop01 ~]# vim $DRUID_HOME/conf/druid/cluster/master/coordinator-overlord/jvm.config
~~~主节点配置文件参数如下所示:
-server
-Xms512m
-Xmx512m
-XX:+ExitOnOutOfMemoryError
-XX:+UseG1GC
-Duser.timezone=UTC+8
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
六、配置数据节点配置文件参数:(参数大小根据实际情况配置)
### --- 配置数据节点配置文件参数:historical

~~~     # 修改数据节点参数:historical
[root@hadoop01 ~]# vim $DRUID_HOME/conf/druid/cluster/data/historical/jvm.config
~~~数据节点配置文件参数如下所示:
-server
-Xms512m
-Xmx512m
-XX:MaxDirectMemorySize=1g
-XX:+ExitOnOutOfMemoryError
-Duser.timezone=UTC+8
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
[root@hadoop01 ~]# vim $DRUID_HOME/conf/druid/cluster/data/historical/runtime.properties

~~~     # 27~29行:修改这一个参数:
druid.processing.buffer.sizeBytes=50000000
druid.processing.numMergeBuffers=4
druid.processing.numThreads=15
~~~     # 备注:

~~~     druid.processing.buffer.sizeBytes 每个查询用于聚合的堆外哈希表的大小
~~~     maxDirectMemory= druid.processing.buffer.sizeBytes * (druid.processing.numMergeBuffers + druid.processing.numThreads + 1)
~~~     如果 druid.processing.buffer.sizeBytes 太大,那么需要加大maxDirectMemory,否则 historical 服务无法启动
~~~     实际计算值为0.5G,可以给的小于或等于对外内存量,但是不能大于
### --- 配置数据节点配置文件参数:middleManager

~~~     # 修改数据节点参数:middleManager
[root@hadoop01 ~]# vim $DRUID_HOME/conf/druid/cluster/data/middleManager/jvm.config
~~~数据节点配置文件参数如下所示:
-server
-Xms128m
-Xmx128m
-XX:+ExitOnOutOfMemoryError
-Duser.timezone=UTC+8
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager
七、配置查询节点配置文件参数:(参数大小根据实际情况配置)
### --- 配置查询节点配置文件参数:broker

~~~     # 修改查询节点参数:broker
[root@hadoop01 ~]# vim $DRUID_HOME/conf/druid/cluster/query/broker/jvm.config
~~~查询节点配置文件参数如下所示:
-server
-Xms512m
-Xmx512m
-XX:MaxDirectMemorySize=512m
-XX:+ExitOnOutOfMemoryError
-Duser.timezone=UTC+8
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager 
[root@hadoop01 ~]# vim $DRUID_HOME/conf/druid/cluster/query/broker/runtime.properties

~~~     # 30~33行:修改这一个参数
# Processing threads and buffers
druid.processing.buffer.sizeBytes=50000000
druid.processing.numMergeBuffers=6
druid.processing.numThreads=1
~~~     # 备注:

~~~     druid.processing.buffer.sizeBytes 每个查询用于聚合的堆外哈希表的大小
~~~     maxDirectMemory = druid.processing.buffer.sizeBytes*(druid.processing.numMergeBuffers + druid.processing.numThreads + 1)
~~~     如果 druid.processing.buffer.sizeBytes 太大,那么需要加大maxDirectMemory,否则 broker 服务无法启动
### --- 配置查询节点配置文件参数:router

~~~     # 修改查询节点参数:router
[root@hadoop01 ~]# vim $DRUID_HOME/conf/druid/cluster/query/router/jvm.config
~~~查询节点配置文件参数如下所示:
-server
-Xms128m
-Xmx128m
-XX:+UseG1GC
-XX:MaxDirectMemorySize=128m
-XX:+ExitOnOutOfMemoryError
-Duser.timezone=UTC+8
-Dfile.encoding=UTF-8
-Djava.io.tmpdir=var/tmp
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager 
八、分发并启动服务
### --- 分发版本包到其它节点主机

~~~     # 分发配置文件到Hadoop01/Hadoop02节点
[root@hadoop01 ~]# rsync-script /opt/yanqi/servers/druid-0.21.1/
### --- 修改其它主机节点配置文件

~~~     # 分发后一定要修改 common.runtime.properties 中的 druid.host 为所在节点的ip
~~~     # 在hadoop02/hadoop03上添加环境变量 $DRUID_HOME
[root@hadoop02 ~]# vim $DRUID_HOME/conf/druid/cluster/_common/common.runtime.properties
~~~     # 35~37行:每台机器写自己的ip或hostname
# Hostname
druid.host=hadoop02
[root@hadoop03 ~]# vim $DRUID_HOME/conf/druid/cluster/_common/common.runtime.properties
~~~     # 35~37行:每台机器写自己的ip或hostname
# Hostname
druid.host=hadoop03

九、启动Druid相关服务
### --- 在Hadoop01启动zookeeper服务

~~~     # 在Hadoop01节点启动zookeeper服务
[root@hadoop01 ~]# ./zk.sh start
### --- 在主节点(Hadoop01)上启动服务:

~~~     # 启动主节点服务:Hadoop01
[root@hadoop01 ~]# nohup start-cluster-master-no-zk-server &
~~~     # 使用jps检查可看见1个名为Main的后台进程,如下所示:
~~~     # 监控30s左右,进程号不会发生变化,说明服务器启动完成;若是配置有问题,它会一次次重启服务,进程是存在的

[root@hadoop01 ~]# jps
2309 QuorumPeerMain
2365 Main               
 
[root@hadoop01 ~]# ps -ef | grep 2365
/opt/yanqi/servers/jdk1.8.0_231/bin/java -server -Xms512m -Xmx512m -XX:+ExitOnOutOfMemoryError -XX:+UseG1GC -Duser.timezone=UTC+8 -Dfile.encoding=UTF-8 -Djava.io.tmpdir=var/tmp -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -cp /opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/master/coordinator-overlord:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/master/_common:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/master/_common/hadoop-xml:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/master/../_common:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/master/../_common/hadoop-xml:/opt/yanqi/servers/druid-0.21.1/bin/../lib/* 
org.apache.druid.cli.Main server coordinator
### --- 在数据节点(Hadoop02)上启动服务:

~~~     # 启动数据节点服务:Hadoop02
[root@hadoop02 ~]# nohup start-cluster-data-server &
~~~     # 使用jps检查可看见2个名为Main的后台进程,如下所示:

[root@hadoop02 ~]# jps
2006 QuorumPeerMain
2096 Main
2097 Main

[root@hadoop02 ~]# ps -ef | grep 2096
/opt/yanqi/servers/jdk1.8.0_231/bin/java -server -Xms512m -Xmx512m -XX:MaxDirectMemorySize=1g -XX:+ExitOnOutOfMemoryError -Duser.timezone=UTC+8 -Dfile.encoding=UTF-8 -Djava.io.tmpdir=var/tmp -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -cp /opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/data/historical:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/data/_common:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/data/_common/hadoop-xml:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/data/../_common:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/data/../_common/hadoop-xml:/opt/yanqi/servers/druid-0.21.1/bin/../lib/ 
org.apache.druid.cli.Main server historical

[root@hadoop02 ~]# ps -ef | grep 2097
/opt/yanqi/servers/jdk1.8.0_231/bin/java -server -Xms128m -Xmx128m -XX:+ExitOnOutOfMemoryError -Duser.timezone=UTC+8 -Dfile.encoding=UTF-8 -Djava.io.tmpdir=var/tmp -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -cp /opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/data/middleManager:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/data/_common:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/data/_common/hadoop-xml:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/data/../_common:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/data/../_common/hadoop-xml:/opt/yanqi/servers/druid-0.21.1/bin/../lib/* 
org.apache.druid.cli.Main server middleManager
### --- 在查询节点(Hadoop03)上启动服务:

~~~     # 启动查询节点服务:Hadoop03
[root@hadoop03 ~]# nohup start-cluster-query-server &
~~~     # 使用jps检查可看见2个名为Main的后台进程,如下所示:

[root@hadoop03 ~]# jps
2192 QuorumPeerMain
2296 Main
2297 Main

[root@hadoop03 ~]# ps -ef | grep 2296
/opt/yanqi/servers/jdk1.8.0_231/bin/java -server -Xms512m -Xmx512m -XX:MaxDirectMemorySize=512m -XX:+ExitOnOutOfMemoryError -Duser.timezone=UTC+8 -Dfile.encoding=UTF-8 -Djava.io.tmpdir=var/tmp -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -cp /opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/query/broker:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/query/_common:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/query/_common/hadoop-xml:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/query/../_common:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/query/../_common/hadoop-xml:/opt/yanqi/servers/druid-0.21.1/bin/../lib/
org.apache.druid.cli.Main server broker

[root@hadoop03 ~]# ps -ef | grep 2297
/opt/yanqi/servers/jdk1.8.0_231/bin/java -server -Xms128m -Xmx128m -XX:+UseG1GC -XX:MaxDirectMemorySize=128m -XX:+ExitOnOutOfMemoryError -Duser.timezone=UTC+8 -Dfile.encoding=UTF-8 -Djava.io.tmpdir=var/tmp -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager -cp /opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/query/router:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/query/_common:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/query/_common/hadoop-xml:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/query/../_common:/opt/yanqi/servers/druid-0.21.1/conf/druid/cluster/query/../_common/hadoop-xml:/opt/yanqi/servers/druid-0.21.1/bin/../lib/* 
org.apache.druid.cli.Main server router
十、关闭Druid服务:
### --- 关闭Druid服务:Hadoop01/Hadoop03

[root@hadoop02 ~]# cd /opt/yanqi/servers/druid-0.21.1/bin/
[root@hadoop02 bin]# ./service --down

十一、通过web-UI查看Druid管理界面
### --- 通过web-UI查看Druid管理界面

~~~     # 使用浏览器查看:http://Hadoop03:8888/初始化UI
~~~     # 查看服务配置信息

 
 
 
 
 
 
 
 
 

Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
                                                                                                                                                   ——W.S.Landor

 

posted on   yanqi_vip  阅读(23)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示