免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1663 | 回复: 0

[Hadoop&HBase] hadoop框架的初次探索--沈岩组 [复制链接]

论坛徽章:
0
发表于 2011-12-23 02:39 |显示全部楼层
<DIV>
<DIV class=Section0 style="LAYOUT-GRID:  15.6pt none">
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">数据海啸的出现使得传统的oracle数据库及其它商业数据库收到了相应的冲击。由于google技术上的需要,他们自主研发的MapReduce并行计算框架应运而生,而由于google的该项目并不开源,所以Hadoop诞生了。</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Hadoop是google的云计算的开源的实现,是Apache开源组织的一个分布式框架</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">,本文以hadoop中的HDFS及HBase的相关技术来剖析hadoop的实现</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">。</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Hadoop的使用环境:</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt; TEXT-INDENT: -21.25pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">1)&nbsp;</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">硬件错误是常态而不是异常态。云计算环境有成千上万个server节点,大多数的硬件可能出错的概率较高,所以如何进行错误恢复和检测是hadoop文件系统的技术核心。</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt; TEXT-INDENT: -21.25pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">2)&nbsp;</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">访问文件与其他的应用不同,因为普通的文件访问追求低延迟,而在hadoop中访问文件时,hadoop系统追求的是高吞吐量。</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt; TEXT-INDENT: -21.25pt"><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">3)&nbsp;</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">HDFS</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">以支持大数据集合为目标,一个存储在上面的典型文件大小一般都在千兆至</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">T</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">字节,一个单一</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">HDFS</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">实例应该能支撑数以千万计的文件。</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21.25pt; TEXT-INDENT: -21.25pt"><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">4)&nbsp;</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">移动计算的代价比之移动数据的代价低。一个应用请求的计算,离它操作的数据越近就越高效,这在数据达到海量级别的时候更是如此。将计算移动到数据附近,比之将数据移动到应用所在显然更好,</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">HDFS</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">提供给应用这样的接口。</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">(</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">http://hadoop.apache.org/core/docs/current/hdfs_design.html</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;)</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">HDFS结构</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">HDFS</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">采用</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">master/slave</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">架构。一个</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">HDFS</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">集群是有一个</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Namenode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">和一定数目的</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Datanode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">组成。</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Namenode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">是一个中心服&nbsp;务器,负责管理文件系统的</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">namespace</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">和客户端对文件的访问。</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Datanode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">在集群中分布在各个节点上,负责管理节点上它们附带的存储。在内&nbsp;部,一个文件其实分成一个或多个</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">block</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">,每个块一般在内存当中是</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">128M</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">,所以如果文件中出现了很多的细小的文件的时候,会侵蚀大量的内存空间,这对</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">HDFS非常不利,但是hadoop采用了har归档文件的方式将这些文件放在一个归档文件当中,有效的解决了这个问题,</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">这些</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">block</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">存储在</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Datanode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">集合里。</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Namenode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">执行文件系统的</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">namespace</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">操作,例如&nbsp;打开、关闭、重命名文件和目录,同时决定</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">block</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">到具体</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Datanode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">节点的映射。</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Datanode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">在</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Namenode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">的指挥下进行</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">block</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">的创&nbsp;建、删除和复制。</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Namenode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">和</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Datanode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">都是设计成可以跑在普通的廉价的运行</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">linux</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">的机器上。</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">HDFS</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">采用</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">java</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">语言开发,因此可以部&nbsp;署在很大范围的机器上。一个典型的部署场景是一台机器跑一个单独的</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Namenode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">节点,集群中的其他机器各跑一个</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Datanode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">实例。这个架构并不排&nbsp;除一台机器上跑多个</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Datanode</SPAN><SPAN style="FONT-WEIGHT: normal; FONT-SIZE: 10.5pt; COLOR: rgb(0,0,0); FONT-STYLE: normal; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">,不过这比较少见</SPAN><SPAN><IMG height=435 src="file:///C:/DOCUME~1/shenyan/LOCALS~1/Temp/ksohtml/wps_clip_image-12022.png" width=508></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: 'Times New Roman'; mso-spacerun: 'yes'">&nbsp;</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p15 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: center"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: '黑体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial'; mso-spacerun: 'yes'">图表&nbsp;</SPAN><SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial'; mso-spacerun: 'yes'">1</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: '黑体'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;&nbsp;HDFS<FONT face=黑体>的结构示意图</FONT></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: '黑体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">HDFS保证可靠性的相关措施</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">1)</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">冗余备份,为了容错,文件的所有数据块都会有副本(副本数量就是备份因子)。HDFS都是一次性写入的,保证任何时候都有一个写者。Datanode使用本地文件系统存储HDFS中的数据,他对HDFS一无所知,只用一个一个的文件存储HDFS中的数据块,当Datanode启动的时候,他会遍历HDFS,产生一份HDFS数据块与本地文件的对应关系的报告。并把这个报告给namenode节点,块报告中包含了所有的datanode节点的所有块的列表。</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">2)</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">副本存放,当复制因子是3的时候,hadoop会采用机架感知的策略,将一个副本放在本地的机架里,一个副本放在同一个机架里,一个副本放在不同的机架里。</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="MARGIN-TOP: 6px; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 22px; WIDTH: 184px; POSITION: absolute; HEIGHT: 104px"><IMG height=104 src="file:///C:/DOCUME~1/shenyan/LOCALS~1/Temp/ksohtml/wps_clip_image-2272.png" width=184></SPAN><SPAN style="MARGIN-TOP: 31px; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 309px; WIDTH: 65px; POSITION: absolute; HEIGHT: 69px"><IMG height=69 src="file:///C:/DOCUME~1/shenyan/LOCALS~1/Temp/ksohtml/wps_clip_image-7131.png" width=65></SPAN><SPAN style="MARGIN-TOP: 31px; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 227px; WIDTH: 65px; POSITION: absolute; HEIGHT: 69px"><IMG height=69 src="file:///C:/DOCUME~1/shenyan/LOCALS~1/Temp/ksohtml/wps_clip_image-2035.png" width=65></SPAN><SPAN style="MARGIN-TOP: 7px; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 210px; WIDTH: 184px; POSITION: absolute; HEIGHT: 104px"><IMG height=104 src="file:///C:/DOCUME~1/shenyan/LOCALS~1/Temp/ksohtml/wps_clip_image-32515.png" width=184></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="MARGIN-TOP: 9px; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 129px; WIDTH: 65px; POSITION: absolute; HEIGHT: 69px"><IMG height=69 src="file:///C:/DOCUME~1/shenyan/LOCALS~1/Temp/ksohtml/wps_clip_image-10363.png" width=65></SPAN><SPAN style="MARGIN-TOP: 11px; Z-INDEX: 1; LEFT: 0px; MARGIN-LEFT: 46px; WIDTH: 65px; POSITION: absolute; HEIGHT: 69px"><IMG height=69 src="file:///C:/DOCUME~1/shenyan/LOCALS~1/Temp/ksohtml/wps_clip_image-32271.png" width=65></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">&nbsp;&nbsp;</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p15 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p15 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: center"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial'; mso-spacerun: 'yes'">图表&nbsp;</SPAN><SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial'; mso-spacerun: 'yes'">2</SPAN></SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: '黑体'; mso-spacerun: 'yes'">&nbsp;&nbsp;机架感知的策略</SPAN><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: '黑体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">3)</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">心跳检测</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Namenode<FONT face=宋体>周期性的从</FONT><FONT face="Times New Roman">datanode</FONT><FONT face=宋体>接受心跳包和块报告,收到心跳包说明</FONT><FONT face="Times New Roman">datanode</FONT><FONT face=宋体>工作正常。</FONT><FONT face="Times New Roman">Namenode</FONT><FONT face=宋体>会标记最近没有心跳的</FONT><FONT face="Times New Roman">datanode</FONT><FONT face=宋体>为死机,</FONT><FONT face="Times New Roman">namenode</FONT><FONT face=宋体>会不断的检测这些需要复制的数据块,并在需要的时候重新复制。原因主要是由于</FONT><FONT face="Times New Roman">datanode</FONT><FONT face=宋体>上的节点不可用,数据副本损坏,</FONT><FONT face="Times New Roman">datanode</FONT><FONT face=宋体>节点磁盘错误或复制因子增大等等。</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">分布式结构化数据表<FONT face="Times New Roman">Hbase</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">传统的<FONT face="Times New Roman">SQL</FONT><FONT face=宋体>与</FONT><FONT face="Times New Roman">Hbase</FONT><FONT face=宋体>的区别</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Hadoop<FONT face=宋体>是一个处理数据的框架,比关系型数据库要好很多。</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">1)</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">Hbase<FONT face=宋体>目标是处理大量的非结构化数据,而</FONT><FONT face="Times New Roman">SQL</FONT><FONT face=宋体>是处理大量的结构化数据。</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">2)</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">商业的关系型数据库是非常昂贵的。他们的设计更趋向于扩大规模。为了运行一个更大的数据库,商家不得不为支持一个更大更强健的数据库而购买一个更大的、处理速度更快的服务器。然而,随着数据集合的不断的扩大,高端的服务器已经不能满足数据规模的扩大了,而且在本地磁盘上的查询速度主要与寻道的时间相关,当硬盘容量增加时,寻道时间是制约查询速度的瓶颈,而<FONT face="Times New Roman">hadoop</FONT><FONT face=宋体>是一个具有向外延伸特性的框架结构,如果需要更多的资源,只需要向这个集群里增加更多的廉价的</FONT><FONT face="Times New Roman">PC</FONT><FONT face=宋体>机器就可以了。</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">3)</SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">从电力成本的角度上来说,分布式系统的节能能力要高于<FONT face="Times New Roman">SQL</FONT><FONT face=宋体>系统的节能能力。一台这样的高性能高配置的电脑比四台低端配置的</FONT><FONT face="Times New Roman">PC</FONT><FONT face=宋体>机的能耗要多,这说明昂贵的硬件开销仍然不能够满足实际的需要。</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">4<FONT face=宋体>)关系型数据库是处理数据之间存在依赖关系的数据,而大量的数据类型是相对无关的,比如图片,</FONT><FONT face="Times New Roman">xml</FONT><FONT face=宋体>,文本文档一些实例,大量的数据是无组织的,无结构化的数据。</FONT><FONT face="Times New Roman">Hadoop</FONT><FONT face=宋体>用&nbsp;</FONT><FONT face="Times New Roman">key/value</FONT><FONT face=宋体>的方式,这种方式处理大量的无结构化的数据时就变得很灵活了。</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">5<FONT face=宋体>)查询方式不同。</FONT><FONT face="Times New Roman">SQL</FONT><FONT face=宋体>语言是利用查询语句来对内容进行检索的,而</FONT><FONT face="Times New Roman">hadoop</FONT><FONT face=宋体>是通过编程和脚本来实现对数据的查询与检索的,很多的</FONT><FONT face="Times New Roman">SQL</FONT><FONT face=宋体>使用者不习惯</FONT><FONT face="Times New Roman">hadoop</FONT><FONT face=宋体>的编程模式,但是</FONT><FONT face="Times New Roman">hadoop</FONT><FONT face=宋体>给用户提供了接口,可以使用类似</FONT><FONT face="Times New Roman">SQL</FONT><FONT face=宋体>语言的</FONT><FONT face="Times New Roman">pig</FONT><FONT face=宋体>语言来实现相关的内容检索,让其自动的转换为</FONT><FONT face="Times New Roman">mapreduce</FONT><FONT face=宋体>程序。</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'">6<FONT face=宋体>)</FONT><FONT face="Times New Roman">hadoop</FONT><FONT face=宋体>适合于对于大量数据的脱机处理,而不是对大量数据的在线的交易。</FONT><FONT face="Times New Roman">Hadoop</FONT><FONT face=宋体>不适合于随机读写,实时性能不太好。但是他适合于一次写入,多次读取的数据存储类型。</FONT></SPAN><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P>
<P class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><SPAN style="FONT-SIZE: 10.5pt; FONT-FAMILY: '宋体'; mso-spacerun: 'yes'"></SPAN></P></DIV></DIV>
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP