Hadoop是一个适合海量数据的分布式存储和分布式计算的平台
主要有以下功能:
Hadoop Common:基础型功能
Hadoop Distributed File System (HDFS™):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。负责存放数据
Hadoop YARN:作业调度和集群资源管理的框架。负责资源的调配
Hadoop MapReduce:基于 YARN 的系统,用于并行处理大型数据集,大数据的计算框架
HDFS
进程理解:
联邦机制:
宏观写流程图:
微观写流程图:
读流程图:
其中要注意的是:
这里我们在文件切分里使用了一个非常重要的思想即--分而治之
在Hadoop 1默认大小为64M,在Hadoop 2及其之后默认大小为128M
HDFS中小于一个块的大小的文件不会占据整个块的空间
备份的数量要小于等于节点的数量
每个数据块默认会有三个副本
block的位置信息不会持久化,需要每次开启集群的时候DN向NN汇报
NameNode为了效率,将所有的操作都在内存中进行
拆分的数据块需要等大的原因(面试题)
a. 数据计算的时候简化问题的复杂度(否则进行分布式算法设计的时候会因为数据量不一很难设计)
b. 数据拉取的时候时间相对一致
c. 通过偏移量就知道这个块的位置
d. 相同文件分成的数据块大小应该相等
注意事项
a. 只要有任意一个块丢失,整个数据文件被损坏
b. HDFS中一旦文件被存储,数据不允许被修改 修改会影响偏移量
MapReduce
架构特点:
MapReduce1.x:
JobTracker
主节点,单点,负责调度所有的作用和监控整个集群的资源负载。
TaskTracker
从节点,自身节点资源管理和JobTracker进行心跳联系,汇报资源和获取task。
Client
以作业为单位,规划作业计算分布,提交作业资源到HDFS,最终提交作业到JobTracker。
Slot(槽):
属于JobTracker分配的资源(计算能力、IO能力等)。
不管任务大小,资源是恒定的,不灵活但是好管理。
Task(MapTask-->ReduceTask):
开始按照MR的流程执行业务。
当任务完成时,JobTracker告诉TaskTracker回收资源。
MapReduce1.x的弊端
1.JobTracker负载过重,存在单点故障。
2.资源管理和计算调度强耦合,其它计算框架难以复用其资源管理。
3.不同框架对资源不能全局管理。
MapReduce2.x:
Client: 客户端发送MR任务到集群,其中客户端有很多种类,例如hadoop jar
ResourceManager: 资源协调框架的管理者,分为主节点和备用节点(防止单点故障,主备的切换基于ZK的管理),它时刻与NodeManager保持心跳,接受NodeManager的汇报(NodeManager当前节点的资源情况)。
当有外部框架要使用资源的时候直接访问ResourceManager即可。
如果是有MR任务,先去ResourceManager申请资源,ResourceManager根据汇报分配资源,例如资源在NodeManager1,那么NodeManager1要负责开辟资源。
Yarn(NodeManager): Yarn(Yet Another Resource Negotiator,另一种资源协调者),统一管理资源。以后其他的计算框架可以直接访问yarn获取当前集群的空闲节点。
每个DataNode上默认有一个NodeManager,NodeManager汇报自己的信息到ResourceManager。
Container: 它是动态分配的,2.X资源的代名词。
ApplicationMaster: 我们本次任务的主导者,负责调度本次被分配的资源Container。当所有的节点任务全部完成,applicaion告诉ResourceManager请求杀死当前ApplicationMaster线程,本次任务的所有资源都会被释放。
Task(MapTask--ReduceTask): 开始按照MR的流程执行业务,当任务完成时,ApplicationMaster接收当前节点的反馈。
YARN【Yet Another Resource Negotiator】:Hadoop 2.0新引入的资源管理系统,直接从MRv1演化而来的。
核心思想:将MRv1中JobTracker的资源管理和任务调度两个功能分开,分别由ResourceManager和ApplicationMaster进程实现:
ResourceManager:负责整个集群的资源管理和调度。
ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控和容错等。
YARN的引入,使得多个计算框架可运行在一个集群中 每个应用程序对应一个ApplicationMaster 目前多个计算框架可以运行在YARN上,比如MapReduce、Spark、Storm等。
MapReduce流程图:
MapReduce详细流程数据变化:
注意事项:
有多少个切片就会执行多少个Map任务
默认情况下,Split切片的大小等于Block的大小 ,默认128M,如果读取到最后一个block块的时候,与前一个blokc块组合起来的大小小于128M*1.1的话,他们结合生一个split切片,生成一个map任务
shuffle就是map之后,reduce之前的所有操作的过程,包含map task端对数据的分区、排序,溢写磁盘和合并操作,以及reduce task端从网络拉取数据、对数据排序合并等一系列操作。shuffle中做了大量的排序,数据溢写、合并和网络传输的工作,故而shuffle是个非常耗时的过程。
当我们对汉字进行操作时需要借助IK分词器(ikanalyzer)对汉字进行分词
标签:ResourceManager,hadoop,Hadoop,资源管理,JobTracker,小结,节点,资源 From: https://www.cnblogs.com/slm-1314521/p/16630944.html