hadoop2.0介绍(一)

一、概述

现在大数据很“热”,hadoop系列(也称为The Hadoop Project Ecosystem)东西随着也很“热”,不过hadoop也确实有此“资本”,hadoop起源于google的产品,本身就是为海量数据量身定做的。Hadoop大致在2005-2006年成形,经过几年的发展,估计明年能出2.0正式版。2.0版与1.0版有比较大的区别(开源产品的硬伤:随意性比较大),具体来说,2.0主要解决如下问题:
  1. 单个NameNode问题
  2. MapReduce的适应性不广(例如实时性要求、迭代处理要求等),扩展不好

本文是对hadoop系列产品的一般性介绍,1.0就不提了,主要依据2.0 beta版,文章主要的参考资料为apache官网以及hortonworks的相关文档(关于hortonworks,请参阅下文)。


二、hadoop生态系统(The Hadoop Project Ecosystem)

Hadoop本身有如下内容:
  • Hadoop Common: hadoop的基础
  • Hadoop Distributed File System (HDFS): 分布式文件系统
  • Hadoop YARN: 集群任务资源管理及任务调度的框架
  • Hadoop MapReduce: 基于YARN的分布式计算
与hadoop相关的产品大致上分为两大部分:数据服务(Data Services)和运行维护(Operational Services)。
与数据服务相关的产品有:
  • HBase: 将文件建于HDFS上的分布式Key-Value数据库
  • Hive: 有比较友好接口(相对来讲)的数据仓库,它实际上是基于MapReduce的一个应用。
  • Pig™:它使用一个叫做“Pig Latin”的东西来作为用户交互语言,底层依然是MapReduce。它与Hive有类似之处,都是用来做大数据处理,但它似乎比Hive要简单一些,没有“存储”的概念(metadata,“表”等), 接口也少。
  • HCatalog:这是一个hadoop数据管理层,你可以用Hive, Pig , MapReduce等来存取hadoop的数据,而不用关心这些数据是如何存储的。
其他还有Sqoop、flume。
与运行维护相关的产品有:
  • Ambari: 一个基于web应用的hadoop及若干相关产品的运维工具。
  • Oozie:是一个Java应用,可以用来管理hadoop中job。
  • ZooKeeper™:分布式应用协调器(见作者相关翻译文章)。
其他相关产品/项目:
  • Avro: 类似于thrift,protobuf的数据传输系统(此系统的发展前景不甚明朗)
  • Mahout™: 机器学习和数据挖掘的东西,似乎不太有名。
总之,hadoop系列产品太多了,几乎包含了大数据应用的方方面面,这些产品在2.0的思路下有些也许会有较大的变化,所以如果是准备应用它们,应当谨慎一些。

下图来自于”Apache Hadoop YARN”一书,它显示了Hadoop Project Ecosystem中各种产品的相互关系。

hadoop2.0介绍(一)_第1张图片

三、结构

Hadoop实际上包含两部分:分布式文件系统(HDFS)与分布式计算系统(MapReduce)。

1. HDFS Federation

从名字变化可以看出,HDFS更加集群化了。HDFS包含两部分:

  • Namespace(命名空间):这个是2.0的东西,引入命名空间可以使HDFS的适应性更广了。具体来说,这样的扩展比以前的方式有3点好处:
  1. namenode可以水平扩展了,使handoop可以处理很多小文件这种应用了。
  2. 提高了性能,以前每次读取block时,都需要从单一的namenode上读取其信息,现在namenode的负荷拆分了。
  3. 提供了隔离性,不同的应用和用户可以分配到不同的namenode上,即使不适当的应用拖垮一个namenode也不会影响其他的namenode。
  • Block Storage Service(块存储服务):这个东西从概念上没有变化,可能是细节的调整,块管理在Namenode上做,实际的存储在datanode上。

下图是一个namenode与datanode的关系图。Namenode之间是独立的,一个失效/删除,另一个不受影响,4个datanode为各namenode提供实际的存储服务。

一个比较好的事情是2.0的配置是back-compatible的,这对开源软件相当不易。


(未完)

你可能感兴趣的:(hadoop2.0介绍(一))