大数据-150 Apache Druid 安装部署 单机启动 系统架构

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

目前已经更新到了:

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

章节内容

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

  • Apache Druid 基本介绍
  • Apache Druid 技术特点
  • Apache Druid 应用场景

系统架构

Apache Druid 是一个高性能的实时分析数据库,专为快速聚合和查询大规模数据集而设计。它的架构由多个组件组成,每个组件在数据的存储、处理和查询中发挥重要作用。

(部分内容上节已经有了)

核心组件

数据摄取层 (Ingestion Layer)

  • 数据源: Druid 支持多种数据源,如 Kafka、HDFS、Amazon S3 等。数据摄取可以是批处理(Batch)或实时流处理(Streaming)。
  • 任务管理: 使用任务协调器来管理数据摄取任务,确保数据流的顺畅和高可用性。

数据存储层 (Storage Layer)

Segment: Druid 将数据分为多个小块,称为"段"(Segment)。每个段通常包含一段时间内的数据,并被优化以支持快速查询。

时间分区: Druid 根据时间将数据分区,以提高查询性能。数据按时间戳索引,有助于高效的时间范围查询。

查询层 (Query Layer)

  • Broker: 负责接收用户的查询请求并将其路由到相应的数据节点(如历史节点和实时节点)。
  • 查询执行: Druid 支持多种查询类型,包括聚合查询、过滤查询和分组查询。查询结果会通过 Broker 返回给用户。

历史节点 (Historical Node)

  • 存储并管理长时间的数据段,负责处理对历史数据的查询。

实时节点 (Real-time Node)

  • 用于实时摄取数据,实时处理并生成可查询的段。适合需要低延迟数据访问的应用。

协调节点 (Coordinator Node)

  • 负责管理 Druid 集群的各个节点,监控节点的健康状态、数据分布和负载均衡。

数据流动

  • 数据摄取: 数据从外部源流入 Druid(如 Kafka 消息队列),经过任务管理和转换后被摄取。
  • 数据存储: 数据被分段并存储在历史节点和实时节点中,按时间分区和压缩以优化存储。
  • 查询处理: 用户通过查询接口(如 SQL 或 Druid 特定的查询语言)发送查询请求,Broker 节点将请求分发到相应的数据节点,聚合和处理查询结果后返回。

查询优化

  • 列式存储: Druid 采用列式存储格式,提高了压缩率和查询性能。
  • 索引: Druid 会为每个字段建立索引,加速过滤和聚合操作。
  • 预聚合: 对常用的聚合操作进行预计算,以减少实时查询的计算负担。

可扩展性与高可用性

  • Druid 支持横向扩展,可以根据需求添加更多的节点来处理更大的数据集和更高的查询负载。
  • 数据冗余和节点监控机制确保了系统的高可用性。

下载解压

官方目前已经到了版本30了

shell 复制代码
wget https://dlcdn.apache.org/druid/30.0.0/apache-druid-30.0.0-bin.tar.gz

直接结果如下图所示:

进行解压:

shell 复制代码
tar -zxvf apache-druid-30.0.0-bin.tar.gz

执行结果如下图所示:

移动到目标目录:

shell 复制代码
mv apache-druid-30.0.0 /opt/servers/
cd /opt/servers/apache-druid-30.0.0
ls

执行结果如下图所示:

单机部署

配置文件

单服务器部署的配置文件如下:

shell 复制代码
conf/druid/single-server/
├── large
├── medium
├── micro-quickstart
├── nano-quickstart
├── small
└── xlarge

文件的路径如下图所示:

启动要求

单服务器的要求如下:

shell 复制代码
Nano-Quickstart:1个CPU,4GB RAM
启动命令: bin/start-nano-quickstart
配置目录: conf/druid/single-server/nano-quickstart/*
微型快速入门:4个CPU,16GB RAM
启动命令: bin/start-micro-quickstart
配置目录: conf/druid/single-server/micro-quickstart/*
小型:8 CPU,64GB RAM(〜i3.2xlarge)
启动命令: bin/start-small
配置目录: conf/druid/single-server/small/*
中:16 CPU,128GB RAM(〜i3.4xlarge)
启动命令: bin/start-medium
配置目录: conf/druid/single-server/medium/*
大型:32 CPU,256GB RAM(〜i3.8xlarge)
启动命令: bin/start-large
配置目录: conf/druid/single-server/large/*
大型X:64 CPU,512GB RAM(〜i3.16xlarge)
启动命令: bin/start-xlarge
配置目录: conf/druid/single-server/xlarge/*

环境变量

shell 复制代码
vim /etc/profile

写入如下的内容,记得刷新环境变量:

shell 复制代码
# druid
export DRUID_HOME=/opt/servers/apache-druid-30.0.0
export PATH=$PATH:$DRUID_HOME/bin

写入内容如下图所示:

(这里注意,要关闭其他的服务,比如ZK什么的,不然会提示2181端口会占用)

shell 复制代码
zkServer.sh stop

执行结果如下图所示:

接着进行启动,启动结果如下图所示:

查看页面

shell 复制代码
http://h121.wzk.icu:8888/

页面结果显示如下图:

PS:官方建议大型系统采用集群模式部署,以此来实现容错和减少资源的争抢。

相关推荐
m0_571957582 小时前
Java | Leetcode Java题解之第543题二叉树的直径
java·leetcode·题解
2401_883041084 小时前
新锐品牌电商代运营公司都有哪些?
大数据·人工智能
青云交4 小时前
大数据新视界 -- 大数据大厂之 Impala 性能优化:融合机器学习的未来之路(上 (2-1))(11/30)
大数据·计算资源·应用案例·数据交互·impala 性能优化·机器学习融合·行业拓展
魔道不误砍柴功4 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2344 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
闲晨4 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
测开小菜鸟5 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
P.H. Infinity6 小时前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天6 小时前
java的threadlocal为何内存泄漏
java
Json_181790144807 小时前
An In-depth Look into the 1688 Product Details Data API Interface
大数据·json