前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据Apache Druid(四):使用Imply进行Druid集群搭建

大数据Apache Druid(四):使用Imply进行Druid集群搭建

原创
作者头像
Lansonli
发布2022-08-20 00:13:42
5040
发布2022-08-20 00:13:42
举报
文章被收录于专栏:Lansonli技术博客Lansonli技术博客

使用Imply进行Druid集群搭建

Imply基于Druid进行了一些组件的开发,是Druid的集成包,提供开源版本和商业版本,类似CDH一样,使安装Druid简化了部署,Imply也是Druid团队开发。

我们可以使用Imply安装Druid,在Imply的官网https://imply.io进行下载,经过测试这个版本在提交加载数据任务时有一些bug(加载数据任务总是失败)。

一、​​​​​​​​​​​​​​下载Imply

1、登录Imply官网,点击Product

2、点击“Get start”,填写邮箱等信息,下载imply

二、​​​​​​​​​​​​​​安装Imply

1、节点划分

节点IP

节点名称

角色

192.168.179.6

node3

zk,Druid Master(overload,coordinator)

192.168.179.7

node4

zk,Druid Data(middleManager,historical)

192.168.179.8

node5

zk,Druid Query(broker,router)

2、上传下载好的imply

将imply安装包上传到node3“/software”目录下,并解压

代码语言:javascript
复制
[root@node3 software]# tar -zxvf ./imply-2022.07.tar.gz
drwxrwxr-x  7 1001 1001       121 Jul 22 05:49 imply-2022.07

3、在MySQL中创建imply元数据库

在node2节点登录mysql,创建druid需要的两个源数据库。

代码语言:javascript
复制
[root@node2 ~]# mysql -u root -p123456
CREATE DATABASE `druid` DEFAULT CHARACTER SET utf8;
CREATE DATABASE `pivot` DEFAULT CHARACTER SET utf8;

注意:mysql的版本需要在5.5之上

4、配置common.runtime.properties文件

进入“/software/imply-2021.07/conf/druid/_common”路径下,修改“common.runtime.properties”文件,在该文件中配置扩展信息、zookeeper集群信息、Metadata Storage使用MySQL、Deep Storage使用HDFS:

代码语言:javascript
复制
#
# Extensions
#

druid.extensions.directory=dist/druid/extensions
druid.extensions.hadoopDependenciesDir=dist/druid/hadoop-dependencies
#添加mysql元数据管理和支持kafka
druid.extensions.loadList=["mysql-metadata-storage","druid-kafka-indexing-service"]

#
# Zookeeper
#
#配置zookeeper集群节点
druid.zk.service.host=node3:2181,node4:2181,node5:2181
druid.zk.paths.base=/druid

#
# Metadata storage
#

# For Derby server on your Druid Coordinator (only viable in a cluster with a single Coordinator, no fail-over):
#将默认Storage默认为derby注释掉
#druid.metadata.storage.type=derby
#druid.metadata.storage.connector.connectURI=jdbc:derby://master.example.com:1527/var/druid/metadata.db;create=true
#druid.metadata.storage.connector.host=master.example.com
#druid.metadata.storage.connector.port=1527

#配置MySQL 作为Storage 元数据存储库
# For MySQL:
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://node2:3306/druid
druid.metadata.storage.connector.user=root
druid.metadata.storage.connector.password=123456

#
# Deep storage
#
#注释掉默认的本地数据存储
# For local disk (only viable in a cluster if this is a network mount):
#druid.storage.type=local
#druid.storage.storageDirectory=var/druid/segments

#配置HDFS存储
# For HDFS:
druid.storage.type=hdfs
druid.storage.storageDirectory=hdfs://mycluster/druid/segments

5、配置coordinator节点

进入“/software/imply-2021.07/conf/druid/coordinator”路径下,配置“runtime.properties”,配置coordinator节点:

代码语言:javascript
复制
druid.service=druid/coordinator
#配置Druid coordinator节点
druid.host=node3
druid.port=8081

druid.coordinator.startDelay=PT30S
druid.coordinator.period=PT30S

6、配置overlord节点

进入“/software/imply-2021.07/conf/druid/overlord”路径,配置“runtime.properties”,配置overlord节点。

代码语言:javascript
复制
druid.service=druid/overlord
#配置overlord节点
druid.host=node3
druid.port=8090

druid.indexer.queue.startDelay=PT30S

druid.indexer.runner.type=remote
druid.indexer.storage.type=metadata

7、配置historical节点

进入“/software/imply-2021.07/conf/druid/historical”路径,配置“runtime.properties”,配置historical节点。

代码语言:javascript
复制
druid.service=druid/historical
#配置Druid historical节点
druid.host=node4
druid.port=8083

#配置Historical缓存内存,默认是512M,这里配置1M,不然内存不足会报错
#druid.processing.buffer.sizeBytes=536870912
druid.processing.buffer.sizeBytes=1048576

8、配置middleManager节点

进入“/software/imply-2021.07/conf/druid/middleManager”路径,配置“runtime.properties”,配置middleManager节点。

代码语言:javascript
复制
druid.service=druid/middlemanager
#配置Druid middleManager节点
druid.host=node4
druid.port=8091

9、配置broker节点

进入“/software/imply-2021.07/conf/druid/broker”路径,配置“runtime.properties”,配置broker节点。

代码语言:javascript
复制
druid.service=druid/broker
#配置Druid broker节点
druid.host=node5
druid.port=8082

# Processing threads and buffers
#配置broker缓存数据大小默认是512M,这里设置1M,后期内存不足会报错
#druid.processing.buffer.sizeBytes=536870912
druid.processing.buffer.sizeBytes=1048576

10、配置router节点

进入“/software/imply-2021.07/conf/druid/router”路径,配置“runtime.properties”,配置router节点。

代码语言:javascript
复制
druid.service=druid/router
#配置Druid router节点
druid.host=node5
druid.port=8888

11、配置config.yaml

进入“/software/imply-2021.07/conf/pivot”路径,配置“config.yaml”配置文件:

代码语言:javascript
复制
initialSettings:
  connections:
    - name: druid
      type: druid
      title: My Druid
      #host: localhost:8888
#配置集群访问节点,及角色节点,注意空格
      host: node5:8888
      coordinatorHosts: ["node3:8081"]
      overlordHosts: ["node3:8090"]

#注释掉默认的StateStore配置
#stateStore:
#  type: sqlite
#  connection: var/pivot/pivot-settings.sqlite

#
# 2) Database-backed state 'mysql' (MySQL) or 'pg' (Postgres)
#

#配置StateStore
stateStore:
   location: mysql
   type: mysql
   connection: 'mysql://root:123456@node2:3306/pivot'

12、修改每个服务启动JVM内存参数

正常情况下,如果我们采用的是真实的服务器,修改以上配置文件可以启动集群,如果使用虚拟机,需要修改下每个服务启动JVM内存参数,将默认配置的大的内存改小一些,改为1g,默认配置小于1g的可以不做修改。

在Druid中,为了提高查询效率,Broker会缓存大量的数据到内存中,如果内存越大,实际查询效率越高。

  • 修改“/software/imply-2021.07/conf/druid/broker/jvm.config”
代码语言:javascript
复制
-Xms1g
-Xmx1g
-XX:MaxDirectMemorySize=1g

  • 修改“/software/imply-2021.07/conf/druid/coordinator/jvm.config”
代码语言:javascript
复制
-Xms1g
-Xmx1g

  • 修改“/software/imply-2021.07/conf/druid/historical/jvm.config”
代码语言:javascript
复制
-Xms1g
-Xmx1g
-XX:MaxDirectMemorySize=1g

  • 修改“/software/imply-2021.07/conf/druid/overlord/jvm.config”
代码语言:javascript
复制
-Xms1g
-Xmx1g

  • 将以上配置好的imply发送到node4,node5节点上
代码语言:javascript
复制
[root@node3 software]# scp -r ./imply-2021.07 node4:/software/
[root@node3 software]# scp -r ./imply-2021.07 node5:/software/

  • 在node3、node4、node5节点上配置imply环境变量
代码语言:javascript
复制
#在node3、node4、node5节点上修改/etc/profile文件
export DRUID_HOME=/software/imply-2021.07/
export PATH=$PATH:$DRUID_HOME/bin

#使profile生效
source /etc/profile

三、启动imply集群

代码语言:javascript
复制
#在node3、node4、node5节点上,启动zookeeper集群
zkServer.sh start

#在node3上启动 overlord 和 coordinator
[root@node3 ~]# supervise -c /software/imply-2021.07/conf/supervise/master-no-zk.conf 
注意:-c指定的master-no-zk.conf指的是不适用内部自带zookeeper,使用外部zookeeper,在此文件中可以看到启动overlord和coordinator。可以后面指定-daemon在后台启动。

#在node4上启动historical和middleManager
[root@node4 ~]# supervise -c /software/imply-2021.07/conf/supervise/data.conf 
注意:-c指定的data.conf中有启动historical和middleManager信息。可以后面指定-daemon在后台启动

#在node5上启动broker和router
[root@node5 ~]# supervise -c /software/imply-2021.07/conf/supervise/query.conf
注意:-c指定的query.conf中有启动broker和router的信息。可以后面指定-daemon在后台启动。

初次启动时,建议前台启动,如果启动不成功会一直重试,并显示相应错误日志路径。启动成功后,在对应节点jps可以看到每个节点都有两个Main进程,当ctrl+c 取消前台进程时,对应的Main进程也会停止。

如果Druid启动没有问题,那么也可以编写启动脚本,在node3节点进入/software/imply-2021.07/bin目录下,创建start-druid.sh脚本,内容如下:

代码语言:javascript
复制
nohup ssh node3 "source /etc/profile; supervise -c /software/imply-2021.07/conf/supervise/master-no-zk.conf -daemon >> /software/druid.log 2>&1" 
&nohup ssh node4 "source /etc/profile; supervise -c /software/imply-2021.07/conf/supervise/data.conf -daemon >> /software/druid.log 2>&1" &
nohup ssh node5 "source /etc/profile; supervise -c /software/imply-2021.07/conf/supervise/query.conf -daemon >> /software/druid.log 2>&1" &

脚本附件如下:

代码语言:javascript
复制
nohup ssh node3 "source /etc/profile; supervise -c /software/imply-2021.07/conf/supervise/master-no-zk.conf -daemon" &
nohup ssh node4 "source /etc/profile; supervise -c /software/imply-2021.07/conf/supervise/data.conf -daemon" &
nohup ssh node5 "source /etc/profile; supervise -c /software/imply-2021.07/conf/supervise/query.conf -daemon" &

编写完成后,修改start-druid.sh执行权限,执行start-druid.sh启动Druid集群。

代码语言:javascript
复制
[root@node3 bin]# chmod +x start-druid.sh

如果停止Druid集群,可以在node3、node4、node5节点上使用如下命令:

代码语言:javascript
复制
/software/imply-2021.07/bin/service --down

也可以在node3 /software/imply-2021.07/bin目录下编写成停止脚本stop-druid.sh,并设置权限,执行stop-druid.sh停止集群:

代码语言:javascript
复制
nohup ssh node3 "/software/imply-2021.07/bin/service --down" &

nohup ssh node4 "/software/imply-2021.07/bin/service --down" &

nohup ssh node5 "/software/imply-2021.07/bin/service --down" &

脚本附件如下:

代码语言:javascript
复制
nohup ssh node3 "/software/imply-2021.07/bin/service --down" &
nohup ssh node4 "/software/imply-2021.07/bin/service --down" &
nohup ssh node5 "/software/imply-2021.07/bin/service --down" &

四、​​​​​​​​​​​​​​访问Druid WebUI

组件名称

功能

URL

broker

查询服务

http://node5:8888

pivot可视化页

http://node5:9095/pivot/home

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ​使用Imply进行Druid集群搭建
    • 一、​​​​​​​​​​​​​​下载Imply
      • 1、登录Imply官网,点击Product
      • 2、点击“Get start”,填写邮箱等信息,下载imply
    • 二、​​​​​​​​​​​​​​安装Imply
      • 1、节点划分
      • 2、上传下载好的imply
      • 3、在MySQL中创建imply元数据库
      • 4、配置common.runtime.properties文件
      • 5、配置coordinator节点
      • 6、配置overlord节点
      • 7、配置historical节点
      • 8、配置middleManager节点
      • 9、配置broker节点
      • 10、配置router节点
      • 11、配置config.yaml
      • 12、修改每个服务启动JVM内存参数
    • 三、启动imply集群
      • 四、​​​​​​​​​​​​​​访问Druid WebUI
      相关产品与服务
      大数据处理套件 TBDS
      腾讯大数据处理套件(Tencent Big Data Suite,TBDS)依托腾讯多年海量数据处理经验,基于云原生技术和泛 Hadoop 生态开源技术提供的可靠、安全、易用的大数据处理平台。 TBDS可在公有云、私有云、非云化环境,根据不同数据处理需求组合合适的存算分析组件,包括 Hive、Spark、HBase、Flink、Presto、Iceberg、Elasticsearch、StarRocks 等,以快速构建企业级数据湖仓。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档