Hadoop理论

一.简介

Hadoop是Apache软件基金会旗下的一个开源分布式计算平台,以Hadoop分布式文件系统(HDFS,Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。

模仿了goole的大数据开源,在linux平台下,以java运行的。

二.各节点作用

对于Hadoop的集群来讲,可以分成两大类角色:Master和Salve

hadoop_第1张图片 

 

主节点包括名称节点(namenode)、从属名称节点(secondary namenode)和 jobtracker 守护进程(即所谓的主守护进程)以及管理集群所用的实用程序和浏览器。

从节点包括 tasktracker 和数据节点( datanade从属守护进程)。

两种设置的不同之处在于,主节点包括提供 Hadoop 集群管理和协调的守护进程,而从节点包括实现Hadoop 文件系统(HDFS)存储功能和 MapReduce 功能(数据处理功能)的守护进程。

每个守护进程在 Hadoop 框架中的作用

Namenode : Hadoop 中的主服务器,它管理文件系统名称空间和对集群中存储的文件的访问。

Secondary namenode: 它不是namenode 的冗余守护进程,而是提供周期检查点和清理任务。在每个 Hadoop 集群中可以找到一个 namenode 和一个 secondary namenode。

Datanode : 管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个 datanode 守护进程。是真正的存储数据块的工作节点。

Jobtracker : 每个集群有一个 jobtracker它负责调度 datanode 上的工作,可以分配任务,监控任务执行进度,还可监控tasktracker的状态。

Tasktracker : 每个 datanode 有一个tasktracker,它们执行实际工作,汇报任务的执行状态。jobtracker 和 tasktracker 采用主-从形式jobtracker 跨datanode 分发工作,而 tasktracker 执行任务。jobtracker 还检查请求的工作如果一个datanode 由于某种原因失败jobtracker 会重新调度以前的任务。

PS : OOM ( out of memory ),在hadoop 下可能会比较常出现OOM

 

三.HDFS  MapReduce

Hadoop是一个开源的,分布式存储+分布式计算平台的。

Hadoop的组成可以包括 HDFS(分布式文件系统,存海量的数据);MapReduce(并行处理框架,实现任务分解和调度);还可以包括其他的开源工具,如HIVE HBASE zookeeper。

HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。

HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode作为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操作;集群中的DataNode管理存储的数据。

MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每个集群从节点的TaskTracker共同组成的。主节点负责调度构成一个作业的所有任务,这些任务分布在不同的从节点上。主节点监控它们的执行情况,并且重新执行之前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交作业和配置信息之后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。MapReduce可分为Map + Reduce,Map可以理解为将一个大任务分成多个小任务,Reduce则是在并行执行后,合成结果。

HDFS在MapReduce任务处理过程中提供了文件操作和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了Hadoop分布式集群的主要任务。

 

四.Hadoop2.X 版本

HDFS 的改进:增强了namenode的水平扩展及高可用性

可以同时部署多个namenode,这些namenode之间是相互独立的,不需要相互协调,datanade同时在所有的namenode中注册,作为它们的共有的存储节点,向所有的namenode发送心跳

MapReduce的改进:YARN+MapReduce

将资源管理和作业管理分开,资源管理(ResourceManager)由新增的系统YARN实现。

Resourcemanager和每台机器上的NodeManager服务,用来管理用户进程,形成计算架构。Nodemanager是Resourcemanager在每台服务器上代理,负责容器的管理,并监控资源使用情况,如CPU,内存,网络等,以及向Resourcemanager提供资源使用报告