400-685-0732

WJMonitor舆情之声

企业大数据智能舆情监测管理解决方案

全网监测海量数据按需发布监测预警

实时把握舆情动态精准追溯信息源头

获取验证码
企业采购 个人使用
当前位置: 首页 > SEO博客 > hadoop生态系统

hadoop生态系统

时间:2014-08-05 11:50:05

一、概述


现在大数据很“热”,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中各种产品的相互关系。


三、结构


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的,这对开源软件相当不易。
分享按钮