码迷,mamicode.com
首页 > 其他好文 > 详细

hadoop--大数据最基础、最重要的组件

时间:2019-10-05 20:12:34      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:namenode   分布   结构   调度   mon   其它   hive   http   一段   

hadoop是什么?

hadoop是一个由Apache基金会所开发的分布式系统基础架构,hdfs分布式文件存储、MapReduce并行计算。主要是用来解决海量数据的存储和海量数据的分析计算问题,这是狭义上的hadoop。广义上来讲,hadoop通常指的是一个更广泛的概念--hadoop生态圈

技术图片

hadoop三大发行版本

hadoop三大发型版本:Apache、Cloudera、Hortonworks

  • Apache版本,也成为社区版,是最原始的版本,对入门学习较好
  • Cloudera版本在大型互联网企业中用的较多,是对社区版进行了封装,主要是解决了和其它大数据组件(比如:hive)的兼容性问题。但是出了问题帮你解决要收费
  • Hortonworks版本文档较好

公司一般更常用的是Cloudera版本的hadoop,另外Cloudera版本的hadoop也简称为CDH。

hadoop优势

1)高可靠性:hadoop底层维护多个数据副本,所以即使某个机器出现故障,也不会导致数据的丢失。

比如我现在有1G的数据,要存在5台机器上,hadoop默认会先将整个数据进行切割,默认是128M/块,当然这个数值也可以自己改。然后是以三副本进行存储,也就是说每个128M的块,都会被存储三份在不同的机器上。这样即使一台服务器宕机了,数据也不会丢失。

技术图片

2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。很好理解,如果容量不够了,直接横向扩展,加机器就行。

3)高效性:在MapReduce的思想下,hadoop是并行工作的,以加快任务处理速度。实际上如果学了spark,会发现hadoop自己所描述的易用性、高效性实在是不敢恭维哈。但是hadoop作为大数据生态圈中非常重要的组件,我们是有必要学好的,而且学了hadoop之后,再学spark会轻松很多。而且学习了hadoop,再学spark也会明白为什么spark会比hadoop在效率上高出几十倍、甚至上百倍。

4)高容错性:能够自动将失败的任务重新分配,如果某台机器挂掉了,那么会自动将任务分配到其他的机器上执行

hadoop 1.x和hadoop 2.x的区别

技术图片

hadoop组成

hadoop的组成上面已经说了,主要由四部分组成,但是哪个common,我们一般不用管。因此从下往上只需要关注,hdfsyarnMapReduce即可。

hdfs

hdfs:hadoop distributed file system,hadoop分布式文件系统,它由哪几部分组成呢?

1.NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等等。

2.DataNode(dn):真正用来存储文件块数据以及块数据的校验和,之前说了大文件是要分成多块的,每一块存在不同的DataNode节点(说白了就是服务器、或者电脑)上,每一个节点存储了哪些文件、以及文件被切分了几份都存在哪些DataNode上、文件名、属性等等,这些都叫做元数据,统一交给NameNode管理,而DataNode只负责真正的存储数据。

3. Secondary NameNode(2nn):用来监控hdfs状态的后台辅助程序,每个一段时间获取hdfs元数据的快照。

yarn

技术图片

图中有一个Resource?Manager和三个Node?Manager,相当于有四个节点。

Resource Manager

1.处理客户端请求。客户端想访问集群,比如提交一个作业,要经过Resource Manager,它是整个资源的管理者,管理整个集群的CPU、内存、磁盘

2.监控Node Manager

3.启动或监控Application Master

4.资源的分配和调度

Node Manager

1.管理单个节点上的资源,Node Manager是当前节点资源的管理者,当然需要跟Resource Manager汇报

2.处理来自Resource Manager的命令

3.处理来自Application Master的命令

Application Master

1.某个任务的管理者。当任务在Node Manager上运行的时候,就是由Application Master负责管理

2.负责数据的切分

3.为应用程序申请资源并分配给内部的任务

4.任务的监控与容错

Container

Container是yarn中资源的抽象,它封装了节点上的多维度资源,如内存、CPU、磁盘、网络等等。

其实Container是为Application Master服务的,因为任务在运行的时候,是不是需要内存、cpu,这些资源都被虚拟化到Container里面了。

MapReduce

1. map阶段并行处理输入数据

2. reduce阶段对map结果进行汇总

技术图片

几张图让你理解hdfs工作原理

技术图片

技术图片

技术图片

技术图片

技术图片

hadoop--大数据最基础、最重要的组件

标签:namenode   分布   结构   调度   mon   其它   hive   http   一段   

原文地址:https://www.cnblogs.com/traditional/p/11625341.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!