前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >它的名字叫Hadoop

它的名字叫Hadoop

作者头像
我脱下短袖
发布2019-12-23 12:26:16
4680
发布2019-12-23 12:26:16
举报
文章被收录于专栏:算法无遗策

注意,我会使用第三人称以朋友的角度介绍大数据中必须要学会的框架Hadoop,阅读时间需要五分钟。

Hadoop之父Doug Cutting和他手上拿的Hadoop

大家好,介绍一下我的朋友,它的名字叫Hadoop,它和其它大数据框架一样,都是出生于计算机。特殊的是,它所有的细胞都是由二进制组成的,每一个细胞都是由0和1组成特定的串。

它跟我说,它最感激的是它的父亲,没有他不放弃的研究,很难有现在强大的自己。

它父亲当时为了爬虫项目如何存储以及计算,刚好,谷歌三大论文发布出来。谷歌三大论文分别是GFS谷歌分布式文件系统、MapReduce分布式计算框架和BigTable分布式存储系统。

(想要知道谷歌三大论文可以到后台回复“谷歌三大论文”获取,谷歌三大论文的翻译资料最开始是由CSDN博客出现的,很惊讶吧,现在CSDN这个状况很难和原创有一点点的关系)

爬虫项目数据量非常多,不是一台计算机简单能存下了,所以他转战花了时间去研究谷歌的三大论文,给予了他很多的灵感,得出了HDFS、MapReduce和HBase三个项目。HBase最初确实是Hadoop的一部分,之后,HBase逐渐成为Apache软件基金会旗下的顶级项目,具备Apache软件许可证,现在目前是2.x版本。

但如何给它起一个名字似乎不是一个难题,因为Doug Cutting在生活中有孩子,他的孩子非常喜欢一个玩偶,叫它哈杜。所以Doug Cutting就给它起了一个名字,就叫Hadoop。

那玩偶就是Hadoop之父手上拿的,是瘦瘦的黄色小象,不想现在Logo标志上这么胖胖的

Hadoop项目的Logo标志

名字有了,Hadoop之父就开始干,发决心狠狠地将它扔进到黑暗的小盒子里。谁都不知它未来会是什么样子,只知道它的父亲正在将它进行重新改造,又重新改造,一直如此。这其中的艰难很难想象。

也是正因为如此,它才会越发的强大。当它出来的时候,它的一切重新变了模样。GFS变成了HDFS,BigTable变成了HBase,MapReduce还是MapReduce但都进行了改进。所以Hadoop一出生就有了三个玩伴。后来HBase逐渐分离了Hadoop,渐渐地成为Apache的顶级项目,当然Hadoop也是Apache的顶级项目。Hadoop还是替HBase高兴的,又一个儿时玩伴成为了顶级项目。

Hadoop还有两个伙伴中间是通过什么组件来进行资源联系的,恐怕它自己也不知道。等到起跑运行才发现没有这个组件是会出问题的。

Hadoop如果没有谷歌三大论文的帮助,它到现在也不会分身,只能在一台服务器上存储和计算着越来越多的数据量,而且会非常缓慢,因为一台服务器的CPU数量和内存都有限。

有了谷歌三大论文的帮助,Hadoop除了得出HDFS和MapReduce组件,还有Yarn资源管理器组件。它们都极具有分身的能力,也没必要在一台服务器上分身,它们的目的是联合多台服务器扩大CPU数量和增大内存容量。

作为Hadoop的第三人称以朋友的角度,我会介绍Hadoop的三个组件——HDFS架构、MapReduce模型和Yarn资源管理器。

Hadoop项目的三个组件

HDFS分布式存储架构每一个工作节点DataNode都会占据一台服务器(也可以是虚拟机),多个DataNode不可能会在同一台服务器上,因为没必要要两个DataNode在一台服务器上争夺资源,这会乱套的,服务器上只需要一个DataNode汇报给管理节点NameNode就可以了。NameNode可以和任何一个DataNode共存在一台服务器上。

真正存储数据的是在DataNode,而且不管数据的大小都会切割成固定的块大小,默认为128M。一个不满128M的文件会给128M的虚拟空间,一个满128M的块大小会被切割,目的是为了NameNode更好的管理文件系统,以及MapReduce更好的读取。后面会出处理多个小文件的案例,所以请关注大数据绅探,避免走失哦。

NameNode还有一个辅助节点SecondaryNameNode,它是专门记录NameNode所有的操作,但不能接替NameNode成为一个NameNode节点。只是有了SecondaryNameNode,NameNode挂掉重启的时候可以恢复最新的数据。SecondaryNameNode和NameNode一样,也可以和任何一个DataNode共存在一台服务器上,当然,SecondaryNameNode和NameNode也一样可以共存在一台服务器上。

MapReduce分布式计算框架是用Java编写的,读取HDFS上的数据会使用输入格式类生成一个Map任务进行,一个Map根据数据块的大小进行设置的,也可以自己设置。但我的建议是和HDFS的数据块的大小一致,是为了减少服务器之间的I/O传输。

数据进入到Map任务之后会有Shuffle过程,然后聚合到Reduce任务上,再使用Java的输出格式类写入到某个路径上。

MapReduce简单的过程

那如何让MapReduce跑起来计算呢,则就需要Yarn资源管理器。Yarn和HDFS一样,也有很多个组件。Yarn除了没有辅助节点,都有管理节点ResourceManager和工作节点NodeManager。而NodeManager和HDFS中的DataNode是一一对应的,不多不少。

简单的介绍就到这里,后面会出几篇文章分别详细介绍Hadoop的三个组件的。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法无遗策 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档