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


注意:在生产环境中推荐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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容