首页 大数据百科正文

一页纸精华丨Hadoop概览

每一个知道大数据的人都听说过Hadoop,作为基础框架,其凭借着低成本、高可靠、高扩展、高有效、高容错等特性成为最流行的大数据分析系统。要入门大数据,最好的办法就是理清Hadoop的生态系统。

Hadoop是Apache软件基金会的顶级开源项目,是由原雅虎公司Doug Cutting根据Google发布的学术论文而创建的开源项目。Doug Cutting被称为Hadoop之父,他打造了目前在云计算和大数据领域里如日中天的Hadoop。

Hadoop的发音是[hædu:p],Hadoop 这个名字不是一个缩写,而是一个虚构的名字。Doug Cutting解释Hadoop的得名:“这个名字是我孩子给一个棕黄色的大象玩具命名的。我的命名标准就是简短、容易发音和拼写,没有太多的意义,并且不会被用于别处,小孩子恰恰是这方面的高手”。

Apache Hadoop官方定义是:Hadoop项目™®是一套可靠的,可扩展的,支持分布式计算的开源软件。

Hadoop是一个基础框架,允许用简单的编程模型在计算机集群对大型数据集使进行分布式处理。它的设计规模从单一服务器到数千台机器,每个都提供本地计算和存储,框架本身提供计算机集群高可用的服务而不是依靠硬件来提供高可用性。用户可以在不了解分布式底层细节的情况下,轻松地在Hadoop上开发和运行处理海量数据的应用程序,低成本、高可靠、高扩展、高有效、高容错等特性让Hadoop成为最流行的大数据分析系统。

Hadoop特点:

Hadoop是一个能够对大量数据进行分布式处理的软件框架,它是以一种可靠、高效、可伸缩的方式进行数据处理。

Hadoop 是可靠的,它假设计算元素和存储会失败,因此它维护多个数据副本,确保能够针对失败的节点重新分布处理。

Hadoop 是高效的,它以并行的方式工作,通过并行处理加快处理速度。

Hadoop 还是可伸缩的,能够处理PB级数据。

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

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

Hadoop 依赖于社区服务,它的成本比较低。

Hadoop版本演进

当前Hadoop有两大版本:Hadoop 1.0和Hadoop 2.0,如下图所示。

Hadoop版本演进图

Hadoop1.0被称为第一代Hadoop,由分布式文件系统HDFS和分布式计算框架MapReduce组成,其中,HDFS由一个NameNode和多个DataNode组成,MapReduce由一个JobTracker和多个TaskTracker组成,对应Hadoop版本为0.20.x、0.21.X,0.22.x和Hadoop 1.x。其中0.20.x是比较稳定的版本,最后演化为1. x,变成稳定版本。0.21.x和0.22.x则增加了NameNode HA等新特性。

第二代Hadoop被称为Hadoop2.0,是为克服Hadoop 1.0中HDFS和MapReduce存在的各种问题而提出的,对应Hadoop版本为Hadoop 0.23.x和2.x。

针对Hadoop1.0中NameNode HA不支持自动切换且切换时间过长的风险,Hadoop2.0提出了基于共享存储的HA方式,支持失败自动切换切回。

针对Hadoop 1.0中的单NameNode制约HDFS的扩展性问题,提出了HDFS Federation机制,它允许多个NameNode各自分管不同的命名空间进而实现数据访问隔离和集群横向扩展。

针对Hadoop 1.0中的MapReduce在扩展性和多框架支持方面的不足,提出了全新的资源管理框架YARN,它将JobTracker中的资源管理和作业控制功能分开,分别由组件ResourceManager和ApplicationMaster实现。其中,ResourceManager负责所有应用程序的资源分配,而ApplicationMaster仅负责管理一个应用程序。相比于 Hadoop 1.0,Hadoop 2.0框架具有更好的扩展性、可用性、可靠性、向后兼容性和更高的资源利用率以及能支持除了MapReduce计算框架外的更多的计算框架,Hadoop 2.0目前是业界主流使用的Hadoop版本。(牛家浩)

责任编辑:王培

分享:
延伸阅读