Hadoop读写原理和MapReduce执行原理

读流程

这里写图片描述

1.openfile 客户端 指定文件的读取路径
2.从namenode那里得到文件块的存储位置(元数据信息)
3.根据元数据信息 去指定的datanode上读文件。如果文件特别大,namenode不会一次性把所有的块信息给客户端 ,而是客户端读一部分,读完之后再找namenode去要。如此循环,知道全部读完。
4.读完之后,关闭输入流

写流程

这里写图片描述
1.create file 客户端获取文件输出流,并指定文件的上传路径,namenode收到后会检查当前客户端是否具有写权限,以及路径的合法性。
2,3,4,5 客户端拿到输出流,如果文件过大,会对文件进行切块,有namenode分配块和副本的存放位置。比如130mb 的文件,切成两块。拿第一个文件块举例,有3个副本,即存储
到3个datanode。此时,在传输的过程中,会形成一个数据流管道,pipeline。
d1-d3-d7。pipeline的工作原理:一个文件块会被先发送到管道里的第一个
datanode=》发给第二个datanode=》发给第三个datanode,于此同时,每个
datanode收到数据块之后,会发送一个ack,依次向上游返回。等第一个文件块的
三个副本都确认复制后之后,再去发送下一个数据块。pipeline设计的目的是充分
利用每台机器的带宽,最小化降低数据推送的延迟。此外,这里用到了通信领域的
全双工通信模式,同时可进行收发。会把一个文件块打散成一个一个128kb大小的
数据包(packet)进行传输

6.写完之后,关输出流

MapReduce执行原理:
这里写图片描述

1.run job 客户端启动,收集job的环境信息,输入输出路径是否合法,不合法报错
2.get new jobid 客户端向jobTracker申请一个唯一性id ,通过这个id唯一性标识当前job,可以根据jobid 查看job 终止job
3.客户端将运算资源(算法job) 上传到hdfs上
4.提交job,告诉jobtracker 可以运行job了
5.jobtracker 初始化job
6.jontracker根据切片数量 计算出map任务的数量 并根据分区数量计算出reduce任务的数量
7.tasktracker发送心跳包的时候领取任务, 对于任务的分配是 :数据的本地化策略。hadoop移动的是运算,而不是数据
8.tasktracker 去hdfs上下载运算资源
9.启动jvm 运行运算资源
10 运算
11处理好的文件 上传到hdfs上。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值