电力通用大数据集群配置方案
2025年1月10日需求
搭建一套全新的大数据集群,含如下服务:
- Hadoop服务器(hdfs存储和map/reduce计算)
- Spark服务器(流计算和实时查询)
- Hive服务器(数仓)
- Kafka服务器(消息通道)
- Zookeeper服务器(分布式协同)
新增的数据量大约每天100GB,历史数据存储1年。
方案
搭建一套高效且经济的大数据集群,需要根据数据量、使用场景和预算综合考虑硬件配置和服务器数量。以下是针对描述场景提供的建议。
背景分析
- 数据量:
- 每天新增数据量为 100GB,1 年约为 36.5TB(考虑到数据压缩,实际占用大概为 20~25TB)。
- 假设数据读取和计算的 I/O 高峰是每天 2~3 倍(大约 200~300GB 的日常计算需求)。
- 数据存储主要依赖 HDFS,历史数据需要长期存储。
- 服务需求:
- Hadoop (HDFS):主要负责分布式存储。
- Spark:进行流计算和实时查询,计算资源需求较高。
- Hive:作为数仓,主要在 HDFS 基础上提供 SQL 查询能力。
- Kafka:消息通道,主要用于数据流的实时传输,性能要求较高但存储需求较小。
硬件配置推荐
1. 集群规模和节点角色规划
- Hadoop + Spark + Hive 集群:
- 计算节点:提供 HDFS 存储和 MapReduce、Spark 计算能力。推荐 7~10 台。
- 主节点(Master/NameNode):管理 HDFS 元数据、YARN 资源调度。需要高性能和高可用(建议 2 台)。
- Kafka 集群:
- Kafka 需要至少 3 台服务器,保证高可用性和分区存储。
- Kafka 需要至少 3 台服务器,保证高可用性和分区存储。
- Zookeeper 集群:
- Kafka 和 Hadoop 的协调服务,需要 3 台实例(多服务可以复用 Kafka 的节点)。
2. 硬件配置建议
以下是针对不同节点的硬件配置建议:
服务角色 | CPU | 内存 | 硬盘 | 网络 | 数量 |
---|---|---|---|---|---|
主节点 (NameNode) | 16 核 32 线程 | 128 GB | SSD 1TB × 2 (RAID1) + HDD 4TB | 双网卡万兆 | 2 |
数据节点 (DataNode) | 32 核 64 线程 | 256 GB | HDD 8TB × 6 (RAID5) | 双网卡万兆 | 7~10 |
Kafka 节点 | 16 核 32 线程 | 128 GB | SSD 2TB × 2 | 双网卡万兆 | 3 |
Zookeeper 节点 | 8 核 16 线程 | 32 GB | SSD 1TB | 千兆网卡 | 3 |
硬件选择理由
1. 主节点 (NameNode / ResourceManager)
- CPU:主要负责元数据管理(HDFS)和任务调度(YARN),对单线程性能要求较高,建议 16 核起步。
- 内存:HDFS 元数据加载到内存中,同时需要为 YARN 任务调度分配充足的内存,建议 128GB。
- 硬盘:元数据存储使用 SSD 提高性能,另配 HDD 存储历史日志等数据。
- 高可用:需要至少 2 台,配置 NameNode 主备。
2. 数据节点 (DataNode)
- CPU:HDFS 数据块存储和计算任务并行执行,建议高并发多核 CPU,32 核起步。
- 内存:Spark 和 MapReduce 任务对内存需求较大,建议 256GB。
- 硬盘:HDFS 存储主要依赖 HDD,多块磁盘组成 JBOD 或 RAID5,建议单节点存储容量为 40TB 左右(6 块 8TB HDD)。
- 扩展性:建议至少 7 台,考虑到计算和存储需求,可以扩展至 10 台。
3. Kafka 节点
- CPU:Kafka 的吞吐量和分区数决定 CPU 性能,16 核足够应对 100GB/天的数据流。
- 内存:Kafka 的 Page Cache 需要足够的内存来提高 I/O 效率,128GB 较为合适。
- 硬盘:Kafka 的日志存储和分区复制需要高效磁盘,推荐使用 SSD。
- 高可用性:至少 3 台节点,满足 Kafka 的分区和副本机制。
4. Zookeeper 节点
- CPU 和内存:Zookeeper 主要提供元数据管理和协调功能,资源需求较低,8 核和 32GB 内存足够。
- 硬盘:推荐使用 SSD 来存储事务日志,1TB 容量即可。
- 高可用性:建议部署 3 台节点,形成 Zookeeper 集群。
网络和其他建议
- 网络:
- 建议全部服务器配备双网卡,支持万兆网络,避免数据分发和计算任务时成为瓶颈。
- 使用交换机搭建专用大数据网络,分离计算流量和管理流量。
- 高可用:
- NameNode 采用 HA 模式,Master 节点需要双机热备。
- Kafka 和 Zookeeper 分别使用至少 3 个节点,保证分布式高可用。
- 扩展性:
- 如果未来数据量增长,可以通过增加 DataNode 和 Kafka 节点扩展存储和计算能力。
- 建议初期规划机架空间,预留 20%~30% 的扩展能力。
- 操作系统和软件:
- 操作系统建议使用 CentOS 或 Ubuntu。
- 配置管理工具可以采用 Ansible 或 SaltStack,便于集群统一管理。
总结配置
- 主节点:2 台(高性能 NameNode)。
- 数据节点:7~10 台(存储和计算)。
- Kafka 节点:3 台(消息通道)。
- Zookeeper 节点:3 台(协调服务,可复用 Kafka 节点)。
- 总服务器数量:15~18 台。
这种配置可以满足每天 100GB 数据新增、1 年历史数据存储以及流计算、实时查询的需求,并具备良好的扩展性和性能冗余。