一方面,Hadoop 1.Hadoop Hadoop的初衷是采用大量廉价机器,组成一个集群,完成大数据的存储和计算。
2.hadoop的组件hadoop 1.x
HDFS :负责大数据的存储
通用: HDFS和MR通用的通用工具包模块
MapReduce:负责计算,负责计算资源申请的调度
完成大数据的计算
编写程序时,程序需要复合计算框架的要求。
Java---main-- -驾驶
mapreduce----map----reducer
执行程序,申请计算资源(cpu存储器、磁盘IO、网络IO )
Java---JVM---OS-- -计算资源的申请
1.03360 MapReduce---job tracker---JVM-- -计算资源的申请
2.03360mapreduce----jar----运行时,将jar包中的任务提交给YARN,与YARN进行通信
YARN中的组件----JVM----申请计算资源
1.x和2.x的区别在于分离资源调度和管理。 同一资源调度平台YARN进行大数据计算资源的调度。 Hadoop的通用性得到了提高。 Hadoop构建的集群内的计算资源,不仅可以运行Hadoop内的MR程序,还可以运行其他计算框架的程序。
hadoop之后不久,由于MR的低效率,出现了很多更高效的计算框架。
例如Tez、Storm、Spark、Flink
3. hadoop2.x中的HDFS (框架) :负责大数据的存储
YARN (框架) :负责大数据的资源调度
MR )编程模型)使用Hadoop编制的编程要求,编制程序,完成大数据的计算
二、HDFS HDFS负责大数据的存储
必需流程:
namenode(1个) :文件、名称等元数据) )属性信息)的保存。 包括文件名、大小、将文件分割为几个块、创建和修改时间等。
职责:
接受客户的请求
接受dn的请求
负责保存dn分配任务datanode(n个)文件内的数据
职责:
接受NM分配的任务
负责块(block )的管理(读写)可选流程:
安全节点(n个) :负责辅助namenode的工作
三. MapReduce MapReduce (编程规范)程序包括Mapper简单处理)和Reducer (合并)。
按照MapReduce的编程规范,编写的程序打包后称为任务。
作业需要提交给YARN,向YARN申请计算资源,执行作业中的任务(进程)。
作业首先创建进程MRAppMaster (MapReduce APP管理员),mrappmaster向YARN申请资源。 MRAppMaster监视作业内各任务的运行状况,进行容错管理。
四. YARN YARN负责集群内所有计算资源的管理和调度
一般过程:
一个资源管理器:负责管理整个群集的所有资源
职责:
负责接受客户端提交作业的请求
负责对NM的任务分配
负责收到NM报告的信息
节点管理器(n个) :负责管理1台计算机的所有资源
职责:
负责与RM的通信,报告本机可用的资源
负责接收RM分配的任务
负责为作业中的每个Task分配计算资源
概念:
容器:节点管理器为作业的某个任务分配了两个CPU和2G内存的计算资源,为了避免当前任务在使用这些资源的同时被其他任务占用资源,将计算资源分配给一个容器容器中的资源在当前任务执行完成后,将释放当前容器中的资源,并可供其他任务使用。