Hadoop基本概念 - omigaw/spring- GitHub Wiki

一、Hadoop简介

Hadoop是一个由Apache基金会所开发的分布式系统基础架构,它可以使用户在不了解分布式底层细节的情况下开发分布式程序,充分利用集群的威力进行高速运算和存储。从其定义就可以发现,它解决了两大问题:大数据存储、大数据分析。也就是Hadoop的两大核心:HDFS和MapReduce。 1.HDFS是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储。 2.MapReduce为分布式计算框架,包含map(映射)和reduce(归约)过程,负责在HDFS上进行计算。 Hadoop是一个能够让用户轻松架构和使用的分布式计算的平台。用户可以轻松地在Hadoop发和运行处理海量数据的应用程序。其优点主要有以下几个:

  • 高可靠性:Hadoop按位存储和处理数据的能力值得人们信赖。
  • 高扩展性:Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点。
  • 高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
  • 高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
  • 低成本:与一体机、商用数据仓库以及QlikView、Yonghong、Z-Suites等数据集市相比,Hadoop是开源的,项目的软件成本因此会大大降低。 Hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上是十分理想的,Hadoop上的应用程序也可以使用其他语言编写,比如C++。

二、Hadoop存储——HDFS

Hadoop的存储系统是HDFS分布式文件系统,对外部客户端而言,HDFS就像一个传统的分级文件系统,可以进行创建、删除、移动或重命名文件或文件夹等操作,与Linux文件系统类似。

  • 名称节点(NameNode) 它是一个通常在HDFS架构中单独机器上运行的组件,负责管理文件系统名称空间和控制外部客户机的访问。NameNode决定是否将文件映射到DataNode上的复制块上。对于最常见的3个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。
  • 数据节点(DataNode) 数据节点也是一个通常在HDFS架构中的单独机器上运行的组件。Hadoop集群包含一个NameNode和大量DataNode。数据节点通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。数据节点响应来自HDFS客户机的读写请求。它们还响应来自NameNode的创建、删除和复制块的命令。名称节点依赖来自每个数据节点的定期心跳消息。每条消息都包含一个块报告,名称节点可以根据这个报告验证块映射和其他文件系统元数据。如果数据节点不能发送心跳消息,名称节点将采取修复措施,重新复制在该节点上丢失的块。
  • 第二名称节点(Secondary NameNode) 第二名称节点的作用在于为HDFS中的名称节点提供一个CheckPoint,它只是名称节点的一个助手节点,这也是它在社区内被认为是CheckPoint Node的原因。

三、Hadoop计算——MapReduce

一般的MapReduce程序会经过以下几个过程:输入(Input)、输入分片(Splitting)、Map阶段、Shuffle阶段、Reduce阶段、输出(Final result)。

四、Hadoop资源管理——YARN

当MapReduce发展到2.x时就不使用JobTracker来作为自己的资源管理框架,而选择使用YARN。如果使用JobTracker来作为Hadoop集群的资源管理框架的话,那么除了MapReduce任务以外,不能够运行其他任务。也就是说,如果我们集群的MapReduce任务并没有那么饱满的话,集群资源等于是白白浪费的。所以提出了另外的一个资源管理架构YARN。这里需要注意,YARN不是JobTracker的简单升级,而是"大换血"。同时Hadoop2.X也包含了此架构。Apache Hadoop2.X项目包含以下模块。

  • Hadoop Common:为Hadoop其他模块提供支持的基础模块。
  • HDFS:Hadoop分布式文件系统。
  • YARN:任务分配和集群资源管理框架。
  • MapReduce:并行和可扩展的用于处理大数据的模式。

五、Hadoop生态系统

  • HBase hBase是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
  • Hive Hive是建立在Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。
  • Pig
  • Sqoop
  • Flume
  • Oozie
  • Chukwa
  • Zookeeper
  • Avro
  • Mahout