Hadoop打开大数据新世界的大门(Hadoop介绍)

前言

上一篇文章我讲述了有关大数据的概念,和一些意向,也许有人会问我,麟爷大数据和Hadoop到底是什么关系呢?如果从技术角度和非技术角度来讲,我认为是技术层面和理论层面的区别,这次我写下这篇文章的主要目是和大家介绍hadoop这个框架

Hadoop诞生背景

Hadoop最早是作为Nutch的子项目。而Nutch是一个开源的网络搜索引擎,由Doug Cutting于2002年创建。Nutch的设计目标是构建一个大型的全网搜索引擎,包括网页抓取、索引、查询等功能(目的是防止百度谷歌等搜索引擎的垄断),但随着抓取网页数量的增加,遇到了严重的可扩展性问题,即不能解决数十亿网页的存储和索引问题。随后谷歌发表的两篇论文为该问题提供了可行的解决方案。一篇是2003年发表的关于谷歌分布式文件系统(GFS)的论文。该论文描述了谷歌搜索引擎网页相关数据的存储架构,该架构可解决超大规模存储问题。但由于谷歌仅开源了思想而未开源代码,Nutch项目组便根据论文完成了一个开源实现,即Nutch的分布式文件系统(NDFS)之后就慢慢演变成了Hadoop的HDFS。另一篇是2004年发表的关于谷歌分布式计算框架MapReduce的论文。数据量大的情况下就算电脑性能再高也无法摆脱性能的瓶颈,(因为数据量增长和电脑性能拓展不是一个量级的,单机情况下无法满足海量数据的快速运算),该论文描述了谷歌内部最重要的分布式计算框架MapReduce的设计,该框架可用于处理海量网页的索引问题。同样,由于谷歌未开源代码,Nutch的开发人员完成了一个开源实现。由于NDFS和MapReduce不仅适用于搜索领域,2006年年初,开发人员便将其移出Nutch,成为Lucene的一个子项目,称为Hadoop。大约同一时间,Doug Cutting加入雅虎公司,且公司同意组织一个专门的团队继续发展Hadoop。同年2月,Apache Hadoop项目正式启动以支持MapReduce和HDFS的独立发展。2008年1月,Hadoop成为Apache顶级项目,迎来了它的快速发展期。最后总所周知的阿里巴巴吧雅虎收购了

Hadoop生态圈

比起叫hadoop框架,我更加喜欢称呼hadoop为生态圈,因为hadoop的原因诞生了一系列的衍生平台框架,首先我们看看hadoop的生态体系有什么内容吧
首先Hadoop区分了3种类型的版本分别是:

hadoop 1.x

hadoop 2.x

hadoop 0.23.x

hadoop 1.x 是老一辈的hadoop框架,提供了dog cutting刚开始最初的框架思想,比较原生原味其中MapReduce的是通过JobTracker(后面会介绍)进行发布的,更多的是做离线计算框架,架构结构比较简单,能较快的部署。但是随着业务的发展,到后来发现这样的结果的确可以处理大数据,但是却不具备时效性,比如新浪微博的一天这么大的数据量,并不能及时提供实时计算,所以后来就衍生出了hadoop2.X ,2.X版本通过YARN进行资源管理,同时1.X的JobTracker概念也变成了ResoueceManager概念,2.X通过管理资源,让其可以融合更多的分布式计算框架比如:

基于内存计算的Spark,基于流计算的Storm 等等

而0.23.X系列是根据 1.X系列的缺点改进的,主要是引入了身份认证,正常大家都知道,Hadoop是分布式的集群的,一个集群可能不只是一台电脑,集群中master需要对其它电脑做免SSH登录配置,在0.23.X出来之前hadoop一直是一个安全性比较低的框架,以前Hadoop的身份认证只能保证好人不干坏事,但是不能防止坏人干坏事的情况,比如黑客渗透攻击等等,也因为这个情况0.23.X加强了身份认证,集群中每一次通信都要进行一次身份认证,这样虽然更加安全了,但是也导致整个框架整体的效率降低了,所以0.23.X一直是独立与另外两条开源主线的,目的只是提供给那些安全性需求特别高的项目(特例)

为了方便所以下面这个图片来自别人的博客(盗图)
这个是早期基于hadoop 1.X系列的图
这里写图片描述

后来改进hadoop 2.x的图
这里写图片描述

HDFS

这个东西恐怕就是,就是不管多少年都贯穿这个大数据框架的东西了,HDFS(hadoop分布式文件系统)的确是一个很经典的内容
大家都知道,大数据最总要的一点就是数据会很大,有可能是一个数据很大,也有可能是有海量的小数据,传统的文件系统,比如windows的资源文件系统,虽然很成熟,但是对于单个大文件很难保障文件的安全性和文件的读写速度,打个比方,如果你的电脑里面有一个200GB的数据文件,记住是单个,如果你是使用传统的文件系统,如果某一次不小心刚好撞坏了硬盘上刚好存储这个区的存储道,那么你这个200GB的数据文件就等于废掉了,而Hadoop的分布式文件系统能保证在集群中,这个200GB的文件有三个备份文件在不同的机上,而且不影响对这个文件的操作。
同时这个文件系统提供了第二个的好处就是文件分块,什么是文件分块呢?比如你将一个200GB的数据文件分解成4个50GB的文件,并且给一个索引给你你可以通过索引认为这4个50GB的文件就是组成一个200GB的文件(当然实际的分块会更加小有可能只有64MB一块),那么这个有什么好处呢?假如你的200GB文件是好莱坞电影的某一个还没上映的电影,存储在这个文件系统上面,一名黑客非法入侵了电脑,他并不知道这个集群里面有哪些电脑组成(正常来说黑客基本上没法做到找到所有电脑,因为这几乎是一个不可能事件),所以只是偷走其中一个电脑的一块文件,那么等他回去后发现,这个视频只有20秒钟,而且是中间的某个20秒钟,那么分块一定程度上就保证的安全性。

说了这么多我们还是先看看HFDS的架构图吧:
这里写图片描述
大家其实只要主要关注两个东西其它的我会慢慢介绍(后面我也会写一遍专门有关HDFS的文章,这个只是做一个简单介绍):

NameNode,DataNode

NameNode主要目的就是管理DataNode以及保存文件对应的元数据,并且通过对外的接口给客户端使用,如图也看的出DataNode也就文件真正存储的地方,通过NameNode管理DataNode的方式来存储文件,hadoop中无论是1.X 2.X 还是 0.23.X的HDFS 基本上也都是这个样子了,大家先只要有一个整体的概念就好了,后面我会详细来聊这个东西

MapReduce

顾名思义,MapReduce也是分为两个阶段,一个是Map的阶段,而另一个就是Reduce阶段,老实说这个东西我也不知道怎么样很好的介绍给大家,因为它本质是一种编程思想(算了不管了,慢慢来吧,讲一个是一个,我后续也会单独出一篇文章去描述这个东西)
这里写图片描述
看图可以知道其实Map和Reduce只是两个主要个过程,其实中间还发生了很多内容,比如Splitting(溢写)和Partition(分区)。(记住MapReduce是不能对媒体系统进行计算的,不是说不能主要是没意义,因为媒体文件基本上都是字节数据类型就是0和1而我们的MapRecuce主要还是倾向于数据String的类型文件比如:日志),总体思想在Map阶段我们将一条条记录数据,分离排序分区数据清洗,预处理等等,然后通过Key-value的方式在Reduce阶段合并,并进行相应的业务计算,(后面文章我会继续详细讲解这块内容请先记住这张图片)

结尾

这些就是本次介绍Hadoop的全部内容,只是介绍Hadoop,由于这次选择写的这篇文件技术要求太高了,所以小编我不管保证文件内容不出问题,如果大家觉得内容中哪里比较扯淡或者描述的不清不楚的可以在留言区留言给我,我稍后证实后一定改正,还有最后一个就是最近由于docker的火热,hadoop的很于docker整合也很火,估计是为了方便运维吧,所以后续我也会自己尝试hadoop整合docker如果成功,我可能也会出一篇文章介绍这种方式,谢谢大家观看,希望大家能在技术的海洋里面遨游

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值