- 各个框架之间的关系
hdfs是负责存储数据文件的,MapReduce是负责文件的分析计算,而yarn是负责管理资源的,即整个MapReduce阶段map任务和reduce任务运行所需要的资源。这是这三者之间的关系。
首先文件会上传至hdfs上,这是hdfs阶段,具体就是每份文件都会被切分成默认大小为128M的block块,然后每个block块默认会被存储在三个不同的datanode上,即拥有三个备份。(具体的过程是:client会发出上传文件的请求,namenode响应后,client请求上传第一个block块,namenode会返回给client三个datanode,client请求与datanode建立传输通道,datanode依次应答成功后,client开始把块的数据进行传输(传输是通过bytebuffer流的,为了性能考虑,块的数据是同时写到datanode上的,而不是先写到第一个,再写到第二个上),第一个block块传输完成后,第二块再进行这些操作。)至于hdfs的下载文件(也就是读数据流程是:client发出下载文件的请求,namenode返回元数据,也就是块的存储信息,然后client根据返回的datanode去与对应的block块建立连接,传输block块,下载完成,这里需要注意的是,因为block块有三个备份,client会尽量去读取离他近的datanode上的block块,遵循“彼此近邻”的原则)。
然后就是MapReduce和yarn阶段,因为yarn是负责分配资源的,所以和MapReduce程序是分不开的。我们先讲解MapReduce阶段,MapReduce可以细分为5个阶段,即split阶段、map阶段、shuffle阶段、reduce阶段、output阶段。
split阶段就是将mr要处理的文件切成分片(这是一个逻辑概念,block是一个物理上的概念,默认切片大小与block块相同,因为如果超过block块,可能会产生跨节点的网络io问题)。
map阶段就是调用map方法的过程,mr程序中会通过textinputformat的子类recordreader将数据处理为kv对的形式,然后每行数据调用一次map方法,这就是map阶段。
接下来是shuffle阶段,每行数据调用一
hadoop框架之hdfs、MapReduce、yarn的整体大致流程
最新推荐文章于 2024-01-20 22:36:34 发布