改版通知

巨人肩膀网站已全新改版。若您仍依赖旧站功能或数据,欢迎联系我们,我们会协助处理。联系我们

大数据集群规划的一点建议

ckckck2025年1月10日10 浏览

大数据集群规划原则

1. 数据规模测算

  • 增量数据与全量数据:分别对增量数据和全量数据进行规模测算。根据业务增长趋势,规划集群时应考虑短期(1~2年)和中长期(3~5年)业务增长。
  • 数据量增长模型:假设企业的客户量为x,所有客户产生的业务数据量为y,初始数据量为c,数据量增长模型为:
    [ y = a cdot f(x) + b cdot g(x) + c ]
    其中,f(x)为线性模型,g(x)为非线性增长模型(如笛卡尔积模型)。

2. 离线和实时场景压测

  • 压测:评估任务量、任务数及各个组件在不同配置下的处理性能,确保QPS(每秒查询率)=并发数/平均响应时间。

3. 集群高可用性

  • 关键性管理节点:尽可能分散在不同的机器节点上,避免集中在某一两台机器上。

4. 管理节点资源配置

  • 资源配置:对于管理节点如NameNode、ResourceManager、Master、JobManager等,存储和内存尽量分配小一点。

5. 存储与计算节点配置

  • 存储节点:如HDFS DataNode,尽量分配磁盘较大的机器,选择合适的文件格式并进行数据压缩。
  • 计算节点:如Spark、Flink、Doris等,尽量分配高CPU和内存的机器。

6. 任务提交参数优化

  • 内存消耗:分批次提交,堆内存进行估算,设置合理并行度。
  • 资源估算:根据实际使用的组件(MR、Flink、Spark等)、任务数量、实时任务数量、离线任务数量、算法模型等进行实际估算。
  • 资源占用:实时任务资源占用需小于50%,离线任务资源占用不超过90%。

7. 数据传输组件部署

  • 紧密部署:Kafka、ZK、Flume等传输数据紧密的组件尽量放在一起。

8. 客户端部署

  • 风险隔离:客户端尽量放在1到2台服务器上,作为跳板机,方便工程师外部访问。

9. 依赖关系部署

  • 同一服务器:有依赖关系的组件尽量放到同一台服务器(如HIVE和DS)。

10. CPU与内存比例

  • 比例:一般为1:2、1:3或1:4,具体分配需根据线程数量。CDH集群中的MR任务一般采用1:3,Kafka端配比高一些,Spark、Kudu等组件内存需设置大一些。

11. 数据规划

  • 数据分类:按照业务中间数据、临时数据、系统日志、预留空间安全系数等进行规划。
  • 空间比例:业务中间数据和临时数据分配一定空间比例,预留空间安全系数按总体规模使用达到80%时进行横向扩容。

常见分配公式

Zookeeper

  • 服务器数量:100台以下3台,100台以上5台。

Kafka

  • 节点计算
    • 按吞吐量计算:[ frac{X}{100 imes 0.85} ]
    • 按存储量计算:[ frac{X imes 3600 imes 24 imes D imes 2}{1024 imes 1024 imes (25 imes 0.96) imes 0.85} ]
    • 二者取大值,最少配置2台。

HBase

  • 节点数计算:[ frac{规划数据量 imes 1.5 imes 1 imes 3}{0.8 imes 0.9 imes (12 imes 4T)} ]

Elasticsearch

  • 节点数计算:[ frac{规划数据量 imes 1.5 imes 1 imes 2}{0.8 imes 0.9 imes (24 imes 0.96T imes frac{5}{6})} ]

HDFS

  • 资源计算:数据的总计算资源存储资源。

大数据平台硬件规划原则

  • 资源需求:如果能够确切知道存储和计算资源需求,按需求配置;否则,留下可扩展的余地,如足够的机柜位置、网络接口、磁盘接口等。
  • 扩展接口:存储容量一般好预估,计算资源难预估,因此留下足够的扩展接口是必须考虑的问题。

大数据集群规划
end