目录
Hadoop三大发行版本:Apache、Cloudera、Hortonworks
一、Hadoop应运而生
我们生活在一个大数据的时代,数据飞速发展,急需解决海量数据的存储和计算问题。这个时候Hadoop应运而生。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。主要解决海量数据的存储和海量数据的分析计算问题。
广义上来说,Hadoop通常指一个更广泛的概念---Hadoop生态圈。
二、Hadoop发行版本介绍
Hadoop三大发行版本:Apache、Cloudera、Hortonworks
1.Apache Hadoop:官方版本,开源
官方网址:http://hadoop.apache.org/releases.html
下载地址:https://archive.apache.org/dist/hadoop/common/
2.Cloudera Hadoop(CDH):商业版本,对官方版本做了一些优化,提供免费的技术支持,提供界面操作,方便集群运维管理
官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html
下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/
3.Hortonworks(HDH) :开源,提供界面操作,方便运维管理
官网地址:https://hortonworks.com/products/data-center/hdp/
下载地址:https://hortonworks.com/downloads/#data-platform
三、Hadoop的优势
(1)高可靠:Hadoop底层维护多个副本数据,所以即使Hadoop某个计算节点或存储出现故障,也不会导致数据丢失。
(2)高扩展:在集群中分配任务数据,可方便扩展数以千计的节点。
(3)高效性:在MapReduce思想下,Hadoop是并行计算,以加快任务处理速度。
(4)高容错性:能够自动将失败的任务重新分配。
四、Hadoop版本演变
(1)Hadoop1.x
HDFS(数据存储) + MapReduce(计算+资源调度) + Common(辅助工具)
在Hadoop1.x时代,MapReduce同时负责资源的调度和处理业务逻辑的运算,耦合性大。
(2)Hadoop2.x
HDFS(数据存储) + YARN(资源调度) + MapReduce(计算) + Common(辅助工具)
在Hadoop2.x时代,增加了YARN(公共的资源管理平台,只要你的程序满足YARN规则即可)。YARN只负责资源的调度,MapReduce只负责运算。
(3)Hadoop3.x
HDFS(数据存储) + YARN(资源调度) + MapReduce(计算) + Common(辅助工具)
hadoop3.x的细节优化:
(1)最低Java版本从Java7变成Java8
(2)HDFS支持纠删码,纠删码是一种比副本存储更节省存储空间的数据持久化存储方法,使用这种方法,
相同容错的情况下,比之前可节省一半的存储空间。
(3)Hadoop 2中的HDFS最多支持两个NameNode,一主一备,而Hadoop 3中的HDFS支持多个 NameNode,
一主多备
(4)MapReduce任务级本地优化,MapReduce添加了映射输出收集器的本地化实现的支持。
对于密 集型的洗牌操作(shufflfflffle-intensive)jobs,可以带来30%的性能提升。
(5)修改了多重服务的默认端口,Hadoop2中一些服务的端口和Hadoop3中是不一样的
Hadoop2中一些服务的端口和Hadoop3中是不一样的。
Hadoop2中HDFS的web界面端口是:50070,Hadoop3中是:9870
总结:Hadoop 3和2之间的主要区别在于新版本提供了更好的优化和可用性
五、Hadoop三大核心组件
一、HDFS架构概述
HDFS负责海量数据的分布式存储
(1)NameNode:存储文件的元数据(如:文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),
每个文件的块列表和块所在的DataNode)
(2)DataNode:在本地文件系统中存储文件块数据和块数据的校验和
(3)Secondary NameNode:用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照
二、MapReduce架构概述
MapReduce是一个计算模型,负责海量数据的分布式计算
1)Map阶段并行处理输入数据
2)Reduce阶段对Map结果进行汇总
三、YARN架构概述
YARN主要负责集群资源的管理和调度
1)ResourceManager:
①处理客户端请求②启动/监控ApplicationMaster③监控NodeManager④资源分配与调度
2)NodeManager:
①单个节点上的资源管理②处理来自ResourceManager的命令③处理来自ApplicationMaster的命令
3)ApplicationMaster:
①数据切分②为应用程序申请资源③分配给内部任务④任务监控与容错
4)Container
对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息
可以对计算资源进行隔离。
总结
MapReduce阶段详解:
在Map阶段和Reduce阶段分别启动若干进程负责运算!这些进程称为Task!
在Map阶段启动的Task称为MapTask,在Reduce阶段启动的Task称为ReduceTask。
将一个MapReduce程序称为一个Job,一个Job中会启动若干个Task。
在Job启动时,Job会先创建一个MRAppMaster进程,由这个进程和RM进行通信,为Job中的每个Task申请
计算所需要的资源!
Task的请求,会被RM缓存到一个调度队列中,由NM领取Task,领取后NM会根据Task要求,提供计算资源!
提供后,为了避免计算资源在当前Task使用时被其他的task抢占,NM会将资源封装到一个Container中。
Container可以对计算资源进行隔离!