深入Hadoop磁盘部署的算法

在一个Hadoop集群中有不同类型的节点,它们对磁盘的要求是不同的。主(master)节点侧重于存储的可靠性,数据(data)节点就需要更好的读写性能,以及较大的容量。

在虚拟集群中,存储(datastore)可以分为本地(local)和共享(shared)两种类型。本地存储只能被其所在的主机上的虚拟机访问,而共享存储则可以被其他主机上的虚拟机访问到。本地存储的读写性能更好,而共享存储的可靠性更好。

磁盘部署的算法会根据用户输入,为不同类型的Hadoop节点提供最优的存储方案。

首先来看Hadoop集群中的主节点。因为主节点需要更高的可靠性,一般会配置上vSphere的高可用性(High Availability)和容错(Fault Tolerance)特性,所以共享存储是必须的。下面是json格式的配置文件的片段,显示如何指定主节点组的存储。

1 {
2 "nodeGroups" : [
3 {
4 "name": "master",
5 "roles": [
6 "hadoop_namenode",
7 "hadoop_jobtracker"
8 ],
9 "instanceNum": 1,
10 "instanceType": "LARGE",
11 "cpuNum": 2,
12 "memCapacityMB":4096,
13 "storage": {
14 "type": "SHARED",
15 "sizeGB": 20
16 },
17 "haFlag":"on",
18 "rpNames": [
19 "rp1"
20 ]
21 },

从第13行开始是关于存储的配置,指定使用共享类型的存储(第14行“type”:“SHARED”),大小为20GB。第17行“haflag”:“on”指定使用vSphere的高可用性(HA)特性。Serengeti在分配磁盘的时候会为主节点分配共享类型的存储。

下面来看Hadoop集群中的数据节点。这些节点会有大量的磁盘读写操作,根据用户指定的可以使用的存储的类型,系统会使用不同的磁盘部署算法。

相关阅读

相关推荐