hadoop

作者: 大诗兄_zl | 来源:发表于2018-02-23 10:46 被阅读16次

    Hadoop的起源
    Doug Cutting是Hadoop之父 ,起初他开创了一个开源软件Lucene(用Java语言编写,提供了全文检索引擎的架构,与Google类似),Lucene后来面临与Google同样的错误。于是,Doug Cutting学习并模仿Google解决这些问题的办法,产生了一个Lucene的微缩版Nutch。

     后来,Doug Cutting等人根据2003-2004年Google公开的部分GFS和Mapreduce思想的细节,利用业余时间实现了GFS和Mapreduce的机制,从而提高了Nutch的性能。由此Hadoop产生了。
    
      Hadoop于2005年秋天作为Lucene的子项目Nutch的一部分正式引入Apache基金会。2006年3月份,Map-Reduce和Nutch Distributed File System(NDFS)分别被纳入Hadoop的项目中。 
      关于Hadoop名字的来源,是Doug Cutting儿子的玩具大象。
    

    Hadoop是什么?
    Hadoop是一个开源框架,可编写和运行分布式应用处理大规模数据。 Hadoop框架的核心是HDFS和MapReduce。其中 HDFS 是分布式文件系统,MapReduce 是分布式数据处理模型和执行环境。

    在一个宽泛而不断变化的分布式计算领域,Hadoop凭借什么优势能脱颖而出呢?
    1. 运行方便:Hadoop是运行在由一般商用机器构成的大型集群上。Hadoop在云计算服务层次中属于PaaS(Platform-as-a- Service):平台即服务。
    2. 健壮性:Hadoop致力于在一般的商用硬件上运行,能够从容的处理类似硬件失效这类的故障。
    3. 可扩展性:Hadoop通过增加集群节点,可以线性地扩展以处理更大的数据 集。
    4. 简单:Hadoop允许用户快速编写高效的并行代码。

    Hadoop2.0时代的生态系统如下:


    image.png

    HDFS(分布式文件系统)

      HDFS源自于Google发表于2003年10月的GFS论文,也即是说HDFS是GFS的克隆版。此处只是HDFS的概述,更多详细的深入剖析,我将在后续的微信公众号博文里写出。
    

    HDFS具有如下特点:
    良好的扩展性

    高容错性

    适合PB级以上海量数据的存储

    HDFS的基本原理
    将文件切分成等大的数据块,存储到多台机器上

    将数据切分、容错、负载均衡等功能透明化

    可将HDFS看成容量巨大、具有高容错性的磁盘

    Yarn(资源管理系统)
    Yarn是Hadoop2.0新增的系统,负责集群的资源管理和调度,使得多种计算框架可以运行在一个集群中。 此处只是YARN的概述,更多详细的深入剖析,我将在后续的微信公众号博文里写出。

    Yarn具有如下特点:
    良好的扩展性、高可用性

    对多种数据类型的应用程序进行统一管理和资源调度

    自带了多种用户调度器,适合共享集群环境

    MapReduce(分布式计算框架)
    MapReduce源自于Google发表于2004年12月的MapReduce论文,也就是说,Hadoop MapReduce是Google MapReduce的克隆版。此处只是MapReudce的概述,更多详细的深入剖析,我将在后续的微信公众号博文里写出。

    MapReduce具有如下特点:
    良好的扩展性

    高容错性

    适合PB级以上海量数据的离线处理

    Hive(基于MR的数据仓库)
    Hive由facebook开源,最初用于解决海量结构化的日志数据统计问题;是一种ETL(Extraction-Transformation-Loading)工具。它也是构建在Hadoop之上的数据仓库;数据计算使用MR,数据存储使用HDFS,数据的元数据是存储在MySQL里(或者你可以使用如Orcal等其他,我这里仅仅举个例子)。

    Hive定义了一种类似SQL查询语言的HiveQL查询语言,除了不支持更新、索引和实物,几乎SQL的其他特征都能支持。它通常用于离线数据处理(MapReduce);我们可以认为Hive的HiveQL语言是MapReduce语言的翻译器,把MapReduce程序简化为HiveQL语言。但有些复杂的MapReduce程序是无法用HiveQL来描述的。
    
    Hive提供shell、JDBC/ODBC、Thrift、Web等接口。
    
    ![image.png](https://img.haomeiwen.com/i2219734/1528696ed0cfe539.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    

    Pig(数据仓库)
    Pig由yahoo!开源,设计动机是提供一种基于MapReduce的ad-hoc数据分析工具。它通常用于进行离线分析。

    Pig是构建在Hadoop之上的数据仓库,定义了一种类似于SQL的数据流语言–Pig Latin,Pig Latin可以完成排序、过滤、求和、关联等操作,可以支持自定义函数。Pig自动把Pig Latin映射为MapReduce作业,上传到集群运行,减少用户编写Java程序的苦恼。
    
    Pig有三种运行方式:Grunt shell、脚本方式、嵌入式。
    

    Mahout(数据挖掘库)
    Mahout是基于Hadoop的机器学习和数据挖掘的分布式计算框架。它实现了四大算法:推荐、聚类、分类、回归。当然,现在,一般对于如果做机器学习这块的话,则有了Spark Mllib和Python来做,最近火的深度学习等框架。

    对于Spark Mllib方面的机器学习,可以跟我一起来探讨。我目前机器学习主要是偏向这块,以后会逐渐过渡到主流的机器学习和深度学习上
    

    HBase(分布式数据库)
    HBase源自Google发表于2006年11月的Bigtable论文。也就是说,HBase是Google Bigtable的克隆版。HBase可以使用shell、web、api等多种方式访问。它是NoSQL的典型代表产品。

    HBase的特点
    高可靠性

    高性能

    面向列

    良好的扩展性

    Zookeeper(分布式协作服务)
    Zookeeper源自Google发表于2006年11月的Chubby论文,也就是说Zookeeper是Chubby的克隆版。

    Zookeeper解决分布式环境下数据管理问题:
    

    统一命名

    状态同步

    集群管理

    配置同步

    Zookeeper的应用
    HDFS

    Yarn

    Storm

    HBase

    Flume

    Dubbo

    Metaq

    Sqoop(数据同步工具)
    Sqoop是连接Hadoop与传统数据库之间的桥梁,它支持多种数据库,包括MySQL、DB2等;插拔式,用户可以根据需要支持新的数据库。

    Sqoop实质上是一个MapReduce程序,充分利用MR并行的特点,充分利用MR的容错性。
    
    image.png

    相关文章

      网友评论

        本文标题:hadoop

        本文链接:https://www.haomeiwen.com/subject/cantxftx.html