电力通用大数据集群配置方案

2025年1月10日 作者 unix2go

需求

搭建一套全新的大数据集群,含如下服务:

  • 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 台服务器,保证高可用性和分区存储。
  • Zookeeper 集群
    • Kafka 和 Hadoop 的协调服务,需要 3 台实例(多服务可以复用 Kafka 的节点)。

2. 硬件配置建议

以下是针对不同节点的硬件配置建议:

服务角色CPU内存硬盘网络数量
主节点 (NameNode)16 核 32 线程128 GBSSD 1TB × 2 (RAID1) + HDD 4TB双网卡万兆2
数据节点 (DataNode)32 核 64 线程256 GBHDD 8TB × 6 (RAID5)双网卡万兆7~10
Kafka 节点16 核 32 线程128 GBSSD 2TB × 2双网卡万兆3
Zookeeper 节点8 核 16 线程32 GBSSD 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 年历史数据存储以及流计算、实时查询的需求,并具备良好的扩展性和性能冗余。