1.配置DeepStorge
Druid的Deep Storge的存储支持包括Local、S3、HDFS在内的三种,可以通过"$confDir/_common/common.runtime.properties"文件进行配置。这里我选择使用HDFS作为DeepStorge的底层存储,Druid使用HDFS作为底层存储需要添加Hadoop的扩展(发行版的Druid默认集成了Hadoop的扩展),并且将Hadoop集群的配置文件(core-site.xm、hdfs-site.xml、mapred-site.xml、yarn-site.xml)拷贝到Druid的"$confDir/_common/"下,当然如果这些文件可以在通过classpath环境变量找到也是可以的。
druid.storage.type=hdfs
druid.storage.storageDirectory=/druid/segments
当然一旦选择的HDFS作为底层存储,推荐将日志的存储也配置为HDFS。
druid.indexer.logs.type=hdfs
druid.indexer.logs.directory=/druid/indexing-logs
最后别忘了在druid.extensions.loadList属性中添加hdfs的支持,这个属性的参数是一个数组,数据元素为Druid启动时所需要加载的扩展内容
druid.extensions.loadList=["druid-hdfs-storage"]
PS:如果不知道需要加载的扩展内容叫什么,其实有个简单的方式可以确认,加载的扩展内容名称与"$DruidRootDir/extensions/"里面的文件夹名相同,当然如果需要其他发行版所没有默认集成的扩展包,也需要把扩展包复制到这个文件中。
2.配置Metadata Storge
Druid的默认Metadata Storge使用的数据库是Derby,可以选择的被选方案包括Mysql、PostgerSQL。Derby和PostgreSQL的扩展都是默认集成的,如果需要使用Mysql作为Metadata Storge,则需要在官网额外下载扩展,并解压复制到"$DruidRootDir/extensions/"中。下载mysql-metadata-storge
相应的配置比较简单
druid.metadata.storage.type=mysql
druid.metadata.storage.connector.connectURI=jdbc:mysql://localhost:3306/druid
druid.metadata.storage.connector.user=druid
druid.metadata.storage.connector.password=diurd
当然前提条件是在Mysql中有对应的数据库和用户,如果没有需要创建
-- create a druid database, make sure to use utf8 as encoding
CREATE DATABASE druid DEFAULT CHARACTER SET utf8;
-- create a druid user, and grant it all permission on the database we just created
GRANT ALL ON druid.* TO 'druid'@'localhost' IDENTIFIED BY 'diurd';
3.配置Zookeeper
druid.zk.service.host=zk.host.ip
druid.zk.paths.base=/druid
4.启动Druid
如果是全新部署的Druid,需要先运行
$DruidRootDir/bin/init
启动时可以根据不同的集群规划在不同的机器上运行Druid的各个组建,启动之前需要查看各组件的jvm.config文件中的配置,确保有足够的内存启动。
其中尤为需要注意的historical/jvm.config中的-XX:MaxDirectMemorySize=4096m这个配置,XX:MaxDirectMemorySize的大小不能随意设置,需要计算,具体的计算公式为:
XX:MaxDirectMemorySize = druid.processing.buffer.sizeBytes[536,870,912] * (druid.processing.numMergeBuffers[2] + druid.processing.numThreads[7] + 1)
PS:其中[]中的值为默认值,如果机器内存不足需要在historical/runtime.properties和broker/runtime.properties文件中进行配置。
druid.processing.buffer.sizeBytes=536,870,912
druid.processing.numMergeBuffers=2
druid.processing.numThreads=7
PS:默认配置中,所需的内存计算结果为5GB
#启动historical
$DruidRootDir/bin/historical.sh start
#启动broker
$DruidRootDir/bin/broker.sh start
#启动coordinator
$DruidRootDir/bin/coordinator.sh start
#启动overlord
$DruidRootDir/bin/overlord.sh start
#启动middleManager
$DruidRootDir/bin/middleManager.sh start
启动日志可以在$DruidRootDir/log文件夹中查看
5.Druid启动的相关端口
8081 (Coordinator)
8082 (Broker)
8083 (Historical)
8084 (Standalone Realtime, if used)
8088 (Router, if used)
8090 (Overlord)
8091, 8100–8199 (Druid Middle Manager; 如果Druid的work很多,则需要的端口可能要比8199更大)
8200 (Tranquility Server, if used)