深入Hadoop节点部署的策略
简介
每个Hadoop集群都包括不止一个节点。这些节点可以按功能分成几个组,比如master组,worker组,client组等等。每个组里面的节点都有不同的资源要求,比如CPU,内存,存储。
在虚拟数据中心(DataCenter)中有一个或多个虚拟集群(Cluster),每个虚拟集群中有一个或多个主机(Host)。
节点部署是在保证每个节点资源需求的前提下,按照一定策略将Hadoop集群中的所有节点部署到物理主机上。
定义Hadoop集群
Hadoop集群可以通过UI来定义,也可以通过json格式的文件来定义。这里以json文件为例来说明有哪些参数可以使用。
{
"nodeGroups" : [
{
"name": "master",
"roles": [
"hadoop_namenode",
"hadoop_jobtracker"
],
"instanceNum": 1,
"instanceType": "LARGE",
"cpuNum": 2,
"memCapacityMB":4096,
"storage": {
"type": "SHARED",
"sizeGB": 20
},
"haFlag":"on",
"rpNames": [
"rp1"
]
},
上面的文件片段定义了master节点组(第2行“name”),其中包括一个节点(第9行“instanceNum”),每个节点需要2个虚拟CPU(第11行“cpuNum”),4096MB的内存(第12行“memCapacityMB”),20GB共享的存储空间(第13-16行)。
简单的节点部署策略
节点部署的策略有多种,先介绍最简单的一种。因为在一般情况下,Hadoop节点需要占用的磁盘空间是最紧张的资源,所以最基本的节点部署策略是按照磁盘空间的大小来考虑的。首先将所有Hadoop节点按照磁盘空间的要求从大到小进行排序,再将可用的Host按照剩余磁盘空间从大到小进行排序。第一步将磁盘空间需求最大的Hadoop节点部署到剩余磁盘空间最大的主机上去,第二步将磁盘空间需求次大的Hadoop节点部署到剩余磁盘空间次大的主机上去,以此类推。当然,如果后面碰到主机的剩余磁盘空间不够部署某个节点的话,前面拥有较大剩余磁盘空间的主机就会被考虑。这种策略的目的是尽量利用所有可用的主机来部署Hadoop节点,这样每个节点都有更多的资源可供使用。
相关阅读: