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

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 大数据集群规划的一点建议

大数据集群规划原则:

1:分别对增量数据、全量数据进行规模测算。在实际业务中,对于任何一个企业其业务条线都会有其自己的业务增长趋势,这样随着业务规模的增长企业数据量也会不断增长,所以我们在规划集群时可以按照短期业务(1~2年)、中长期(3~5年)业务增长进行规划,而不是在集群初始化时一次性导入的初始数据量。
比如:我们假设企业的客户量x,所有客户产生的所有业务数据量为y,在构建集群时的初始数据量为c,那么可能的一种企业数据量增长模型为
y = a*f(x) + b*g(x) + c
其中,在大部分企业中如果客户量增加一个量级dx,那么其所对应的日志和订单业务数据量可能是客户量的线性模型f(x),而对于交易类业务的数据量可能是客户量的非线性增长模型g(x),比如笛卡尔积模型。
所以不能通过简单的节点动态增加来调整集群规模和存储计算能力,最好还是通过构建短期业务和中长期业务增长趋势模型来规划集群。
2:针对离线和实时场景,需要做好压测(QPS(每秒查询率)=并发数/平均响应时间),评估任务量、任务数以及各个组件在不同配置下的处理性能。
3:集群高可用保证,针对关键性管理节点,尽可能散落在不同的机器节点上,避免集中在某一两台机器上。
4:对于管理节点与NameNode,ResourceManager,Master,JobManager...等,存储和内存,尽量分配小一点。
5:对于存储 如HDFS DataNode尽量磁盘分配比较大的机器,选择合适的文件格式,并且进行数据压缩。而对于计算节点,如spark 、flink、doris等尽量分配比较高CPU和内存的机器。
6.任务提交参数合理优化:消耗内存的分批次提交。堆内存进行估算,设置合理并行度。
对于计算资源内存的估算没有绝对的标准,需要根据公司使用的计算系统来区分,需根据实际使用的组件(MR\Flink\Spark\),执行了多少任务,实时任务数量,离线任务数量、算法模型等进行实际估算。
一般实时任务占用的资源都是固定的,可以根据业务个数估算。离线任务可以根据 ETL 任 务数和任务资源配置情况估算,计算资源离线和实时同时启用的时候不能超过资源 90%。实时任务资源占用需要小于 50%,如果数据增量为 570G,实时任务 7407/s 的 QPS,一分 钟窗口,如全量计算 444420*(2/1024/1024)=0.85G,有的设置 5 分钟窗口,如全量计算大概是 4.25G。 
如果离线任务,可以把 1/4 的数据放到内存,那就就需要 47.5G 的内存。如果二者同时运行,按照不超过 90%来计算,需要 57.5G。上面只是单纯的从实时和离线单任务来计算,可以选择 64G 内存(一般机器比较新的情况下)。
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%就需要进行横向扩容,等等。
笔者曾经在实践中遇到过如下情形,原始的业务数据大概有15T左右,通过多副本存储策略、数据处理过程中产生的大量中间和临时数据、再加上集群需要有预留空间的安全系数等,当时整个集群120T的总空间尽然都不够用,也就是说现实中的业务数据在使用中总体上可能会膨胀好多倍。

常见的分配公式

zookeeper :(100台服务器下)3台; (>=100)5台
kafka:根据数据量的io需求实际测试
  点数计算方式:
   按照吞吐量计算:X(总吞吐量,MB/秒) / 100(单节点最大Producer吞吐量,MB/秒) / 0.85(预留比例)
   按照存储量计算:X(总吞吐量,MB/秒) * 3600 * 24 * D(天数,默认7)* 2(副本数) / 1024 / 1024 / (25 * 0.96) / 0.85(预留比例)
   二者取大值,最少配置2台。
hbase:hbase数据写入快,节点数计算公式:
  节点数 = 规划数据量 * 1.5 (数据膨胀率) * 1(数据压缩率) * 3(3副本)/ 0.8(磁盘利用率) / 0.9 (磁盘进制转换)/ (12 (磁盘个数) * 4T (磁盘容量))
es:写入慢读取快,同样数据写入es和hbase,一般服务器数量多于hbase
  节点数 = 规划数据量 * 1.5 (数据膨胀率) * 1(数据压缩率) * 2(2副本)/ 0.8(磁盘利用率) / 0.9 (磁盘进制转换)/ (24 (磁盘个数) * 0.96T (磁盘容量)* 5 / 6 (RAID系数))
hdfs:数据的总计算资源存储资源。

大数据平台对硬件的规划原则: 如果能够确切地知道存储和计算的资源需要,那么就按照这个需求来配置即可;但如果无法准确地评估出存储和计算资源需求量,那么一定要留下可扩展的余地,比如留下足够的机柜位置、网络接口、磁盘接口等。在实际应用中,存储容量一般很好预估,但计算资源很难预估,因此留下足够的扩展接口,是必须要考虑的一个问题。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
2月前
|
消息中间件 分布式计算 关系型数据库
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
大数据-140 - ClickHouse 集群 表引擎详解5 - MergeTree CollapsingMergeTree 与其他数据源 HDFS MySQL
62 0
zdl
|
1月前
|
消息中间件 运维 大数据
大数据实时计算产品的对比测评:实时计算Flink版 VS 自建Flink集群
本文介绍了实时计算Flink版与自建Flink集群的对比,涵盖部署成本、性能表现、易用性和企业级能力等方面。实时计算Flink版作为全托管服务,显著降低了运维成本,提供了强大的集成能力和弹性扩展,特别适合中小型团队和业务波动大的场景。文中还提出了改进建议,并探讨了与其他产品的联动可能性。总结指出,实时计算Flink版在简化运维、降低成本和提升易用性方面表现出色,是大数据实时计算的优选方案。
zdl
159 56
|
7天前
|
存储 负载均衡 监控
揭秘 Elasticsearch 集群架构,解锁大数据处理神器
Elasticsearch 是一个强大的分布式搜索和分析引擎,广泛应用于大数据处理、实时搜索和分析。本文深入探讨了 Elasticsearch 集群的架构和特性,包括高可用性和负载均衡,以及主节点、数据节点、协调节点和 Ingest 节点的角色和功能。
23 0
|
1月前
|
SQL 存储 大数据
单机顶集群的大数据技术来了
大数据时代,分布式数仓如MPP成为热门技术,但其高昂的成本让人望而却步。对于多数任务,数据量并未达到PB级,单体数据库即可胜任。然而,由于SQL语法的局限性和计算任务的复杂性,分布式解决方案显得更为必要。esProc SPL作为一种开源轻量级计算引擎,通过高效的算法和存储机制,实现了单机性能超越集群的效果,为低成本、高效能的数据处理提供了新选择。
|
2月前
|
存储 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
44 1
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(一)
|
2月前
|
分布式计算 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(一)
56 5
|
2月前
|
SQL 分布式计算 NoSQL
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
大数据-170 Elasticsearch 云服务器三节点集群搭建 测试运行
58 4
|
2月前
|
资源调度 大数据 分布式数据库
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
大数据-158 Apache Kylin 安装配置详解 集群模式启动(二)
51 2
|
2月前
|
消息中间件 分布式计算 druid
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
大数据-152 Apache Druid 集群模式 配置启动【下篇】 超详细!(二)
46 2
|
2月前
|
存储 消息中间件 druid
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
大数据-151 Apache Druid 集群模式 配置启动【上篇】 超详细!
94 1