【Apache Druid】druid 0.20集群安装配置避坑指南

7 篇文章 0 订阅
6 篇文章 1 订阅

项目场景:

Druid集群规划:
centos 01:coordinator,overlord
centos 02:historical,middle_manager
centos 03:router,broker
注:apache druid是一个时序数据库,并非阿里的druid数据库连接池。同时,druid 需要安装MySQL,以此储存元数据。


问题描述1:

druid 启动时报错:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/usr/local/mysql/tmp/mysql.sock’


原因分析:

这是由于druid 启动服务后会将元数据存储进入MySQL,但是MySQL连接失败导致的异常。一般情况下,如果 MySQL 服务启动正常的话,是由于 *.pid 文件未生成造成的,pid 文件是记录服务启动的进程号的文件。


解决方案:

可以使用以下两个方法之一(建议选择第二个,第一个治标不治本): 1. 手动创建 hostname.pid 文件(如:centos 01.pid)。同时,在文件里写入当前并不存在的一个进程号。保存后启动服务。(但是,这样的方法每次启动都需要手动创建 pid 文件,因为启动服务后该文件会被删除) 2. 编辑/etc/init.d/mysql,找到start模块,添加--user=root到mysqld_safe 即可

问题描述2:

druid 启动时报错:
Unknown provider[mysql] of Key[type=io.druid.metadata.MetadataStorageConnector, annotation=[none]], known options[[derby]


原因分析:

这是由于druid 指定 Mysql 存储metadata信息,而缺少相关配置信息或者连接的 jar 包所导致的错误。


解决方案:

需要在 config/_common/common.runtime.properties 内加入关于配置MySQL储存数据的配置信息;下载并导入 Mysql 的 jdbc 的 jar 包到 extensions/mysql-metadata-storage/中
druid.extensions.loadList=["mysql-metadata-storage"]

问题描述3:

druid 启动时报错:
java.sql.SQLException: null, message from server: “Host ‘***.***.***.***’ is not allowed to connect this Mysql server”


原因分析:

这是表示该对象不是远程对象,不能通过该对象远程访问数据。也就是说需要配置允许远程连接。


解决方案:

'root'@'%' : root是用户名,%是主机名或IP地址,这里的%代表任意主机或IP地址;第二个'root'是给授权用户指定的登录数据库的密码。
grant all privileges on *.* to 'root'@'%' identified by 'root';

问题描述4:

druid 启动时报错:
Not enough direct memory. Please adjust -XX:MaxDirectMemorySize, druid.processing.buffer.sizeBytes, druid.processing.numThreads, or druid.processing.numMergeBuffers: maxDirectMemory[134,217,728], memoryNeeded[4,194,304,000] = druid.processing.buffer.sizeBytes[524,288,000] * (druid.processing.numMergeBuffers[6] + druid.processing.numThreads[1] + 1)


原因分析:

这是由于分配的内存资源不合理,不符合 MaxDirectMemorySize >= druid.processing.buffer.sizeBytes[536,870,912] * (druid.processing.numMergeBuffers[2] + druid.processing.numThreads[2] + 1) 的公式。


解决方案:

需要重新分配内存资源,主要是各个 jvm 内存值、并发线程数需要调整。在以下各个文件中调整对应的属性的值。
vim conf/druid/cluster/master/coordinator-overlord/jvm.config
vim conf/druid/cluster/data/historical/jvm.config
vim conf/druid/cluster/data/historical/runtime.properties
vim conf/druid/cluster/data/middleManager/jvm.config
vim conf/druid/cluster/data/middleManager/runtime.properties
vim conf/druid/cluster/query/broker/jvm.config
vim conf/druid/cluster/query/broker/runtime.properties
vim conf/druid/cluster/query/router/jvm.config
vim conf/druid/cluster/query/router/runtime.properties

问题描述5:

druid 启动时报错:
ERROR [main] org.apache.druid.cli.CliHistorical - Error when starting up. Failing. com.google.inject.ProvisionException: Unable to provision, see the following errors:1) Error in custom provider, java.lang.OutOfMemoryError.


原因分析:

内存泄露异常,配置的 historical 内存不合理。


解决方案:

重新修改配置文件中 conf/druid/cluster/data/historical/jvm.config 的 jvm内存值以及 conf/druid/cluster/data/historical/runtime.properties 中的线程并发数,确保其满足公式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值