本文章参考于Cloudera官方文档
https://docs.cloudera.com/documentation/enterprise/latest/topics/cm_ig_host_allocations.html
一功能分配
1.文档编写目的 本文主要介绍由Cloudera Manager管理的CDH集群的角色划分。实际部署你可能还需要考虑工作负载的类型和数量,真实要部署的哪些服务,硬件资源,配置,以及其他因素。当你使用Cloudera Manager的安装向导来安装CDH时,CM会根据主机的可用资源,自动的分配角色到各台主机,边缘节点除外。你可以在向导中使用”自定义角色分配 - Customize Role Assignments”来更改这些默认划分,当然你也可以以后再使用Cloudera Manager来增加或修改角色分配。
在介绍角色划分时,我们首先来看看有哪几种主要的角色:
管理节点(Master Hosts):主要用于运行Hadoop的管理进程,比如HDFS的NameNode,YARN的ResourceManager。
工具节点(Utility Hosts):主要用于运行非管理进程的其他进程,比如Cloudera Manager和Hive Metastore.
边缘节点(Edge Hosts):用于集群中启动作业的客户端机器,边缘节点的数量取决于工作负载的类型和数量。
工作节点(Worker Hosts):主要用于运行DataNode以及其他分布式进程,比如ImpalaD。
本文会从测试/开发集群(小于10台),小规模集群(10-20台),中小规模集群(20-50台),中等规模集群(50-100台),大型集群(100-200台),超大规模集群(200-500台),巨型规模集群(500台以上)来分别讲述角色划分。以下角色划分场景都不包括Kafka,Kafka角色我们一般都会采用单独的机器部署。
2.集群角色划分
2.1 小于10台
一般用于测试/开发集群,我们建议至少5台机器,没有高可用。一个管理节点主要用于安装NameNode和ResourceManager,工具节点和边缘节点复用一个,主要用于安装Cloudera Manager等,剩余3-7台工作节点。
2.2 10-20台
这是最小规模的生产系统,必须启用高可用。我们会用2个管理节点用于安装2个NameNode,一个工具节点用于安装Cloudera Manager等,如果机器充足或者Hue/HiveServer2/Flume的负载特别高,可以考虑独立出边缘节点用于部署这些角色,否则也可以跟Cloudera Manager复用。最后还剩下7-17个工作节点
注:根据实际情况选择是否需要单独的边缘节点。
2.3 20-50台
这是中小规模的生产集群,必须启用高可用,与小规模集群角色划分差别不大。我们会用3个管理节点用于安装NameNode和Zookeeper等,一个工具节点用于安装ClouderaManager等,如果机器充足或者Hue/HiveServer2/Flume的负载特别高,可以考虑独立出边缘节点用于部署这些角色,否则也可以跟Cloudera Manager复用。最后还剩下16-46个工作节点。
注:根据实际情况选择是否需要单独的边缘节点。
Zookeeper和JournalNode需配置专有的数据盘
2.4 50-100台
这是中等规模的生产集群,必须启用高可用。我们会用3个管理节点用于安装NameNode和Zookeeper等,一个工具节点用于安装Cloudera Manager,一个工具节点用于安装ClouderaManagement Service和Navigator等。使用三个节点安装Hue/HiveServer2/Flume,作为边缘节点,使用两个节点安装负载均衡软件比如F5或者HAProxy并配置为KeepAlive的主主模式,该负载均衡可同时用于HiveServer2和Impala Daemon。最后还剩下42-92个工作节点。
注:Zookeeper和JournalNode需配置专有的数据盘
2.5 100-200台
属于大规模的生产集群,必须启用高可用。我们会用5个管理节点用于安装NameNode和Zookeeper等,1个工具节点用于安装Cloudera Manager,再使用4个工具节点分别安装HMS,Activity Monitor,Navigator等。使用3个以上节点安装Hue/HiveServer2/Flume,作为边缘节点,使用2个节点安装负载均衡软件比如F5或者HAProxy并配置为KeepAlive的主主模式,该负载均衡可同时用于HiveServer2和Impala Daemon。最后还剩下85-185个工作节点。
注:Zookeeper和JournalNode需配置专有的数据盘
Kudu Master不超过3个
Kudu Tablet Server不超过100个
2.6 200-500台
属于超大规模的生产集群,必须启用高可用。我们会用7个管理节点用于安装NameNode和Zookeeper等,1个工具节点用于安装Cloudera Manager,再使用7个工具节点分别安装HMS,Activity Monitor,Navigator等。使用3个以上节点安装Hue/HiveServer2/Flume,作为边缘节点,使用2个节点安装负载均衡软件比如F5或者HAProxy并配置为KeepAlive的主主模式,该负载均衡可同时用于HiveServer2和Impala Daemon。最后还剩下180-480个工作节点。
注:Zookeeper和JournalNode需配置专有的数据盘
Kudu Master不超过3个
Kudu Tablet Server不超过100个
2.7 500台以上
属于巨型规模的生产集群,必须启用高可用。我们会用20个管理节点用于安装NameNode和Zookeeper等,1个工具节点用于安装Cloudera Manager,再使用7个工具节点分别安装HMS,Activity Monitor,Navigator等。使用3个以上节点安装Hue/HiveServer2/Flume,作为边缘节点,使用2个节点安装负载均衡软件比如F5或者HAProxy并配置为KeepAlive的主主模式,该负载均衡可同时用于HiveServer2和Impala Daemon。最后还剩下至少467个工作节点。
注:这个规模的规划仅供参考,这种巨型规模的生产集群的角色划分依赖因素非常多,比如是否考虑NN和RM的联邦等
Zookeeper和JournalNode需配置专有的数据盘
Kudu Master不超过3个
Kudu Tablet Server不超过100
二分配各个功能下的各个角色
1、hdfs
NameNode一般在主节点上,初始化安装的时候没有高可用,所以有SecondaryNameNode的作为一个备份,NameNode它会将它拆分后进行分布式存储,其中的数据是分散在各个DataNode节点,且默认都会有3个副本,防止其中一台机器宕机使得数据缺失,所以一般集群有几台机器就分配到几台机器上,balancer一般与namenode搭建在一起。
2、hive
hive metastore server与hiveServer2一般搭载一起上,但也可以分开,因为hive服务需要启动hiveServer2,访问sparksql需要启动metastore而hive gateway,事实上并不是真正的角色,也没有状态,但它们充当了告诉客户端配置应该放置在哪里。 添加Hive服务时,默认情况下会创建Hive网关。
3、cloudera manager server
这个可以根据实际搭建,这个相当于是集群的监听器,在网页上出现的的图表也就是这个监听器类似的,这个可以搭建在主节点上,但若是主节点上分配的角色过多会影响其服务器的性能。
4、spark与spark2
这二个角色可以分配这任意的机器上,按实际情况调整,但是spark-gateway、spark2-gateway全部部署在各个机器上,这个对于个人理解来说相当于spark、spark2机器之间的通信功能。
5、yarn
jobhistory与resourcemanager进行通信,所以部署上一般在同一台机器上放在主节点上,而nodemanager分配在各个节点上
6、zookeeper
这个若是机器足够一般是奇数的,而cdh集群一般机器也是奇数的,所以最好有几台机器就部署在几台机器上。
7、Kafka
这个可以根据实际搭建,可以搭建在主节点上,但若是主节点上分配的角色过多会影响其服务器的性能。