CentOS7.1.x+Druid 0.12 集群配置

先决条件:安装版本列表

本次安装满足下面的条件:

  • CentOS v7.3.x
  • Druid v0.12.x
  • Hadoop v2.9.0 (HDFS)
  • MySql v5.6

其中,Mysql 和 Hadoop在别的文章中有讲述,本次安装不在涉及。

在本次安装前,Mysql 和Hadoop 必须已安装完毕

一、默认端口


建议用如下的命令停掉CentOS上面的 firewall.

# systemctl stop firewalld.service

二、集群机器IP 安装服务配置

本集群有三个节点

1. master节点: 10.70.27.8

部署druid服务: coordinator node,overlord node(indexing service)

2. slave1节点: 10.70.27.10

部署druid服务:historical node,middleManager node

3. slave2节点: 10.70.27.12

部署druid服务:broker node

另外,在本次设置中,druid的 deep storage(用于保存冷数据)为 Hadoop 的HDFS。

druid 官方软件下载地址:

http://static.druid.io/artifacts/releases/druid-0.12.0-bin.tar.gz

下载后,把上面这个druid软件解压到上面三台主机上的 /opt/druid-0.12.0下面。

官方cluster 集群配置文档如下:

http://druid.io/docs/latest/tutorials/cluster.html

http://druid.io/docs/0.12.0/tutorials/cluster.html

三、配置步骤如下

3.1 配置所有节点(master,slave1,slave2)的 common.runtime.properties文件

3.1.1 修改common.runtime.properties文件

# vi/opt/druid-0.12.0/conf/druid/_common/common.runtime.properties

注意以下的文件内容,别的内容就保持原样。

druid.extensions.loadList=["mysql-metadata-storage","druid-hdfs-storage"]
druid.startup.logging.logProperties=true
druid.zk.service.host=10.70.27.8:2181,10.70.27.10:2181,10.70.27.12:2181
druid.zk.paths.base=/druid
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://10.70.27.12:3306/druid 
druid.metadata.storage.connector.user=druid
druid.metadata.storage.connector.password=yourpassword
druid.storage.type=hdfs
druid.storage.storageDirectory=hdfs://1.2.3.4:9000/data/druid/segments  
druid.indexer.logs.type=hdfs
druid.indexer.logs.directory=hdfs://1.2.3.4:9000/data/druid/indexing-logs
如果你先选择用mysql存metadata的话,则还需要按照下面的步骤做额外的配置。

1: 官方包里面没有把mysql打进去,自己得去下mysql storage。

官方下载这个storage的连接如下:

http://static.druid.io/artifacts/releases/mysql-metadata-storage-0.12.0.tar.gz

官方解释的连接:http://druid.io/downloads.html

本文是用mysql存放的(如上设置的那样),需要下载这个tar.gz,

然后 copy mysql-metadata-storage-0.12.0.tar.gz到 三台机器上的/opt/druid-0.12.0/extensions。

然后执行下面的操作:

# cd/opt/druid-0.12.0/extensions

# tar zxvfmysql-metadata-storage-0.12.0.tar.gz

2. 登陆到所要连接的mysql服务器上,执行下面的操作:

# /usr/bin/mysql -uroot -p<root's password >

grant all privileges on druid.* to 'druid'@'%' identified by 'druid';

mysql>CREATE DATABASE druid DEFAULT CHARACTER SET utf8;

mysql> grant all privileges on druid.* to 'druid'@'%' identified by 'druid';

mysql> flush privileges;

Query OK,0 rows affected (0.01 sec)

mysql>quit;


3.1.2 拷贝hadoop配置文件

本次安装用hadoop的hdfs作为数据存放地,故要求把Hadoop配置XML文件(core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml)从hadoop集群中拷贝到 各个druid主机的/opt/druid-0.12.0/conf/druid/_common/下面。

针对这个配置的解释,见官方文档连接如下:http://druid.io/docs/latest/tutorials/cluster.html

3.1.3 连接hadoop配置

vi/opt/druid-0.12.0/conf/druid/middleManager/runtime.properties

druid.indexer.task.hadoopWorkingPath=/tmp/druid-indexing

3.1.4 根据安装计划,指定主机地址(IP或者域名)

在本次安装中,修改如下:

vi /opt/druid-0.12.0/conf/druid/broker/runtime.properties

druid.host=10.70.27.12

vi /opt/druid-0.12.0/conf/druid/coordinator/runtime.properties

druid.port=10.70.27.8

vi /opt/druid-0.12.0/conf/druid/overlord/runtime.properties

vi /opt/druid-0.12.0/conf/druid/historical/runtime.properties

druid.port=10.70.27.10

vi /opt/druid-0.12.0/conf/druid/middleManager/runtime.properties

druid.port=10.70.27.10

3.1.4 调节性能参数

如果你是按cluster方式安装的,则必须确保druid的各个服务器 JVM 启动参数满足下面的条件。

官方文档见:http://druid.io/docs/0.12.0/tutorials/cluster.html

官方文档提示:要调节一下下面的参数,特别是下面的MaxDirectMemory

  • Keep -XX:MaxDirectMemory >= numThreads*sizeBytes,otherwise Druid will fail to start up..。

该参数指定了DirectByteBuffer能分配的空间的限额,如果没有显示指定这个参数启动jvm,默认值是xmx对应的值。

  • 另外,即使各个druid服务器软件能起来,在跑任务也有可能出现DirectMemory内存不足问题。

下面的log就是Running Tasks碰到的坑,通过overlord console gui 比如 http://[overload server ip ]:8090/console.html看到的error log

"

2018-03-22T12:44:53,405 ERROR [main] io.druid.cli.CliPeon - Error when starting up.  Failing.
com.google.inject.ProvisionException: Unable to provision,see the following errors:

Not enough direct memory. Please adjust -XX:MaxDirectMemorySize,druid.processing.buffer.sizeBytes,druid.processing.numThreads,or druid.processing.numMergeBuffers:maxDirectMemory[1,908,932,608],”

memoryNeeded[3,758,096,384]=druid.processing.buffer.sizeBytes[536,870,912]*(druid.processing.numMergeBuffers[2]+druid.processing.numThreads[4] + 1)"。

注意蓝色字体,说明index server的direct memory 不足,故要修改下面选项的参数。

注意MaxDirectMemorySize的数值是由你自己的设置决定的

计算公式为:MaxDirectMemorySize=druid.processing.buffer.sizeByte *(druid.processing.numMergeBuffers + druid.processing.numThreads + 1)

修改参数方式:

vi/opt/druid-0.12.0/conf/druid/middleManager/runtime.properties

然后加入下面绿色的选项,

druid.indexer.runner.javaOpts=-server -Xmx6g -XX:MaxDirectMemorySize=4g -Duser.timezone=UTC -Dfile.encoding=UTF-8 -Djava.util.loggi

保存文件,重启middleManager,就可以搞定问题。

三、启动集群命令

把上面的整个/opt/druid-0.12.0目录打成包,然后传到每个节点,再展开。然后分别到每个节点master,slave2)去启动相应的服务,命令如下:

on master,启动coordinator 和 overlord 服务

#cd /opt/druid-0.12.0

# bin/init

然后执行下面的命令:

java `cat conf/druid/coordinator/jvm.config | xargs` -cp "conf/druid/_common:conf/druid/coordinator:lib/*" io.druid.cli.Main server coordinator
java `cat conf/druid/overlord/jvm.config | xargs` -cp "conf/druid/_common:conf/druid/overlord:lib/*" io.druid.cli.Main server overlord

on slave1,启动historical 服务 和 middleManager 服务

#cd /opt/druid-0.12.0

然后执行下面的命令:

java `cat conf/druid/coordinator/jvm.config | xargs` -cp "conf/druid/_common:conf/druid/coordinator:lib/*" io.druid.cli.Main server coordinator
java `cat conf/druid/overlord/jvm.config | xargs` -cp "conf/druid/_common:conf/druid/overlord:lib/*" io.druid.cli.Main server overlord

on slave2,启动broker服务

然后执行下面的命令

java `cat conf/druid/broker/jvm.config | xargs` -cp conf/druid/_common:conf/druid/broker:lib/* io.druid.cli.Main server broker

四、验证集群

1. http://10.70.27.8:8090/console.html

2. http://10.70.27.8:8081

3. 登陆到hadoop namenode,去检查druid信息。

#/opt/hadoop-2.9.0/bin/hadoopfs -ls /druid
Found 1 items

drwxr-xr-x - root supergroup 0 2018-03-22 15:00 /druid/indexing-logs

五、push 方式数据源输入设置

5.1 代码下载

Tranquility代码下载:http://druid.io/downloads.html

本次选择的是tranquility-distribution-0.8.2.tgz.

选择一个机器,比如broker运行的那个机器,copy 上面的那个tranquility-distribution-0.8.2.tgz到/op 目录下。

#tar zxvftranquility-distribution-0.8.2.tgz

5.2 Tranquility server 接受数据并转发到druid里面

  官方教材:http://druid.io/docs/0.12.0/tutorials/tutorial-streams.html

 基本思路通过http post请求,把数据以jason格式发给Tranquility server,然后Tranquility server会转发给后面的druid。

1)修改配置

# cd/opt/tranquility-distribution-0.8.2/conf

# cpkafka.json.examplekafka.json; cpserver.json.exampleserver.json

然后改变kafka.json 和server.json 里面的"zookeeper.connect" 为如下的数值。

"properties" : {
"zookeeper.connect" : "10.70.27.8:2181,10.70.27.12:2181",
"zookeeper.timeout" : "PT20S",255);"> "druid.selectors.indexing.serviceName" : "druid/overlord",255);"> "druid.discovery.curator.path" : "/druid/discovery",255);"> "kafka.zookeeper.connect" : "localhost:2181",255);"> "kafka.group.id" : "tranquility-kafka",255);"> "consumer.numThreads" : "2",255);"> "commit.periodMillis" : "15000",255);"> "reportDropsAsExceptions" : "false"

}

2) 启动 Tranquility server

# bin/tranquility server -configFile conf/server.json

5.3 从kafka 里面消费数据,然后push到druid

  基本思路设置Tranquility kafkaserver好后,启动它,它就是从指定的kafka中去消费数据,然后转发给后面的druid。

这里就不详细说了,请参见官方文档: http://druid.io/docs/0.12.0/tutorials/tutorial-kafka.html

对连接过程的理解:

我们向tranquility发post HTTP请求来添加数据,而tranquility收到数据后,则向overlord发送任务模板,overlord接收到任务模板后,会根据任务分配策略发送给某个MiddleManager,MiddleManager启动一个java进程,即peon。peon可以理解为一个http server。最后tranquility是向这个http server直接发送数据,而不再依赖overlord和MiddleManager节点。可以理解为我们通过集成tranqulity可以和每个peon创建一个连接。
一些人的误区主要体现在: consumer将数据发送给了overlord,是通过overlord转发数据给peon,这样理解是错误的。iddleManager启动一个java进程,即peon。peon可以理解为一个http server。最后 consumer是向http server直接发送数据,而不再依赖overlord和MiddleManager节点。可以理解为我们通过集成tranqulity可以和每个peon创建一个连接。

一些人的误区主要体现在: consumer将数据发送给了overlord,是通过overlord转发数据给peon,这样理解是错误的。

七 分布式环境下的task resume和middle node重启讨论

给overlord设置如下参数,可以开启task重启模式

druid.indexer.runner.type=remote
druid.indexer.storage.type=metadata
druid.indexer.task.restoreTasksOnRestart=true

http://druid.io/docs/latest/configuration/indexing-service.html

https://www.cnblogs.com/xd502djj/p/6408979.html


八 参考文档

2:参考文件:

http://blog.csdn.net/fenghuibian/article/details/53216141

druid.io_druid.io本地集群搭建 / 扩展集群搭建

http://druid.io/docs/latest/tutorials/cluster.html

DRUID: 新增MiddleManager节点遇到的坑

Druid 系统框架

Tranquility:

http://druid.io/downloads.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


linux下开机自启: 在/etc/init.d目录下新建文件elasticsearch 并敲入shell脚本: 注意, 前两行必须填写,且要注释掉。 第一行为shell前行代码,目的告诉系统使用shell。 第二行分别代表运行级别、启动优先权、关闭优先权,且后面添加开机服务会用到。 shell脚本
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权 chmod +x /etc/rc.d/rc.local 2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限 chmod +x /usr
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用ls -ll,会显示成字节大小,而ls- lh会以KB、MB等为单位进行显示,这样比较直观一些。 通过命令du -h –max-depth=1 *,可以查看当前目录下各文件、文件夹的大小,这个比较实用。 查询当前目录总大小可以使用d
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一但shell关闭网站也就关闭了,所以要配置守护进程, 用的是Supervisor,本文主要记录配置的过程和过程遇到的问题 安装Supervisor&#160;1 yum install python-setuptools
设置时区(CentOS 7) 先执行命令timedatectl status|grep &#39;Time zone&#39;查看当前时区,如果不是时区(Asia/Shanghai),则需要先设置为中国时区,否则时区不同会存在时差。 #已经是Asia/Shanghai,则无需设置 [root@xia
vim&#160;/etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO=&quot;static&quot; ONBOOT=yes IPADDR=192.168.8.106 NETMASK=255.255.252.0 GATEWAY=192.168.
一、安装gcc依赖 由于 redis 是用 C 语言开发,安装之前必先确认是否安装 gcc 环境(gcc -v),如果没有安装,执行以下命令进行安装 [root@localhost local]# yum install -y gcc 二、下载并解压安装包 [root@localhost local
第一步 On CentOS/RHEL 6.*: $ sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm On CentOS/RHEL 7: $
/// &lt;summary&gt; /// 取小写文件名后缀 /// &lt;/summary&gt; /// &lt;param name=&quot;name&quot;&gt;文件名&lt;/param&gt; /// &lt;returns&gt;返回小写后缀,不带“.”&lt;/ret
which nohup .bash_profile中并source加载 如果没有就安装吧 yum provides */nohup nohup npm run start &amp; nohup ./kibana &amp;
1.1 MySQL安装 1.1.1 下载wget命令 yum -y install wget 1.1.2 在线下载mysql安装包 wget https://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm 1.1.3 安装My
重启 reboot shutdown -r now init 6 关闭 init 0 shutdown -h now shutdown -h 20:25 #8点25关机查看内存 free CPU利用率 top 日期 date 设置时间 date 033017002015 #月日时间年 日历 cal
1、firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status firewalld 开机禁用 : systemctl disable firewalld 开机启用 :
1 下载并安装MySQL官方的&#160;Yum Repository wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 使用上面的命令就直接下载了安装用的Yum Repository,大概
CentOS6.x CentOS6中转用Upstrat代替以前的init.d/rcX.d的线性启动方式。 一、相关命令 通过initctl help可以查看相关命令 [root@localhost ~]# initctl help Job commands: start Start job. sto
1、使用命令:df -lk 找到已满磁盘 2、使用命令:du --max-depth=1 -h 查找大文件,删除
ifconfig:查看网卡信息 网卡配置文件位置: /etc/sysconfig/network-scripts/文件夹 nmtui:配置网卡 netstat -tlunp:查看端口信息 端口信息存储位置: /etc/services文件 route:查看路由信息 wget:下载网路文件,例如 wg
ps -ef:查看所有进程,&#160;ps -ef |grap firewalld 查看与firewalld相关的进程 which :查看进程:which firewalld kill 进程id:杀掉进程 kill 640,强制杀:kill -9 640 man:查看帮助,例如 man ps 查看
useradd:添加用户 useradd abc,默认添加一个abc组 vipw:查看系统中用户 groupadd:添加组groupadd ccna vigr:查看系统中的组 gpasswd:将用户abc添加到ccna组 gpasswd -a abc ccna groups abc:查看用户abc属