现在的位置: 首页 > 大数据 > hadoop > 正文
hadoop系列之一:Hadoop简介
2014年03月24日 hadoop, 大数据 ⁄ 共 2646字 暂无评论 ⁄ 被围观 4,456 views+

Apache Hadoop是一款支持数据密集型分布式应用并以Apache 2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop是根据Google公司发表的MapReduce和Google档案系统的论文自行实作而成。

Hadoop框架透明地为应用提供可靠性和数据移动。它实现了名为MapReduce的编程范式:应用程序被分割成许多小部分,而每个部分都能在集群中的任意节点上执行或重新执行。此外,Hadoop还提供了分布式文件系统,用以存储所有计算节点的数据,这为整个集群带来了非常高的带宽。MapReduce和分布式文件系统的设计,使得整个框架能够自动处理节点故障。它使应用程序与成千上万的独立计算的电脑和PB级的数据。现在普遍认为整个Apache Hadoop“平台”包括Hadoop内核、MapReduce、Hadoop分布式文件系统(HDFS)以及一些相关项目,有Apache Hive和Apache HBase等等。

HDFS简介

HDFS,即Hadoop Distributed File System (Hadoop分布式文件系统), HDFS具有高容错性,并且可以被部署在低价的硬件设备之上。HDFS很适合那些有大数据集的应用,并且提供了对数据读写的高吞吐率。HDFS是一个master/slave的结构,就通常的部署来说,在master上只运行一个Namenode,而在每一个slave上运行一个Datanode。

HDFS支持传统的层次文件组织结构,同现有的一些文件系统在操作上很类似,比如你可以创建和删除一个文件,把一个文件从一个目录移到另一个目录,重命名等等操作。Namenode管理着整个分布式文件系统,对文件系统的操作(如建立、删除文件和文件夹)都是通过Namenode来控制。

但需注意,HDFS只支持写入、删除等基本操作,并不支持修改等复杂操作,不支持随机方访问。而且所有操作都是基于API的。

后面介绍的HBase就是运行在HDFS之上的列式存储。可以实现随机读写等复杂操作,因此能实现将日志等直接放入HBase上。

HDFS的架构

主从结构

  • 主节点,只有一个: namenode
  • 从节点,有很多个: datanodes

注:hadoop 0.23引入了名称节点高可用机制:设置两个名称节点工作于主备模型,主节点故障时,其所有服务转移至备用节点。

namenode负责:

  • 接收用户操作请求
  • 维护文件系统的目录结构
  • 管理文件与block之间关系,block与datanode之间关系

datanode负责:

  • 存储文件
  • 文件被分成block存储在磁盘上
  • 为保证数据安全,文件会有多个副本

image

从上面的图中可以看出,Namenode,Datanode,Client之间的通信都是建立在TCP/IP的基础之上的。当Client要执行一个写入的操作的时候,命令不是马上就发送到Namenode,Client首先在本机上临时文件夹中缓存这些数据,当临时文件夹中的数据块达到了设定的Block的值(默认是64M)时,Client便会通知Namenode,Namenode便响应Client的RPC请求,将文件名插入文件系统层次中并且在Datanode中找到一块存放该数据的block,同时将该Datanode及对应的数据块信息告诉Client,Client便这些本地临时文件夹中的数据块写入指定的数据节点。

HDFS采取了副本策略,其目的是为了提高系统的可靠性,可用性。HDFS的副本放置策略是三个副本,一个放在本节点上,一个放在同一机架中的另一个节点上,还有一个副本放在另一个不同的机架中的一个节点上。

MapReduce简介

MapReduce是Google 的一项重要技术,它包含三个层面的概念:

MapReduce API:一个编程模型,用以进行大数据量的计算。

对于大数据量的计算,通常采用的处理手法就是并行计算。至少现阶段而言,对许多开发人员来说,并行计算还是一个比较遥远的东西。MapReduce就是一种简化并行计算的编程模型,它让那些没有多少并行计算经验的开发人员也可以开发并行应用。

MapReduce Runtime Environment:上述模型的实际运行环境。

MapReduce Implementation:实现!

MapReduce的名字源于这个模型中的两项核心操作:Map(映射)和 Reduce(化简)。也许熟悉Functional Programming(函数式编程)的人见到这两个词会倍感亲切。简单的说来,Map是把一组数据一对一的映射为另外的一组数据,其映射的规则由一个函数来指定,比如对[1, 2, 3, 4]进行乘2的映射就变成了[2, 4, 6, 8]。Reduce是对一组数据进行归约,这个归约的规则由一个函数指定,比如对[1, 2, 3, 4]进行求和的归约得到结果是10,而对它进行求积的归约结果是24。

可以这样理解,MapReduce只能处理键值对数据,而Map的过程就是实现将数据转换为键值对的过程。只有Map完成后再进行Reduce。

MapReduce的架构

主从结构

  • 主节点,只有一个: JobTracker    (相当于项目经理
  • 从节点,有很多个: TaskTrackers (相当于开发人员

JobTracker负责:

  • 接收客户提交的计算任务
  • 把计算任务分给TaskTrackers执行
  • 监控TaskTracker的执行情况

TaskTrackers负责:

  • 执行JobTracker分配的计算任务

MapReduce作业过程:

image

注:同一个键总是发往同一个Reducer。

MapReduce的数据流:

image

Hadoop的特点

  • 扩容能力(Scalable):能可靠地(reliably)存储和处理千兆字节(PB)数据(加机器就行)。
  • 成本低(Economical):可以通过普通机器组成的服务器群来分发以及处理数据。这些服务器群总计可达数千个节点(运行处理的机器配置要求低)。
  • 高效率(Efficient):通过分发数据,hadoop可以在数据所在的节点上并行地(parallel)处理它们,这使得处理非常的快速(并行处理)。
  • 可靠性(Reliable):hadoop能自动地维护数据的多份副本,并且在任务失败后能自动地重新部署(redeploy)计算任务(副本维护)。

 

传统关系型数据库是个人英雄,Hadoop是团队作战。

Hadoop主要特点是分布式并行处理。

Hadoop集群结构

Hadoop集群的物理分布

image

单节点物理结构:

image

给我留言

留言无头像?


×