Druid官方文档翻译-集群部署

Druid具有高可用、高容错的特性。

本文将搭建一个简单的Druid集群,并且将会讨论如何进一步配置以满足您的需求。这个简单的集群只有Historical和MiddleManager采用高可用、高容错的方式搭建,coordination和Overlord都是单节点。在生产环境中,我们建议coordination、Overlord节点也都采用高可用、高容错的方式部署。

硬件选择

Coordinator和Overlord可以部署在一个配置一般的服务器上,负责管理元数据和集群的协调。亚马逊的m3.xlarge完全可以满足大部分的集群的硬件需求。硬件配置如下:

4 vCPUs

15 GB RAM

80 GB SSD storage

Historicals和MiddleManagers可以部署在相同的服务器上处理集群的数据。需要配置性能好一点CPU、内存和SSD(固态硬盘)的服务器,亚马逊的r3.2xlarge环境是一个不错的选择,硬件配置如下:

8 vCPUs

61 GB RAM

160 GB SSD storage

Broker节点需要接收查询请求并且把这些请求分发到集群空闲的节点。Broker可以在内存中缓存查询过的数据,所以Broker节点需要高性能的cpu和内存,亚马逊r3.2xlarge环境也可以部署,硬件配置如下:

8 vCPUs

61 GB RAM

160 GB SSD storage

非常大的集群应该考虑选择性能更好的服务器。

操作系统选择

使用自己习惯的Linux操作系统,要求jdk1.7集以上版本。

下载安装文件并解压

curl -Ohttp://static.druid.io/artifacts/releases/druid-0.9.0-bin.tar.gz

tar -xzf druid-0.9.0-bin.tar.gz

cddruid-0.9.0

解压之后的目录结构如下:

LICENSE-license文件

bin/-单机快速启动下的启动脚本

conf/*-集群模式下的配置文件目录

conf-quickstart/*-单机快速启动的配置文件目录

extensions/*-Druid扩展文件.

hadoop-dependencies/*-

Druid的Hadoop依赖

lib/*-

Druid引用的jar包

quickstart/*-单机快速启动的文件

需要配置conf目录下的配置文件。

配置”deepstorage”

Druid依赖一个分布式文件系统或者大对象存储系统,最常用的deep storage是S3(亚马逊云服务中比较流行使用)和HDFS(如果你已经部署了Hadoop)。

S3

在conf/druid/_common/common.runtime.properties文件中

设置druid.extensions.loadList=["druid-s3-extensions"].

配置"Deep Storage"和"Indexing service logs".的存储路径

注释部分是本地的存储路径,应该修改成如下所以的S3的路径

druid.extensions.loadList=["druid-s3-extensions"]

#druid.storage.type=local

#druid.storage.storageDirectory=var/druid/segments

druid.storage.type=s3

druid.storage.bucket=your-bucket

druid.storage.baseKey=druid/segments

druid.s3.accessKey=...

druid.s3.secretKey=...

#druid.indexer.logs.type=file

#druid.indexer.logs.directory=var/druid/indexing-logs

druid.indexer.logs.type=s3

druid.indexer.logs.s3Bucket=your-bucket

druid.indexer.logs.s3Prefix=druid/indexing-logs

HDFS

修改conf/druid/_common/common.runtime.properties,文件

设置druid.extensions.loadList=["io.druid.extensions:druid-hdfs-storage"].

配置"Deep Storage"和"Indexing service logs".的存储路径

注释部分是本地的存储路径,应该修改成如下所以的HDFS的路径

将Hadoop的配置文件core-site.xml, hdfs-site.xml, yarn-site.xml,

mapred-site.xml配置到Druid的classpath里,拷贝hadoop的配置文件到Druid的conf/druid/_common/文件夹下。

配置加载流式数据(选做)

数据流通过HTTP API的方式发送到Druid,如果使用此功能请参考如下链接对应的文档配置http://druid.io/docs/0.9.0/ingestion/stream-ingestion.html#server。

配置接入kafka数据(选做)

Druid以流的方式从kafka中持续的消费数据。如果使用此功能请参考如下链接对应的文档配置http://druid.io/docs/0.9.0/ingestion/stream-ingestion.html#kafka。

配置连接Hadoop(选做)

如果从Hadoop集群加载数据,应该配置Druid可以识别到Hadoop集群:

设置conf/middleManager/runtime.properties文件druid.indexer.task.hadoopWorkingPath属性为HDFS路径,因为在创建索引的过程中会产生临时文件存储到HDFS路径下。druid.indexer.task.hadoopWorkingPath=/tmp/druid-indexing是常用的配置方式。

把Hadoop中的xml配置文件配置到Druid的所有节点的classpath中,同时将Hadoop的这些配置文件拷贝到Druid每个节点的conf/druid/_common/目录下。

注意,不要为了从Hadoop加载数据到Druid而把HDFS作为Druid的deep storage,如果你的集群在亚马逊的Web服务中运行,即使是从Hadoop或者MapReduce加载数据,也可以将S3作为Druid的deep storage。

想了解更多的信息请参考如下链接http://druid.io/docs/0.9.0/ingestion/batch-ingestion.html。

为Druid的协调配置地址

在这个简单的集群部署例子中,在同一台服务器上配置了一个Coordinator,一个Overlord,一个Zookeeper实例,一个嵌入式Derby数据库用于存储元数据。

在conf/druid/_common/common.runtime.properties文件中将“zk.host.ip”替换为Zookeeper实例运行的IP地址:druid.zk.service.host

在conf/_common/common.runtime.properties文件中将"metadata.store.ip"替换为元数据存储的实例地址:

druid.metadata.storage.connector.connectURI

druid.metadata.storage.connector.host

注意:在生产环境中,我们推荐使用两台服务器,一台部署Coordinator一台部署Overlord,我们也推荐在独立的服务器上采用集群的模式部署Zookeeper服务,以及元数据存储服务器也在单独的服务器进行部署,比如数据库使用MySql、PostgreSQL等,并备份(参考地址:http://druid.io/docs/latest/dependencies/metadata-storage.html)。

设置Druid的服务请求

Historicals和MiddleManagers可以使用相同硬件配置,这两个组件的良好运行服务得益于好的硬件配置,如果有稳定的服务器或者kafka,也可以将Historicals和MiddleManagers运行在上面。如果使用的是r3.2xlarge EC2实例或者类似的硬件配置,这是一个不错的选择。

如果你使用不同的硬件,我们建议调整配置为你的特定硬件。最常用的调整配置是:

-Xmxand-Xms

druid.server.http.numThreads

druid.processing.buffer.sizeBytes

druid.processing.numThreads

druid.query.groupBy.maxIntermediateRows

druid.query.groupBy.maxResults

druid.server.maxSizeanddruid.segmentCache.locations(在Historical节点配置)

druid.worker.capacity(在MiddleManager节点配置)

注意:设置-XX:MaxDirectMemory >= numThreads*sizeBytes否则Druid会启动失败。

请参考完整的配置:http://druid.io/docs/0.9.0/configuration/index.html。

Broker配置

Borker良好运行服务得益于好的硬件配置,如果有稳定的服务器或者kafka,也可以将Historicals和MiddleManagers运行在上面。如果使用的是r3.2xlarge EC2实例或者类似的硬件配置,这是一个不错的选择。

如果你使用不同的硬件,我们建议调整配置为你的特定硬件。最常用的调整配置是:

-Xmxand-Xms

druid.server.http.numThreads

druid.cache.sizeInBytes

druid.processing.buffer.sizeBytes

druid.processing.numThreads

druid.query.groupBy.maxIntermediateRows

druid.query.groupBy.maxResults

注意:设置-XX:MaxDirectMemory >= numThreads*sizeBytes否则Druid会启动失败。

请参考完整的配置:http://druid.io/docs/0.9.0/configuration/index.html。

启动Coordinator,Overlord, Zookeeper,和metadata store

拷贝Druid的安装文件和配置好的Coordinator的配置文件,如果你已经在本地机器编辑好了配置文件,请使用rsync拷贝到Coordinator服务器。

rsync -az druid-0.9.0/

COORDINATION_SERVER:druid-0.9.0/

登录到coordination服务器安装Zookeeper


Druid官方文档翻译-集群部署_第1张图片

注意:在生产环境中推荐zookeeper采用单独的机器以集群模式部署。

在coordination服务器上进入到安装文件夹启动coordination服务。(应该在不同的窗口查看日志或者将日志输出到文件)

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

启动的时候通过查看日志观察每个服务打印出的启动信息,在var/log/druid目录下可以查看所有服务的日志。

启动Historicals和MiddleManagers

拷贝安装文件及已经编辑好的Historicals和MiddleManagers的配置文件到部署服务器。通过如下的命令分别启动Historicals和MiddleManager:

java`cat conf/druid/historical/jvm.config | xargs`-cp

conf/druid/_common:conf/druid/historical:lib/*io.druid.cli.Main server historical

java`cat conf/druid/middleManager/jvm.config | xargs`-cp

conf/druid/_common:conf/druid/middleManager:lib/*io.druid.cli.Main server middleManager

你可以在更多的服务器上部署Historicals和MiddleManagers

如果集群有复杂的资源分配的需求,你可以将Historicals和MiddleManagers分离开,评估每个组件需要的资源单独部署,也可以使用Druid内置的自动缩放功能。

如果你是从kafka或者http数据流的方式加载数据,也可以使用相同的硬件部署Historicals和MiddleManagers,对于大规模的生产环境Historicals和MiddleManagers也可以部署到一起


Druid官方文档翻译-集群部署_第2张图片

启动broker

拷贝安装文件及已经编辑好的brokers的配置文件到部署服务器。通过如下的命令启动broker

java`cat conf/druid/broker/jvm.config | xargs`-cp

conf/druid/_common:conf/druid/broker:lib/*io.druid.cli.Main server broker

为了降低查询的负载可以在多个服务器部署多个broker。

加载数据

恭喜你,现在已经部署成功了一个Druid集群,下一步就是将数据加载到Druid,更多关于加载数据到Druid的说明请参考http://druid.io/docs/0.9.0/tutorials/ingestion.html。

你可能感兴趣的:(Druid官方文档翻译-集群部署)