一、Hadoop简介

Hadoop最早起源于Nutch。Nutch是一个开源的网络搜索引擎,由Doug Cutting于2002年创建。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引,查询等功能,随着网页抓取数量的增加,遇到严重的可扩展问题,即不能解决数十亿网页的存储和索引的问题,之后,Google发布的两篇论文(The Google File SystemMapReduce: Simplified Data Processing on Large Clusters)为该问题提供了可行的解决方案。

Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序,以流的形式访问(streaming access)文件系统中的数据。

二、Hadoop的优点

Hadoop是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop 是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop 还是可伸缩的,能够处理 PB 级数据。此外,Hadoop 依赖于社区服务器,因此它的成本比较低,任何人都可以使用。

Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点:

⒈高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。

⒉高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。

⒊高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

⒋高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。

Hadoop带有用 Java 语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C、C++。

三 Hadoop架构

Hadoop由两部分组成,分别是分布式文件系统(HDFS)和分布式计算框架MapReduce。其中分布式文件系统(DFS)主要用于大规模数据的分布式存储,而MapReduce则构建在分布式文件系统之上,对于存储在分布式文件系统中的数据进行分布式计算。

在Hadoop中,MapReduce底层的分布式文件系统是独立模块,用户可以按照约定的一套接口实现自己的分布式文件系统,存储在该文件系统上的数据便可以被MapReduce处理。Hadoop默认使用的是分布式文件系统是(Hadoop Distributed File System,Hadoop分布式文件系统),它与MapReduce框架紧密结合。下面首先介绍HDFS,然后介绍MapReduce计算框架。

   1、HDFS架构

HDFS是一个具有高度容错性的分布式文件系统,适合部署在廉价的机器上,HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。架构图 如下图所示:

  

Hadoop部署架构图

HDFS的架构总体上采用了m/S(master/slave)架构,主要有以下几个组件组成:Client、NameNode、Secondary NodeNode和DataNode。

(1)Client

Client(用户)通过NameNode和DataNode交互访问HDFS中的文件。Client提供一个类似POSIX的文件系统接口工用户调用。

(2)NameNode

整个Hadoop集群中只有一个NameNode.它是整个系统的中枢,它负责管理HDFS的目录树和相关文件 元数据信息。这些信息是以“fsimage(HDFS元数据镜像文件)和Editlog(HDFS文件改动日志)两个文件形式存放在本地磁盘,当HDFS重启时冲洗构造出来的。NameNode还负责监控各个DataNode的健康状态,一旦发现某个DataNode损坏,则将DataNode移出HDFS并重新备份其上面的数据。

(3)Secondary NameNode

Secondary Namenode 最重要的任务并不是为NameNode元数据进行热备份,而是定期合并fsimage和edits日志,并传输给NameNode,为了减轻NameNode压力,NameNode自己并不会合并fsimage和edits,并将文件存储到磁盘上,而是交由Secondary NameNode完成。

(4)DataNode

每个Slave节点上安装一个DataNode,它负责实际的数据存储,并将数据信息定期汇报给NameNode。DataNode以固定大小的block为基本单位组织文件内容,block默认大小为64MB(GFS也是64MB)。当用户上传一个大于64MB的文件时,该文件会被切成若干个block,分别存储到不同的DataNode(更容易分布式处理);同时为了数据可靠,会将同一个block以流水线的方式写到若干个(配置中默认为3)不同的DataNode上。

    2、Hadoop MapReduce架构

Hadoop MapReduce也采用Master/Slave(M/S)架构。它主要有以下几个组件组成:Client、ClientTracker、TaskTracker和Task。 

(1)Client

用户编写的MapReduce 程序通过Client 提交到JobTracker 端;同时,用户可通过Client 提供的一些接口查看作业运行状态。在Hadoop 内部用“作业”(Job)表示MapReduce 程序。一个MapReduce 程序可对应若干个作业,而每个作业会被分解成若干个Map/Reduce 任务(Task)。

(2)JobTracker

JobTracker 主要负责资源监控和作业调度。JobTracker 监控所有TaskTracker 与作业的健康状况,一旦发现失败情况后,其会将相应的任务转移到其他节点;同时,JobTracker 会跟踪任务的执行进度、资源使用量等信息,并将这些信息告诉任务调度器,而调度器会在资源出现空闲时,选择合适的任务使用这些资源。在Hadoop 中,任务调度器是一个可插拔的模块,用户可以根据自己的需要设计相应的调度器。

(3)TaskTracker

TaskTracker 会周期性地通过Heartbeat 将本节点上资源的使用情况和任务的运行进度汇报给JobTracker,同时接收JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)。TaskTracker 使用“slot”等量划分本节点上的资源量。“slot”代表计算资源(CPU、内存等)。一个Task 获取到一个slot 后才有机会运行,而Hadoop 调度器的作用就是将各个TaskTracker 上的空闲slot 分配给Task 使用。slot 分为Map slot 和Reduce slot 两种,分别供MapTask 和Reduce Task 使用。TaskTracker 通过slot 数目(可配置参数)限定Task 的并发度。

(4)Task

Task 分为Map Task 和Reduce Task 两种,均由TaskTracker 启动。我们知道,HDFS 以固定大小的block 为基本单位存储数据,而对于MapReduce 而言,其处理单位是split。split 是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等。它的划分方法完全由用户自己决定。但需要注意的是,split 的多少决定了Map Task 的数目,因为每个split 会交由一个Map Task 处理。

  下一节将介绍Hadoop配置文件,然后逐步深入Hadoop内核源码的分析研究。

  本文出处:http://www.cnblogs.com/bester/p/3255307.html

Hadoop学习笔记1---简介 优点 架构分析的更多相关文章

  1. Hadoop学习笔记一(HDFS架构)

    介绍 Hadoop分布式文件系统(HDFS)设计的运行环境是商用的硬件系统.他和现存的其他分布式文件系统存在很多相似点.不过HDFS和其他分布式文件系统的区别才是他的最大亮点,HDFS具有高容错的特性 ...

  2. C# Hadoop学习笔记(二)—架构原理

    一,架构   二.名词解释 (一)NameNode(简称NN),Hadoop的主节点,负责侦听节点是否活跃,对外开放接口等.在未来的大数据处理过程中,由于访问量和节点数量的不断增多,需要该节点的处理能 ...

  3. 九、Hadoop学习笔记————Hive简介

    G级别或者T级别都只能用hadoop

  4. Hadoop学习笔记(6) ——重新认识Hadoop

    Hadoop学习笔记(6) ——重新认识Hadoop 之前,我们把hadoop从下载包部署到编写了helloworld,看到了结果.现是得开始稍微更深入地了解hadoop了. Hadoop包含了两大功 ...

  5. Hadoop学习笔记(1) ——菜鸟入门

    Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...

  6. Hadoop学习笔记(1)(转)

    Hadoop学习笔记(1) ——菜鸟入门 Hadoop是什么?先问一下百度吧: [百度百科]一个分布式系统基础架构,由Apache基金会所开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序. ...

  7. Hadoop学习笔记系列

    Hadoop学习笔记系列   一.为何要学习Hadoop? 这是一个信息爆炸的时代.经过数十年的积累,很多企业都聚集了大量的数据.这些数据也是企业的核心财富之一,怎样从累积的数据里寻找价值,变废为宝炼 ...

  8. Hadoop学习笔记—22.Hadoop2.x环境搭建与配置

    自从2015年花了2个多月时间把Hadoop1.x的学习教程学习了一遍,对Hadoop这个神奇的小象有了一个初步的了解,还对每次学习的内容进行了总结,也形成了我的一个博文系列<Hadoop学习笔 ...

  9. Hadoop学习笔记(2)

    Hadoop学习笔记(2) ——解读Hello World 上一章中,我们把hadoop下载.安装.运行起来,最后还执行了一个Hello world程序,看到了结果.现在我们就来解读一下这个Hello ...

随机推荐

  1. 第八篇 EBS实现企业日常业务运管模型的解决方案设计思路

    常业务运管模型企业有大有小,各行各业,千差万别,但,其日常业务运管也有相通之处,以典型的制造企业为例,其日常业务运管模型如下图所示:       (1)企业日常业务运管模型在市场经济条件下,一个生产型 ...

  2. Qt之等待提示框(QMovie)

    简述 关于gif的使用在实际项目中我用的并不多,因为我感觉瑕疵挺多的,很多时候锯齿比较严重,当然与图存在很大的关系. 关于生成gif的方法可以提供一个网站preloaders,基本是可以满足需求的. ...

  3. ASP.NET 时间方法大全

    DateTime dt = DateTime.Now; //当前时间 DateTime startWeek = dt.AddDays(- Convert.ToInt32(dt.DayOfWeek.To ...

  4. MVC+Ef项目(2) 如何更改项目的生成顺序;数据库访问层Repository仓储层的实现

    我们现在先来看看数据库的生成顺序   居然是 Idal层排在第一,而 web层在第二,model层反而在第三 了   我们需要把 coomon 公用层放在第一,Model层放在第二,接下来是 Idal ...

  5. 转:Emmet:快速编写HTML,CSS代码的有力工具

    http://www.cnblogs.com/xiazdong/p/3562179.html  试着用用

  6. urlrewrite 地址重写

    环境: Maven 3.0.4 Urlrewrite 2.5.2 Myeclipse 8.6.1 借此机会顺便提一下 Maven Project 的创建,会了的朋友或还不想了解 Maven 的朋友,可 ...

  7. java实现的kmp算法

    package DataStructure; import java.util.ArrayList; import java.util.List; //KMP算法的实现 //以下代码由freedom结 ...

  8. (转)Mac OS X写了个rm时将文件放入回收站的小工具

    上次由于公司里机器要面临重装,开始仓皇地将Mac本里的文件scp到我的台式机上.忙乱之中本来要删除一个无用的文件夹的,结果用rm -rf的时候tab了一下,补全出来的文件都没看清就按下了回车,毫无疑问 ...

  9. Linux Shell编程(3):数组

    http://snailwarrior.blog.51cto.com/680306/154704 BASH只支持一维数组,但参数个数没有限制.   声明一个数组:declare -a array (其 ...

  10. ecshop 点购物车弹出提示框

    1.找到common.js在最下面输入以下代码 * 点击购物后弹出提示层 * Chen 2010.7.28 * 参数 cartinfo:购物车信息 */function openDiv_chen(ca ...