Hadoop原理

Hadoop原理

转载

jiwang1980 博主文章分类:读书笔记

文章标签 职场 休闲 介绍 hadoop 文章分类 云计算

中文手册

http://hadoop.apache.org/common/docs/r0.20.2/cn/

 

http://arch.huatai.me/?p=347
Tags:,, Posted in 云存储 Leave a Comment

参考

多数商业解决方案要求大量的计算资源类似云计算。通常海量的数据需要传输,并且每个数据项和其他数据 项不相关;这样,可以使用单结构多数据算法(single-instruction multiple-data,SIMD)。 Hadoop Core提供了一个开源云计算框架,类似一个分布式文件系统。

本文翻译自 Pro hadoop Getting started with Hadoop Core 章节。有些细节的地方我还不能完全理解,需要在实践部署中印证(后续系列)。

有关Hadoop中文资料,也可以参考Hadoop官方中文资料(由淘宝技术团队翻译)。

 

MapReduce模块

Hadoop支持MapReduce模 块,这个模块是由google作为一种在廉价主机的大规模群集上解决Petabytes级别(petascale)问题的机制。MapReduce模块对 于一个应用程序基于两个不同的步骤:

  • Map映射是一 个初始化吸收(ingestion)和转换格式(transformation)步骤,这个步骤使不同的输入记录可以并行处理。
  • Reduce简 化是一个聚合(aggregation)或摘要(summarization)步骤,在这个步骤中所有相应的记录必须通过一个单一对象 来一起处理。

在Hadoop中,MapReduce的核心概念是输入可能被分割成为逻辑块,并且每个逻辑块可能通过一个map任务独 立地进行处理。这就导致这些独立处理的逻辑块可以物理分区到不同的数据集,然后再进行排序。每个被排序的逻辑块被传递给一个reduce任务。

MapReduce模 块工作示意图
Hadoop原理_介绍

Map任务可能运行在群集的任何一 个计算节点上,并且多个map任务可能分布在整个群集中并行运行。Map任务负责将输入数据记录转换为key/value数据 对。这些映射的输出将被分区,并且每个分区将被排序。对于每个reduce任务将成为一个分区。每个分区的排序key和value以key为联系由 reduce任务进行处理。这样就可能在群集中并行处理多个reduce任务。
应用程序开发者只需要向Hadoop framework提供4项内容:

  • 对于输入的记录分类并对每个记录转换为一个 key/value 数据对
  • (一个)映射模式
  • (一个)裁减模式
  • 转换 key/value 数据对的分类,这样reduce模块将转为其为输出记录

Google和Yahoo都通过MapReduce群集来处理 peta级别的数据。在2008年早期,google声称通过MapReduce每天处理20 petabytes数据。( http://googleblog.blogspot.com/2008/11/sorting-1pb-with-mapreduce

Hadoop介绍

Hadoop是Apache软件基金会的顶极项目,通过Apache孵化器产生了多个 Hadoop子项目。Hadoop项目提供针对高伸缩性分布式计算的应用程序的框架以支持开源软件开发。Hadoop框架负责处理细节,这样开发者可以专 注在应用程序的逻辑上。
Hadoop Core项目提供了基础服务用于在常规硬件上构建一个云计算环境,并且Hadoop API可以让开发的软件运行在这个云计算平台上。Hadoop Core的两个基础部分是MapReduce框架(云计算环境)和 Hadoop分布式文件系统(HDFS)。
注意:在 Hadoop Core框架中,MapReduce通常称为 mapred, 而 HDFS 通常称为 dfs

Hadoop Core MapReduce框架需要一个共享的文件系 统。这个共享的文件系统不需要是一个系统级别的文件系统,而是通过插件方式提供给框架的一个分布式文件系统。虽然Hadoop Core提供了HDFS,但是HDFS并不是必须的。在Hadoop JIRA跟踪系统中,4686项就是一个分离HDFS称为独立的Hadoop项目的工作。作为HDFS的衍生,Hadoop Core支持云存储文件系统称为 Kosmos ( http://kosmosfs.sourceforge.net/ )和 Amazon S3文件系统(Amazon Simple Storage Service)( http://aws.amazon.com/s3 )。
Hadoop Core框架提供了HDFS,云存储和S3的插件。用户可以自由使用任何分布式文件系统作为一个系统级别可挂载文件系统,例如NFS(Network File System),GFS(Global File System)或Lustre。
由于HDFS可以作为共享文件系统,Hadoop可 以获得数据数据的物理副本的优点,并且可以调度任务来读取数据和运行在分布主机上。(此句翻译不确定

Hadoop Core MapReduce

Hadoop分布式文件系统(Hadoop Distributed File System, HDFS)MapReduce环 境提供给用户一个精密的框架来管理map和reduce任务在一个群集中的执行过程。用户需要告知框架以下内容:

  • 在任务输入的分布式文件系统的位置
  • 在任务输出的文件系统的位置
  • 输入的格式
  • 输出的格式
  • 包含map功能的类
  • 可选的,包含reduce功能的类
  • 包含map和reduce功能以及任何支持类型的JAR文件

如果一个任务不需要reduce功能,用户可以不设置reducer类, 并且一个reduce处理任务不会执行。MapReduce框架会对输入进行分区,并且在群集中调度和执行map任务。如果需要,MapReduce将排 序map任务的结果并对map的输出执行reduce任务。最终的输出将移至输出目录,并且任务状态将报告给用户。
MapReduce是面向key/value数 据对的。该框架将转换每个输入记录到一个key/value数据对,并且每个数据对之输入到map功能一次。这个map的输出 是一个key/value数据对的集合--通常是一个转换后的输入数据对,但是它会准确地被接收为输出的多数据对。这个map 的输出数据对是组合的,并且通过key进行排序。这个reduce功能按key排序的顺序为每个key调用一次,并且这些数据集共享这个key。
这 个reduce方式可能输出一个任意的key/value数据对数值,这个数值记录到任务输出目录的输出文件中。如果 reduce输出key和reduce输入key一致,则最终输出是排序过的。
这个MapReduce框架提供了处理MapReduce任务的管 理的两个过程:

  • TaskTracker 管理集群节点中不同map和reduce任务的执行
  • JobTracker 接收任务分发,提供任务监视和控制,并且管理任务分发给各个TaskTracker节点

总之,每个群集有一个JobTracker进 程和一个或多个TaskTracker运行在群集的各个节点。JobTracker是一个故障单点,而JobTracker将通过不同的TrakTracker进 程来克服故障。
注意:Hadoop Core MapReduce环境的一个优点是可以在一个任务执行过程中向群集添加TaskTracker节 点,并且任务会分发到这个这个新节点。

Hadoop分布式文件系统

HDFS是一个设计用于需要读取大量输入数据块,并处理数据 快,然后写入大型数据快的MapReduce任务的一种文件系统。
HDFS不能很好地处理随机读写的任务。
为 了可靠,文件数据被简单地复制到多个存储节点。这个过程在Hadoop中称为复制(replication)。只要一个数据块的最后一个副本存在,数据的 用户就不会知晓存储服务器的故障。
HDFS服务通过以下两个过程提供:

  • NameNode负责处理文件系统元数据 (metadata)管理,和提供服务的管理和控制。
  • DataNode提供数据块存储和相关服务。

在一个 HDFS文件系统中会有一个NameNode进程,并且这是一个单点故障。Hadoop Core提供了NameNode的故障恢复和自动备份机制,但是 不是热故障恢复服务。在群集中可以有多个DataNode进程,通常每个群集节点会运行一个DataNode进程。
注意:通 常群集中会有一个节点同时提供TaskTracker服务和DataNode服务,同时也有一个节点同时提供JobTracker和NameNode服 务。

  • 收藏
  • 评论
  • 举报

上一篇:mysql开发培训又一则

下一篇:牛人博客

提问和评论都可以,用心的回复会被更多人看到 评论
发布评论
相关文章

举报文章

请选择举报类型

内容侵权 涉嫌营销 内容抄袭 违法信息 其他

具体原因

包含不真实信息 涉及个人隐私

补充说明

0/200

上传截图

格式支持JPEG/PNG/JPG,图片不超过1.9M

已经收到您得举报信息,我们会尽快审核