EMR 支持将 E-MapReduce Druid 集群作为单独的集群类型,主要基于以下几方面的考虑:
在创建 EMR 集群时选择 Druid 集群类型即可。Druid 集群自带了Hadoop HDFS 和 YARN 服务,并已经和 Druid 集群完成集成。但是建议仅用于测试,对于线上生产环境,强烈推荐您采用专门的 Hadoop 集群。
如果需要关闭 Druid 集群自带的 Hadoop 相关服务,可以在 EMR 控制台 的集群服务页,选择对应服务卡片,单击操作 > 暂停服务对服务进行暂停。
本节介绍如何配置 Hadoop 集群和 Druid 集群的连通性。如果您使用 Druid 集群自带的 Hadoop 集群(生产环境不推荐这么做),则无须做额外设置即可正常连通使用,可以跳过此节。
如果您需要将索引数据存放在另外一个单独的 Hadoop 集群的 HDFS 上(生产环境推荐这种方式),则首先需要设置两个集群的连通性。具体步骤如下:
/usr/local/service/druid/conf/druid/_common
路径下,放置一份 Hadoop 集群中 /usr/local/service/hadoop/etc/hadoop
路径下的 core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 文件。
注意:Druid 集群由于自带 Hadoop 集群,因此 Druid 路径下已经提前创建了上述文件的相关软链接,需要先删除,再拷贝另一个 Hadoop 集群的配置过来。同时需要确保文件权限正确,能被 hadoop 用户正常访问。
如果另一个 Hadoop 集群为非 HA:hdfs://{namenode_ip}:4007
如果另一个 Hadoop 集群为 HA:hdfs://HDFSXXXXX
请配置全路径,详细地址可以在目标 Hadoop 集群的 core-site.xml 文件的 fs.defaultFS 配置项里面找到。
E-MapReduce Druid 支持以 COS 作为 deep storage,本节介绍如何使用 COS 作为 Druid 集群的 deep storage。
首先您需要确保 Druid 集群和目标 Hadoop 均开启了 COS 服务,可以在购买 Druid 集群和 Hadoop 集群时开启,也可以购买后在 EMR 控制台进行后配置 COS。
在 Druid 配置管理中修改 common.runtime.properties 配置文件:
cosn://{bucket_name}/druid/segments
。在 hdfs 配置管理中修改 core-site.xml 配置文件:
org.apache.hadoop.fs.CosFileSystem
。fs.AbstractFileSystem.cosn.impl
:修改为 org.apache.hadoop.fs.CosN
。将 hadoop-cos 相关的 jar 包 (例如:cos_api-bundle-5.6.69.jar、hadoop-cos-2.8.5-8.1.6.jar)放到集群各个节点的/usr/local/service/druid/extensions/druid-hdfs-storage、/usr/local/service/druid/hadoopdependencies/hadoop-client/2.8.5、/usr/local/service/hadoop/share/hadoop/common/lib/⽬录下。
保存配置并重启 Druid 集群相关服务。
E-MapReduce Druid 在创建集群后会自动生成一套配置,不过建议您根据业务需求调整最优内存配置。要调整配置,您可以通过 配置管理 功能进行操作。
调整配置时,请确保调整正确:
MaxDirectMemorySize >= druid.processing.buffer.sizeByte *(druid.processing.numMergeBuffers + druid.processing.numThreads + 1)
调整建议:
druid.processing.numMergeBuffers = max(2, druid.processing.numThreads / 4)
druid.processing.numThreads = Number of cores - 1 (or 1)
druid.server.http.numThreads = max(10, (Number of cores * 17) / 16 + 2) + 30
更多配置请参考 Druid 组件配置。
当前 Druid 集群默认部署 Broker 进程在 EMR Master 节点上,由于 Master 节点部署较多进程,进程之间影响可能出现内存不够的情况,影响查询效率;同时许多业务也希望查询节点和中心节点分离部署。在这些情况下您可以在控制台扩容一到多个 Router 节点并选择安装 Broker 进程,可以方便的扩展 Druid 集群的查询节点。
统一通过 console 访问 Druid 集群,端口开在主节点的18888端口,可以自行配置公网 IP,在安全组中开通18888的端口并设置带宽后,即可通过 [http://{masterIp}:18888]()
访问。
本页内容是否解决了您的问题?