引言
最知名的云计算开源系统Hadoop模仿和实现了Google云计算的主要功能。随着云计算的逐渐流行,这一项目被越来越多的个人和企业所运用。HDFS、MapReduce和HBase为Hadoop的核心,它们对应了Google云计算最核心技术GFS、MapRe-duce和Bigtable的开源实现。
主节点包括NameNode、SecondaryNameNode和Jobtracker守护进程(即所谓的主守护进程),其余是为演示管理集群所用的节点(使用Hadoop实用程序和浏览器)。从节点包括DataNode和Tasktracker(从属守护进程)。两种设置的不同之处在于:主节点包括提供Hadoop集群管理和协调的守护进程,而从节点包括实现Hadoop文件系统。
目前此项目正在进行中,虽然现在还没有到达1.0版本,和Google系统还有很大差距,但是前景非常好,值得关注。
1 HDFS
当一个数据集容量超过一个独立物理机的存储能力时,把数据集通过大量的机器进行分布是十分必要的。文件系统称做分布式文件系统,它跨网络进行存储管理。因为是基于网络的,所以会带来很多复杂的网络编程问题。这使得分布式文件系统比起常规的文件系统要复杂得多。例如,其中一个重要的挑战就是文件系统容忍节点错误的同时不丢失数据。
Hadoop有一个称为HDFS (hadoop distributedfilesystem)的分布式文件系统,它是Hadoop的期间文件系统。
1.1设计前提与目标
HDFS的设计前提与目标如下:
(1)硬件错误可能经常出现,其属于常态并非异常。HDFS允许硬件出故障,HDFS的最核心设计目标就是错误检测并快速自动恢复。
(2)流式数据访问。流式读为主HDFS上的应用的主要处理方式。支持批量处理,高吞吐量是数据访问的关注重点。
(3)超大规模数据集。TB级或者PB级是HDFS的一般企业级的文件规模。HDFS支持大文件存储,提高数据传输带宽。单一的HDFS实例可以支撑数以千万计的文件,而且可以在一个集群中扩展到几百个节点。
(4)简单一致性模型。对文件实行一次性写、多次读的访问模式,是HDFS的应用程序常用的处理方式。文件建立之后,数据写入完成之后就不再做更改。解决了数据一致性问题,吞吐量问题也得以解决。
(5)移动计算比移动数据更简单。移动数据比移动计算在大文件上来的代价更高。操作海量数据的时候效果愈加明显,这样可以提高系统的吞吐量和减少网络的拥塞。
(6)异构软硬件平台间的可移植性。可移植性使得HDFS可以作为适应性很强的大规模数据应用平台。
1.2体系结构
HDFS是一个管理者一工作者结构的体系。HDFS集群由一个NameNode(管理者)和一些DataNode(工作者)组成。NameNode管理文件系统的元数据,DataNode存储实际的数据。客户端通过NameNode和DataNode交互访问这个文件系统。客户端联系NameNode以获取文件的元数据,而真正的文件I/O操作是直接和DataNode进行交互的。
NameNode维护文件系统树和这个树中所有的文件和目录。NameNode也记录着每个文件的每个DataNode块所在的位置,然而,它并不永久性地存储块的位置信息。因为在系统重启时,这些信息会由DataNode重新建立。
DataNode是分布式文件系统的工作者,负责它们所在的物理节点上的存储管理。这些节点在客户端或者NameNode需要时起到存储和检索的作用,并且把它们存储的块的信息通过块清单的方式周期性地回馈给NameNode。
图一是HDFS的结构示意图。例如客户端要访问一个文件,客户端从NameNode获得组成文件的数据块的位置列表,也就是要知道数据块被存储在哪些DataNode上;然后,客户端直接从DataNode上读取文件数据。NameNode不参与文件的传输。
图一HDFS的结构示意图
1.3保障可靠性的措施
HDFS的主要设计目标之一就是在故障情况下也能保证数据存储的可靠性。HDFS具备了较为完善的冗余备份和故障恢复机制,可以实现将海量文件存储在集群中,并保证其可靠性。
(1)冗余备份。HDFS将文件按数据块(Block)存储,默认块大小为64MB(可配置),并采取了一系列的容错处理。
(2)副本存放。通常情况下,副本的存放策略很关键,机架内节点之间的带宽比跨机架节点之间的带宽要大。它能影响HDFS的可靠性和性能。图三体现了复制因子为3的情况下,各数据块的分布情况。
(3)心跳检测。集群中的每个DataNode周期性地向NameNode发送心跳包和块报告。如果正确接收到心跳包,则证明该DataNode工作没有异常。
(4)安全模式。启动系统时,NameNode首先进入一个安全模式。此时不会出现数据块的写操作。NameNode会收到各个DataNode拥有的数据块列表对它的数据块报告,所有的数据块信息被NameNode获取。
图二复制因子为3时数据块分布情况图
(5)数据完整性检测。多种原因会造成从DataNode获取的数据块有可能是损坏的。对文件内容的校验和检查,由HDFS客户端软件完成。如果校验出异常,客户端就会认为数据块有损坏,将从其他DataNode取得该数据分块的副本。
(6)空间回收。主要处理被删除文件的临时存放问题,保证其在一定的时间内还可以被恢复,超过时限,则释放相应数据块。
(7)元数据磁盘失效。HDFS的核心数据结构是映像文件和事务日志。假如这些文件遭到损坏,HDFS将会变得不可用。当NameNode重新启动的时候,总是选择最新的一致的映像文件和事务日志。在HDFS集群中NameNode是单点存在的,如果它出现故障,必须手动干预。目前,还不支持自动重启或者切换到另外的NameNode。
(8)快照。快照支持对某个时间数据的复制,可以在HDFS数据被损坏时,利用回滚处理回到过去一个已知正确的时间点。但是目前HDFS不支持快照功能。
2 MapReduce
Google的MapReduce编程模型可以通过Hadoop实现。Hadoop的核心是MapReduce.而MapReduce实际上是一种分布式计算模型。MapReduce是开源平台,所有用户都可以免费使用这个框架并进行并行编程。使用该模型,分布式并行程序的编写变得非常简单。
Hadoop Map/Reduce框架是一个主/从架构。它包括一个Jobtracker和若干Tasktracker(集群中每个节点都有一个Tasktracker)。Jobtracker是用户和MapReduce框架之间的交互点。Tasktracker按照Jobtracker的指令执行任务并处理map阶段到re-duce阶段的数据转移。
MapReduce作业(Job)是客户端执行的单位,它包括了输入数据、MapReduce程序和配置信息。Hadoop通过把一个作业分成若干个小任务(Task)来处理,其包括两种类型的任务:Map任务和Reduce任务。有两种类型的节点控制着作业执行过程:Jobtracker和多个Tasktracker。Jobtracker通过调度任务在Tasktracker上运行,来协调所有运行在系统上的作业。Tasktracker运行任务的同时,把进度报告传送到Jobtracker,Jobtracker则记录着每项任务的整体进展情况。如果其中一个任务失败,Jobtracker可以重新调度任务到另外一个Tasktracker。
核心关注:拓步ERP系统平台是覆盖了众多的业务领域、行业应用,蕴涵了丰富的ERP管理思想,集成了ERP软件业务管理理念,功能涉及供应链、成本、制造、CRM、HR等众多业务领域的管理,全面涵盖了企业关注ERP管理系统的核心领域,是众多中小企业信息化建设首选的ERP管理软件信赖品牌。
转载请注明出处:拓步ERP资讯网http://www.toberp.com/
本文标题:Hadoop的核心技术研究或概述