Hadoop生态系统概述

       已经不是第一天接触hadoop了,但是系统的学习一直没有进行,为了能更快的成长,决定从今天开始系统的学习大数据。并做相关技术记录。ps:希望不要三分钟热度,半途而废。要为未来的战争时刻准备着...第一次接触hadoop是在清华大学网络研究院,并对此产生浓厚的兴趣。

       以上都是题外话,下面开始切入正题,本系列文章打算以hadoop为起点,围绕其对hbase、hive、pig、sqoop、kafka、flume、oozie、mahout以及流式框架storm、spark进行学习。

       首先,对hadoop版本进行介绍,hadoop1.0版本是较旧的版本,hadoop2.0是现在较为流行的版本,其引入集中资源管理系统yarn。因此,hadoop可以轻松的与其他分布式计算框架进行集成,构建功能强大的分布式计算系统。比如和storm、spark进行集成。


Hadoop生态系统概述_第1张图片



       Hadoop主要有三个模块组成,分布式存储系统HDFS、资源管理系统YARN、分布式计算框架MapReduce。其关系如图所示:

Hadoop生态系统概述_第2张图片

      HDFS源于谷歌2003年发表的论文GFS,其具有良好的扩展性和高容错性。适合PT级海量数据的存储。

Hadoop生态系统概述_第3张图片

       HDFS的工作原理如图所示。其节点分为两类,一类是namenode存储着所以block的位置信息,secondnamenode作为namenode的热备份,在namenode宕机时,用来恢复文件信息。数据存储在datanode中。namenode和secondnamenode的数据恢复通过zookeeper实现。

Hadoop生态系统概述_第4张图片          

        yarn是hadoop2.0的新特性。负责集群的资源管理和调度。其具有良好的扩展性,可以同时对多种应用程序进行资源的管理与调度。更适合当今互联网对大数据不同场景的处理需求。如上图所示,yarn还可以提高集群的资源利用率。例如,当hadoop空闲的时候,可以将空闲资源分配给spark。这样可以提高集群资源利用率。

Hadoop生态系统概述_第5张图片     

        client发出请求到resourceManager,resourceManager启动Appication master为任务分配相关的资源,分配完成后返回信息到resource Manager,再由resourceManager将任务分发到不同的NodeManager。NodeManager启动Container执行需要的MapReduce工作。

Hadoop生态系统概述_第6张图片

       MapReduce分布式计算框架源于google的论文MapReduce。其具有良好的扩展性以及高容错性,适合海量数据的离线批处理。MapReduce以切片的split作为输入,最后将执行结果输出到hdfs。中间是处理阶段map和reduce。

Hadoop生态系统概述_第7张图片

       图中所示为经典的wordcount的mapreduce work。map阶段统计每一个单词,shuffle阶段将不同map的相同单词收集在一起提交到reduce阶段。reduce阶段是一个归约过程,实现单词的计数。最后,得到整个文档的词频统计,在互联网中还是相当有用的。

Hadoop生态系统概述_第8张图片     

       如图所示为hadoop2.0的生态系架构图。最底层是分布式文件系统HDFS。在分布式文件系统之上是资源管理与调度系统YARN。YARN相当于一个操作系统,基于YARN可以部署离线批处理计算框架MapReduce、交互式分布式计算框架Tez,内存计算框架Spark,流式计算框架Storm等。上层可以运行Hive、Pig等数据库。Hive是一种类似于sql的分布式数据库,可以构建数据仓库。Pig是一种流数据库语言。如果需要执行多个连续的分布式计算任务,那么Oozie是理想的选择,其可以方便的执行多种任务。除此之外,Hbase可以作为分布式数据库来使用,例如构建海量图像数据的存储仓库,其查询速度很快,是面向列存储的数据库。ZooKeeper是分布式协调服务。Flume可以构建日志分析系统。Sqoop可以轻松将数据库中的数据导入HDFS.

     Hadoop生态系统概述_第9张图片 


       另外,Mahout是不得不说的一个组件。其实一个分布式机器学习库。实现了推荐、聚类以及分类等相关机器学习算法。

Hadoop生态系统概述_第10张图片       

        Oozie在多任务执行中非常有用。如图所示,Oozie可以控制集群首先执行一个MapReduce任务,再进行一次数据库的查询。然后再执行一个java程序...。

       今天,主要介绍了hadoop2.0的生态系统,以及其相关组建。后续会对不同组建进行详细介绍。


你可能感兴趣的:(大数据学习)