首先,对hadoop版本进行介绍,hadoop1.0版本是较旧的版本,hadoop2.0是现在较为流行的版本,其引入集中资源管理系统yarn。因此,hadoop可以轻松的与其他分布式计算框架进行集成,构建功能强大的分布式计算系统。比如和storm、spark进行集成。
Hadoop主要有三个模块组成,分布式存储系统HDFS、资源管理系统YARN、分布式计算框架MapReduce。其关系如图所示:
HDFS源于谷歌2003年发表的论文GFS,其具有良好的扩展性和高容错性。适合PT级海量数据的存储。
HDFS的工作原理如图所示。其节点分为两类,一类是namenode存储着所以block的位置信息,secondnamenode作为namenode的热备份,在namenode宕机时,用来恢复文件信息。数据存储在datanode中。namenode和secondnamenode的数据恢复通过zookeeper实现。
yarn是hadoop2.0的新特性。负责集群的资源管理和调度。其具有良好的扩展性,可以同时对多种应用程序进行资源的管理与调度。更适合当今互联网对大数据不同场景的处理需求。如上图所示,yarn还可以提高集群的资源利用率。例如,当hadoop空闲的时候,可以将空闲资源分配给spark。这样可以提高集群资源利用率。
client发出请求到resourceManager,resourceManager启动Appication master为任务分配相关的资源,分配完成后返回信息到resource Manager,再由resourceManager将任务分发到不同的NodeManager。NodeManager启动Container执行需要的MapReduce工作。
MapReduce分布式计算框架源于google的论文MapReduce。其具有良好的扩展性以及高容错性,适合海量数据的离线批处理。MapReduce以切片的split作为输入,最后将执行结果输出到hdfs。中间是处理阶段map和reduce。
图中所示为经典的wordcount的mapreduce work。map阶段统计每一个单词,shuffle阶段将不同map的相同单词收集在一起提交到reduce阶段。reduce阶段是一个归约过程,实现单词的计数。最后,得到整个文档的词频统计,在互联网中还是相当有用的。
如图所示为hadoop2.0的生态系架构图。最底层是分布式文件系统HDFS。在分布式文件系统之上是资源管理与调度系统YARN。YARN相当于一个操作系统,基于YARN可以部署离线批处理计算框架MapReduce、交互式分布式计算框架Tez,内存计算框架Spark,流式计算框架Storm等。上层可以运行Hive、Pig等数据库。Hive是一种类似于sql的分布式数据库,可以构建数据仓库。Pig是一种流数据库语言。如果需要执行多个连续的分布式计算任务,那么Oozie是理想的选择,其可以方便的执行多种任务。除此之外,Hbase可以作为分布式数据库来使用,例如构建海量图像数据的存储仓库,其查询速度很快,是面向列存储的数据库。ZooKeeper是分布式协调服务。Flume可以构建日志分析系统。Sqoop可以轻松将数据库中的数据导入HDFS.
另外,Mahout是不得不说的一个组件。其实一个分布式机器学习库。实现了推荐、聚类以及分类等相关机器学习算法。
Oozie在多任务执行中非常有用。如图所示,Oozie可以控制集群首先执行一个MapReduce任务,再进行一次数据库的查询。然后再执行一个java程序...。
今天,主要介绍了hadoop2.0的生态系统,以及其相关组建。后续会对不同组建进行详细介绍。
大数据据Hadoop学习可以加大数据交流群:724693112 群里免费大数据学习视频和资料给大家,欢迎大家进去交流学习,大家一起学习一起进步!一个好的学习氛围,能让你的学习不再那么枯燥,也能让你学习中少踩一些坑。
网友评论