共计 3577 个字符,预计需要花费 9 分钟才能阅读完成。
在一个 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 集群中的数据节点。这些节点会有大量的磁盘读写操作,根据用户指定的可以使用的存储的类型,系统会使用不同的磁盘部署算法。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-10/92032p2.htm
相关阅读:
Hadoop 2.0 安装向导 (0.23.x) http://www.linuxidc.com/Linux/2012-05/61463.htm
Hadoop 1.2.1 单节点安装 (Single Node Setup) 步骤 http://www.linuxidc.com/Linux/2013-08/89377.htm
在 CentOS 上安装 Hadoop http://www.linuxidc.com/Linux/2013-08/88600.htm
Ubuntu 12.04 安装 Hadoop http://www.linuxidc.com/Linux/2013-08/88187.htm
CentOS 6.3 x86_64 安装与配置 Hadoop-1.0 http://www.linuxidc.com/Linux/2013-07/87959.htm
Hadoop 入门 –Hadoop2 伪分布式安装 http://www.linuxidc.com/Linux/2013-06/86403.htm
对于用户指定的是共享存储的情况,因为共享存储的背后是 SAN 或者 NAS,已经是由多块物理磁盘构成,并且磁盘的调度被隐藏在控制器之后,最优的磁盘部署算法是把所需的存储空间集合在一起,放在一个共享存储上。如果出现一个共享存储的空间不够的情况,系统会把分配后剩余的所需存储空间放在下一个可用的共享存储上,直到所需的存储空间全部分配完毕。
另外一种情况就是用户指定的本地存储。对于本地存储,我们推荐用户把每个物理磁盘单独定义(每个物理磁盘对应一个 datastore)。这样的话,我们可以通过(1)尽可能多的使用本地存储,(2)提供更多的物理磁盘拓扑信息,来提高 Hadoop 的磁盘总体吞吐率。
这里通过一个例子来具体讲解 Serengei 的磁盘部署算法是如何工作的。假定有 5 个本地存储可供使用,需要分配 50GB 的空间。最简单的算法是把 50GB 平均分配到 5 个本地存储上去,每个本地存储上占用 10GB 的空间。但是每个本地存储上的可用空间可能是不同的,如果某个本地存储上的剩余空间小于 10GB 的话,这种算法就无法得到可行的部署方案。
我们使用的是一个改进的算法。首先将可用的本地存储按可用空间的大小从小到大进行排列。对于分配方案 1,考虑将本地存储 1 的可用空间全部使用,而其他本地存储上使用和本地存储 1 的可用空间相同的空间,得到分配的总空间是 25GB。
对于分配方案 2,保持本地存储 1 的可用空间全部分配的状态,再将本地存储 2 的全部可用空间全部使用,对于比本地存储 2 大的其它存储,使用和本地存储 2 的可用空间(10GB)相同的空间,得到分配的总空间是 45GB。如此类推,计算出全部的分配方案的空间大小。
我们需要的存储空间大小是 50GB,这个位于分配方案 2 和分配方案 3 之间。所以我们知道必须使用本地存储 1 和 2 上的全部空间,而剩余的空间将在其它 3 个本地存储上平均分配。最终的磁盘部署方案是:
需要指出的是,数据节点的系统盘和数据盘有所不同,所以会被分到一个满足磁盘空间需求的存储上。
Hadoop 磁盘部署的算法还需要处理其它一些特殊的情况,这里就不一一介绍了。
更多 Hadoop 相关信息见Hadoop 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=13
在一个 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 集群中的数据节点。这些节点会有大量的磁盘读写操作,根据用户指定的可以使用的存储的类型,系统会使用不同的磁盘部署算法。
更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2013-10/92032p2.htm
相关阅读:
Hadoop 2.0 安装向导 (0.23.x) http://www.linuxidc.com/Linux/2012-05/61463.htm
Hadoop 1.2.1 单节点安装 (Single Node Setup) 步骤 http://www.linuxidc.com/Linux/2013-08/89377.htm
在 CentOS 上安装 Hadoop http://www.linuxidc.com/Linux/2013-08/88600.htm
Ubuntu 12.04 安装 Hadoop http://www.linuxidc.com/Linux/2013-08/88187.htm
CentOS 6.3 x86_64 安装与配置 Hadoop-1.0 http://www.linuxidc.com/Linux/2013-07/87959.htm
Hadoop 入门 –Hadoop2 伪分布式安装 http://www.linuxidc.com/Linux/2013-06/86403.htm