hadoop
文章平均质量分 80
@Peanut
这个作者很懒,什么都没留下…
展开
-
源码解析HDFS写数据流程
HDFS写数据流程1)客户端这边先创建一个的RPC客户端,发送给NameNode进行请求,NameNode对这个请求进行判断,判断文件的路径是否存在,是否有权限添加2)客户端创建一个DataStreamer,DataStreamer里创建了一个队列dataQueue,并将dataQueue进行等待;同时DataStreamer从NameNode通过机架感知获取block块可以写到哪些DataNode上3)紧接着客户端会向DataNode请求建立数据传输通道4)然后才真正开始写数据,先写chunk和原创 2021-04-10 22:25:38 · 523 阅读 · 0 评论 -
源码解析Hadoop的DataNode启动时底层都做了哪些事
目录初始化方法1.初始化DataXceiverServer2.初始化HTTP服务3.初始化DataNode的RPC服务端4.DataNode向NameNode注册以hadoop3.x版本为例DataNode启动时做的大致工作如下:DataNode初始化1.初始化了一个DataXceiverServer2.初始化了DataNode的web页面的HTTP服务3.初始化了DataNode的RPC服务,接收客户端对其访问4.向NameNode进行注册5.向NameNode发送相关的心跳信息搜原创 2021-04-09 12:24:58 · 422 阅读 · 1 评论 -
Hadoop的NameNode在启动时都做了哪些事情?源码解析
目录1.启动9870端口服务2.加载镜像文件和编辑日志3.创建RPC服务4.对NameNode启动资源检查5.DataNode心跳超时判断6.安全模式以hadoop3.x版本为例namenode启动时大致有6个步骤1)首先启动9870端口2)启动完端口之后开始加载镜像文件和编辑日志3)紧接着创建RPC服务4)然后开始对NameNode的资源进行检测检测当前磁盘空间是否能够启动NameNode要检查镜像文件和编辑日志的路径上能存储多少内容,默认大小是100M,如果当前磁盘空间小于100M,原创 2021-04-06 23:11:09 · 779 阅读 · 0 评论 -
Hadoop中DataNode和NameNode如何进行通信,源码解析其RPC通信原理
RPC:Remote Procdure Call,远程过程调用;它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网络通信细节,对我们来说是透明的。类似于C/S系统,第三方的客户程序通过接口调用SAP内部的标准或自定义函数,获得函数返回的数据进行处理后显示或打印。模拟 RPC 的客户端、服务端、通信协议三者如何工作的。以mkdirs为例模拟RPC协议,接口中定义一个版本号和mkdirs方法public interface RPCProtocal { long ve原创 2021-03-26 18:15:58 · 846 阅读 · 0 评论 -
一文看懂YARN的资源调度
(1)MR程序提交到客户端所在的节点。(2)YarnRunner向ResourceManager申请一个Application。(3)RM将该应用程序的资源路径返回给YarnRunner。(4)该程序将运行所需资源提交到HDFS上。(5)程序资源提交完毕后,申请运行mrAppMaster。(6)RM将用户的请求初始化成一个Task。(7)其中一个NodeManager领取到Task任务。(8)该NodeManager创建容器Container,并产生MRAppmaster。(9)Conta.原创 2020-08-07 15:37:40 · 1639 阅读 · 0 评论 -
mapreduce过程发生多少次排序
总共可能发生 4 次排序过程:1)Map 阶段: 1.缓冲区的数据达到阈值后,对key按照字典序进行排序(快速排序)(这里的排序是只排索引,不会移动数据在缓冲区的位置) 2.对溢写到磁盘的数据进行分区归并排序2)Reduce 阶段: 3.需要将多个Map任务的输出文件copy到ReduceTask中后合并。按指定分区读取数据到reduce缓存中(不够则落盘),当缓存数据达到阈值时,进行溢写到磁盘,最后对溢写的数据进行归并排序 (这里当溢写到磁盘的文件数量达到合并因子(默认是10)的时候就原创 2020-08-04 10:55:38 · 3112 阅读 · 0 评论 -
shuffle机制详解
将map输出作为输入传递给reducer的过程称为shuffle。shuffle存在于map和reduce阶段。 map阶段大致过程为: 写数据,分区,排序,将属于同一分区的输出合并一起写在磁盘上。 每个map任务都有一个环形内存缓冲区用于存储任务输出。环形内存缓冲区默认大小为100M。 map开始产生输出数据时,先将数据写入缓冲区中,当缓冲区中数据达到阈值(默认为0.8)时,就开始把数据溢出到本地磁盘,溢出的文件成为spill文件。溢出的过程中,map输出的数据会继续写入缓冲区,..原创 2020-08-04 01:12:03 · 4418 阅读 · 0 评论 -
详解Mapreduce工作流程
分为MapTask和ReduceTask阶段MapTask工作机制 (1)Read阶段:MapTask通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value。 (2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value。 (3)Collect收集阶段:在用户编写map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会原创 2020-08-02 17:34:07 · 2356 阅读 · 0 评论 -
一文看懂MapReduce核心编程思想
1)分布式的运算程序往往需要分成至少2个阶段。2)第一个阶段的MapTask并发实例,完全并行运行,互不相干。3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行。总结:分析WordCount数据流走向深入理解MapReduce核心思想。1.概念 Job(作业) : 一个MR程.原创 2020-07-31 18:27:41 · 1536 阅读 · 0 评论 -
Hadoop的DataNode工作机制
1)一个数据块在DataNode上以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是元数据包括数据块的长度,块数据的校验和,以及时间戳。2)DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息。3)心跳是每3秒一次,心跳返回结果带有NameNode给该DataNode的命令如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟没有收到某个DataNode的心跳,则认为该节点不可用。4)集群运行中可以安全加入和退出一些机器。..原创 2020-07-31 12:04:50 · 1180 阅读 · 0 评论 -
NameNode工作机制
1. 第一阶段:NameNode启动(1)第一次启动NameNode格式化后,创建Fsimage和Edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。(2)客户端对元数据进行增删改的请求。(3)NameNode记录操作日志,更新滚动日志。(4)NameNode在内存中对数据进行增删改。2. 第二阶段:Secondary NameNode工作(1)Secondary NameNode询问NameNode是否需要CheckPoint。直接带回NameNode是否检查结果。(2..原创 2020-07-30 17:35:56 · 1838 阅读 · 0 评论 -
HDFS读数据流程
1)客户端通过Distributed FileSystem向NameNode请求下载文件,namenode检查下载的合法性(是否有权限下载以及下载的合法性),NameNode通过查询元数据,找到文件块所在的DataNode地址。2)挑选一台DataNode(就近原则,然后随机)服务器,请求读取数据。3)DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以Packet为单位来做校验)。4)客户端以Packet为单位接收,先在本地缓存,然后写入目标文件。(把下载的block按照顺序依次输..原创 2020-07-29 19:46:01 · 1171 阅读 · 0 评论 -
HDFS写数据流程
大致步骤 ①服务端启动HDFS中的NN和DN进程 ②客户端创建一个分布式文件系统客户端,由客户端向NN发送请求,请求上传文件 ③NN处理请求,检查客户端是否有权限上传,路径是否合法等 ④检查通过,NN响应客户端可以上传 ⑤客户端根据自己设置的块大小,开始上传第一个块,默认0-128M,NN根据客户端上传文件的副本数(默认为3),根据机架感知策略选取指定数量的DN节点返回 ⑥客户端根据返回的DN节点,请求建立传输通道 客户端向最近(网络距离最近)的DN节点发起通道建立请求,由这..原创 2020-07-29 18:19:58 · 1498 阅读 · 0 评论 -
HDFS块大小
块大小取决于dfs.blocksize,2.x默认为128M,1.x默认为64M 默认为128M的原因,基于最佳传输损耗理论! 不论对磁盘的文件进行读还是写,都需要先进行寻址! 最佳传输损耗理论:在一次传输中,寻址时间占用总传输时间的1%时,本次传输的损耗最小,为最佳性价比传输! 目前硬件的发展条件,普通磁盘写的速率大概为100M/S, 寻址时间一般为10ms! 10ms / 1% = 1s 1s * 100M/S=100M 块在传输时,每64K还需要校验一次,因此原创 2020-07-28 20:14:04 · 1983 阅读 · 0 评论 -
配置文件以及简单的Hadoop集群搭建大致步骤
先安装jdk,配置JAVA_HOME变量(1)配置文件:hadoop-env.shcore-site.xmlmapred-site.xmlhdfs-site.xml(2)简单的集群搭建过程:配置 SSH免密登录解压 hadoop压缩包配置 hadoop核心文件: hadoop-env.sh,core-site.xml , mapred-site.xml , hdfs-site.xml配置 hadoop环境变量格式化 namenode...原创 2020-07-27 22:37:59 · 650 阅读 · 0 评论 -
hadoop的组成
hadoop1.x组成: MapReduce(计算+资源调度) HDFS(数据存储) Common(辅助工具)hadoop1.x时:MapReduce同时处理业务逻辑运算和资源调度,耦合性较大hadoop2.x组成: MapReduce(计算) Yarn(资源调度) HDFS(数据存储) Common(辅助工具)hadoop2.x增加了Yarn,Yarn只负责资源调度,MapReduce只负责运算...原创 2020-07-26 19:27:35 · 1014 阅读 · 0 评论 -
hadoop常用端口号
dfs.namenode.http-address: 50070SecondaryNameNode辅助名称节点端口号: 50090dfs.datanode.address: 50010 fs.defaultFS: 8020 或者 9000 yarn.resourcemanager.webapp.address: 8088 历史服务器 web访问端口: 19888原创 2020-07-26 19:07:05 · 663 阅读 · 0 评论