点一下关注吧!!!非常感谢!!连续更新!!!
现在已经更新到了:
- 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、Druid
- h122.wzk.icu 2C4G ZooKeeper、Kafka、Druid、MySQL(之前Hive时搭建)
- h123.wzk.icu 2C2G ZooKeeper、Druid
情况变量
写入的内容如下:
- # druid
- export DRUID_HOME=/opt/servers/apache-druid-30.0.0
- export PATH=$PATH:$DRUID_HOME/bin
复制代码
配置文件
将 Hadoop 配置文件:
- core-site.xml
- hdfs-site.xml
- yarn-site.xml
- mapred-site.xml
上述文件链接到 conf/druid/cluster/_common 下
执行下面的Shell:
- 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 中
- 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
复制代码 执行结果如下图所示:
修改配置
- 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
参数大小根据现真相况调整
- 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
参数大小根据现真相况调整
- 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
复制代码 修改结果如下图:
此外还有一个参数:
- 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
- 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
复制代码 修改的截图如下:
【续接下篇!】
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |