大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!

CSDN 2024-10-09 09:37:01 阅读 82

点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis (已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(已更完)Kudu(已更完)Druid(正在更新…)

章节内容

上节我们完成了如下的内容:

Apache Druid 系统架构 核心组件介绍Druid 单机模式配置启动

在这里插入图片描述

整体介绍

Apache Druid 是一种高性能、分布式的列式存储数据库,专门用于实时分析和查询大规模数据集。它适用于 OLAP(在线分析处理)场景,尤其在处理大数据实时流时表现优异。Druid 的架构由多个组件组成,主要包括数据摄取、存储、查询和管理。

在集群配置方面,Druid 通常由以下节点构成:

数据摄取层:使用 MiddleManager 节点来处理数据的实时摄取,负责从不同数据源(如 Kafka、HDFS 等)读取数据并进行实时处理。存储层:数据存储在 Historical 节点上,这些节点负责存储和管理较老的数据,支持高效的查询。数据被以列式格式存储,优化了查询性能。查询层:Broker 节点充当查询路由器,接受用户的查询请求并将其分发到相应的 Historical 或 Real-time 节点,然后将结果汇总返回给用户。协调层:Coordinator 节点负责集群的状态管理和数据分配,确保数据均匀分布并自动处理节点故障。

Druid 的配置文件允许用户自定义参数,如 JVM 设置、内存分配和数据分片策略,以便根据不同的工作负载和性能需求进行优化。此外,Druid 还支持多种查询语言,包括 SQL,便于用户进行灵活的数据分析。整体上,Druid 提供了一种高效、可扩展的解决方案,适合需要快速实时分析的大数据应用场景。

集群规划

集群部署采用的分配如下:

主节点部署 Coordinator 和 Overlord 进程数据节点运行 Historical 和 MiddleManager 进程查询节点 部署Broker 和 Router 进程

在这里插入图片描述

我的实机部署情况:

h121.wzk.icu 2C4G ZooKeeper、Kafka、Druidh122.wzk.icu 2C4G ZooKeeper、Kafka、Druid、MySQL(之前Hive时搭建)h123.wzk.icu 2C2G ZooKeeper、Druid

环境变量

<code>vim /etc/profile

写入的内容如下:

# druid

export DRUID_HOME=/opt/servers/apache-druid-30.0.0

export PATH=$PATH:$DRUID_HOME/bin

在这里插入图片描述

配置文件

将 Hadoop 配置文件:

core-site.xmlhdfs-site.xmlyarn-site.xmlmapred-site.xml

上述文件链接到 conf/druid/cluster/_common 下

执行下面的Shell:

<code>cd $DRUID_HOME/conf/druid/cluster/_common

ln -s $HADOOP_HOME/etc/hadoop/core-site.xml core-site.xml

ln -s $HADOOP_HOME/etc/hadoop/hdfs-site.xml hdfs-site.xml

ln -s $HADOOP_HOME/etc/hadoop/yarn-site.xml yarn-site.xml

ln -s $HADOOP_HOME/etc/hadoop/mapred-site.xml mapred-site.xml

ls

执行结果如下图所示:

MySQL

将MySQL驱动链接到:$DRUID_HOME/extensions/mysql-metadata-storage 中

<code>cd $DRUID_HOME/extensions/mysql-metadata-storage

cp $HIVE_HOME/lib/mysql-connector-java-8.0.19.jar mysql-connector-java-8.0.19.jar

ls

执行结果如下图所示:

在这里插入图片描述

修改配置

<code>vim $DRUID_HOME/conf/druid/cluster/_common/common.runtime.properties

我们要修改如下的内容:

# 增加"mysql-metadata-storage"

druid.extensions.loadList=["mysql-metadata-storage", "druid-hdfs-storage", "druid-kafka-indexing-service", "druid-datasketches", "druid-multi-stage-query"]

# 每台机器写自己的ip或hostname

# 我这里是h121节点

druid.host=h121.wzk.icu

# 填写zk地址

druid.zk.service.host=h121.wzk.icu:2181,h122.wzk.icu:2181,h123.wzk.icu:2181

druid.zk.paths.base=/druid

# 注释掉前面 derby 的配置

# 增加 mysql 的配置

druid.metadata.storage.type=mysql

druid.metadata.storage.connector.connectURI=jdbc:mysql://h122.wzk.icu:3306/druid

druid.metadata.storage.connector.user=hive

druid.metadata.storage.connector.password=hive@wzk.icu

# 注释掉local的配置

# 增加HDFS的配置,即使用HDFS作为深度存储

druid.storage.type=hdfs

druid.storage.storageDirectory=/druid/segments

# 注释掉 indexer.logs For local disk的配置

# 增加 indexer.logs For HDFS 的配置

druid.indexer.logs.type=hdfs

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

修改截图如下:

在这里插入图片描述

修改截图如下所示:

在这里插入图片描述

coordinator-overlord

参数大小根据实际情况调整

<code>vim $DRUID_HOME/conf/druid/cluster/master/coordinator-overlord/jvm.config

原来的配置如下图所示:

-server

-Xms15g

-Xmx15g

-XX:+ExitOnOutOfMemoryError

-XX:+UseG1GC

-Duser.timezone=UTC

-Dfile.encoding=UTF-8

-Djava.io.tmpdir=var/tmp

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

-Dderby.stream.error.file=var/druid/derby.log

修改内容如下所示:

-server

-Xms512m

-Xmx512m

-XX:+ExitOnOutOfMemoryError

-XX:+UseG1GC

-Duser.timezone=UTC+8

-Dfile.encoding=UTF-8

-Djava.io.tmpdir=var/tmp

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

对应的截图如下所示:

在这里插入图片描述

historical

参数大小根据实际情况调整

<code>vim $DRUID_HOME/conf/druid/cluster/data/historical/jvm.config

原配置内容如下所示:

-server

-Xms8g

-Xmx8g

-XX:MaxDirectMemorySize=13g

-XX:+ExitOnOutOfMemoryError

-Duser.timezone=UTC

-Dfile.encoding=UTF-8

-Djava.io.tmpdir=var/tmp

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

修改内容如下:

-server

-Xms512m

-Xmx512m

-XX:MaxDirectMemorySize=1g

-XX:+ExitOnOutOfMemoryError

-Duser.timezone=UTC+8

-Dfile.encoding=UTF-8

-Djava.io.tmpdir=var/tmp

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

修改结果如下图:

在这里插入图片描述

此外还有一个参数:

<code>vim $DRUID_HOME/conf/druid/cluster/data/historical/runtime.properties

原配置内容如下:

druid.processing.buffer.sizeBytes=500MiB

修改为如下内容:

# 相当于 50MiB

druid.processing.buffer.sizeBytes=50000000

修改的截图如下:

在这里插入图片描述

备注:

druid.processing.buffer.sizeBytes 每个查询用于聚合的对外哈希表的大小maxDirectMemory = druid.processing.buffer.sizeBytes * (durid.processing.numMergeBuffers + druid.processing.numThreads + 1)如果 druid.processing.buffer.sizeBytes太大的话,需要加大 maxDirectMemory,否则 historical服务无法启动

middleManager

<code>vim $DRUID_HOME/conf/druid/cluster/data/middleManager/jvm.config

原配置:

-server

-Xms128m

-Xmx128m

-XX:+ExitOnOutOfMemoryError

-Duser.timezone=UTC

-Dfile.encoding=UTF-8

-Djava.io.tmpdir=var/tmp

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

配置如下(没有修改):

-server

-Xms128m

-Xmx128m

-XX:+ExitOnOutOfMemoryError

-Duser.timezone=UTC+8

-Dfile.encoding=UTF-8

-Djava.io.tmpdir=var/tmp

-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager

修改的截图如下:

在这里插入图片描述

【续接下篇!】



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。