美文网首页druid收藏
Druid官方文档翻译-集群部署

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

作者: helloworld1214 | 来源:发表于2016-05-26 09:58 被阅读4710次

    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

    注意:在生产环境中推荐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也可以部署到一起

    启动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官方文档翻译-集群部署

        本文链接:https://www.haomeiwen.com/subject/phtxdttx.html