查看: 2981|回复: 18

深入理解Hadoop集群和网络

  [复制链接]

39

主题

258

帖子

1555

积分

Gib

Rank: 5Rank: 5

贡献
0
技术
2
活跃
27
在线时间
13 小时
发表于 2014-6-17 01:40:32 | 显示全部楼层 |阅读模式

云计算和Hadoop中网络是讨论得相对比较少的领域。本文原文由Dell企业技术专家撰写,他曾在思科工作多年,专长是数据中心、云网络等。文章素材基于作者自己的研究、实验和Cloudera的培训资料。
本文将着重于讨论Hadoop集群的体系结构和方法,及它如何与网络和服务器基础设施的关系。最开始我们先学习一下Hadoop集群运作的基础原理。

1.png
Hadoop里的服务器角色
Hadoop主要的任务部署分为3个部分,分别是:Client机器,主节点和从节点。主节点主要负责Hadoop两个关键功能模块HDFS、Map Reduce的监督。当Job Tracker使用Map Reduce进行监控和调度数据的并行处理时,名称节点则负责HDFS监视和调度。从节点负责了机器运行的绝大部分,担当所有数据储存和指令计算的苦差。每个从节点既扮演者数据节点的角色又冲当与他们主节点通信的守护进程。守护进程隶属于Job Tracker,数据节点在归属于名称节点。
Client机器集合了Hadoop上所有的集群设置,但既不包括主节点也不包括从节点。取而代之的是客户端机器的作用是把数据加载到集群中,递交给Map Reduce数据处理工作的描述,并在工作结束后取回或者查看结果。在小的集群中(大约40个节点)可能会面对单物理设备处理多任务,比如同时Job Tracker和名称节点。作为大集群的中间件,一般情况下都是用独立的服务器去处理单个任务。
在真正的产品集群中是没有虚拟服务器和管理层的存在的,这样就没有了多余的性能损耗。Hadoop在Linux系统上运行的最好,直接操作底层硬件设施。这就说明Hadoop实际上是直接在虚拟机上工作。这样在花费、易学性和速度上有着无与伦比的优势。
2.png
Hadoop集群
上面是一个典型Hadoop集群的构造。一系列机架通过大量的机架转换与机架式服务器(不是刀片服务器)连接起来,通常会用1GB或者2GB的宽带来支撑连接。10GB的带宽虽然不常见,但是却能显著的提高CPU核心和磁盘驱动器的密集性。上一层的机架转换会以相同的带宽同时连接着许多机架,形成集群。大量拥有自身磁盘储存器、CPU及DRAM的服务器将成为从节点。同样有些机器将成为主节点,这些拥有少量磁盘储存器的机器却有着更快的CPU及更大的DRAM。
下面我们来看一下应用程序是怎样运作的吧:
3.png
adoop的工作流程
在计算机行业竞争如此激烈的情况下,究竟什么是Hadoop的生存之道?它又切实的解决了什么问题?简而言之,商业及政府都存在大量的数据需要被快速的分析和处理。把这些大块的数据切开,然后分给大量的计算机,让计算机并行的处理这些数据 — 这就是Hadoop能做的。
下面这个简单的例子里,我们将有一个庞大的数据文件(给客服部门的电子邮件)。我想快速的截取下“Refund”在邮件中出现的次数。这是个简单的字数统计练习。Client将把数据加载到集群中(File.txt),提交数据分析工作的描述(word cout),集群将会把结果储存到一个新的文件中(Results.txt),然后Client就会读结果文档。
4.png
向HDFS里写入File
Hadoop集群在没有注入数据之前是不起作用的,所以我们先从加载庞大的File.txt到集群中开始。首要的目标当然是数据快速的并行处理。为了实现这个目标,我们需要竟可能多的机器同时工作。最后,Client将把数据分成更小的模块,然后分到不同的机器上贯穿整个集群。模块分的越小,做数据并行处理的机器就越多。同时这些机器机器还可能出故障,所以为了避免数据丢失就需要单个数据同时在不同的机器上处理。所以每块数据都会在集群上被重复的加载。Hadoop的默认设置是每块数据重复加载3次。这个可以通过hdfs-site.xml文件中的dfs.replication参数来设置。
Client把File.txt文件分成3块。Cient会和名称节点达成协议(通常是TCP 9000协议)然后得到将要拷贝数据的3个数据节点列表。然后Client将会把每块数据直接写入数据节点中(通常是TCP 50010协议)。收到数据的数据节点将会把数据复制到其他数据节点中,循环只到所有数据节点都完成拷贝为止。名称节点只负责提供数据的位置和数据在族群中的去处(文件系统元数据)。

5.png
Hadoop的Rack Awareness
Hadoop还拥有“Rack Awareness”的理念。作为Hadoop的管理员,你可以在集群中自行的定义从节点的机架数量。但是为什么这样做会给你带来麻烦呢?两个关键的原因是:数据损失预防及网络性能。别忘了,为了防止数据丢失,每块数据都会拷贝在多个机器上。假如同一块数据的多个拷贝都在同一个机架上,而恰巧的是这个机架出现了故障,那么这带来的绝对是一团糟。为了阻止这样的事情发生,则必须有人知道数据节点的位置,并根据实际情况在集群中作出明智的位置分配。这个人就是名称节点。
假使通个机架中两台机器对比不同机架的两台机器会有更多的带宽更低的延时。大部分情况下这是真实存在的。机架转换的上行带宽一般都低于其下行带宽。此外,机架内的通信的延时一般都低于跨机架的(也不是全部)。那么假如Hadoop能实现“Rack Awareness”的理念,那么在集群性能上无疑会有着显著的提升!是的,它真的做到了!太棒了,对不对?
但是扫兴的事情发生了,首次使用你必须手动的去定义它。不断的优化,保持信息的准确。假如机架转换能够自动的给名称节点提供它的数据节点列表,这样又完美了?或者反过来,数据节点可以自行的告知名称节点他们所连接的机架转换,这样也的话也同样完美。

0

主题

347

帖子

1032

积分

论坛VIP原价+免回复特权

Rank: 8Rank: 8

贡献
0
技术
0
活跃
0
在线时间
0 小时
发表于 2014-6-28 12:25:08 | 显示全部楼层
爱技术,爱实验,尽在三通IT学院!

0

主题

229

帖子

647

积分

Mib

Rank: 4

贡献
0
技术
0
活跃
-1
在线时间
0 小时
发表于 2014-6-30 20:36:00 | 显示全部楼层
微软,Linux,操作系统技术尽在www.santongit.com!

0

主题

371

帖子

7227

积分

论坛VIP原价+免回复特权

Rank: 8Rank: 8

贡献
0
技术
0
活跃
-1
在线时间
0 小时
发表于 2014-7-2 23:38:04 | 显示全部楼层
谁知盘中餐,发帖真辛苦!

0

主题

185

帖子

528

积分

Mib

Rank: 4

贡献
0
技术
0
活跃
-1
在线时间
0 小时
发表于 2014-7-11 01:10:40 | 显示全部楼层
这个消息太震惊了!

0

主题

666

帖子

3345

积分

论坛VIP原价+免回复特权

Rank: 8Rank: 8

贡献
0
技术
0
活跃
22
在线时间
2 小时
发表于 2014-7-14 05:41:27 | 显示全部楼层
这个你能信?反正我信了!

0

主题

1167

帖子

7964

积分

Yib

Rank: 10Rank: 10Rank: 10

贡献
0
技术
0
活跃
1544
在线时间
106 小时
发表于 2014-7-14 10:08:45 | 显示全部楼层
爱技术,爱实验,尽在三通IT学院!

0

主题

178

帖子

403

积分

Kib

Rank: 3Rank: 3

贡献
0
技术
0
活跃
-2
在线时间
0 小时
发表于 2014-7-16 20:25:56 | 显示全部楼层
坚持学习,成就技术技术之王!

0

主题

735

帖子

9477

积分

论坛VIP原价+免回复特权

Rank: 8Rank: 8

贡献
0
技术
0
活跃
-3
在线时间
0 小时
发表于 2014-7-18 06:26:58 | 显示全部楼层
这个消息太震惊了!

6

主题

405

帖子

2813

积分

Pib

Rank: 8Rank: 8

贡献
0
技术
0
活跃
383
在线时间
73 小时
发表于 2014-7-18 12:37:27 | 显示全部楼层
速度抢沙发,感谢卤煮分享!
使用 高级模式(可批量传图、插入视频等)
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表