关于初学Hadoop的一些简单的问题

这篇博客主要探讨了Hadoop在读写数据流程、Namenode启动、处理小文件策略、安全模式、HDFS可靠性及优缺点等方面的问题。同时,讨论了Datanode宕机后的处理、MapReduce的shuffle流程、任务控制以及Zookeeper在故障恢复中的角色等核心概念。

1、读与写数据流程

写数据流程:
1)客户端发出请求上传文件
2) namenode查看维护的目录结构,检查目录是否存在,如果不存在
	直接报错“no such file or directory”,如果存在,返回给客户端同意上传文
	件请求。将操作写入日志文件(edits)
3) 客户端上传第一个块,询问namenode块的存储位置
4) namenode查看自己的datanode池,返回给客户端一个datanode列表
5) 客户端发出请求建立pipeline(管道) 
6) 客户端先把文件写入缓存,达到一个块的大小时,会在客户端和第一个datanode建
	立连接开始流式传输数据
	这个datanode会一小部分一小部分(4k)的接收数据然后写入本地仓库,同时会把
	这些数据传输到第二个datanode
	第二个datanode也同样一小部分一小部分的接收数据并写入本地仓库,同时传输给第
	三个datanode。(在流式复制时,逐级传输和响应采用响应队列来等待传输结果。队列
	响应完成后返回给客户端)
7) 第一个数据块传输完成后会使用同样的方式传输下面的数据块知道整个文件上传完成
8) 整个文件完成,namenode更新内存元数据

读数据流程:

1)客户端向namenode发起RPC调用,请求读取文件数据
2)namenode检查文件是否存在,如果存在则获取文件的元信息(blockid以及对应的datanode列表)
3)客户端收到元数据后选取一个网络距离最近的datanode,依次请求读取每个数据块。客户端首先
   要校验文件是否损坏,如果损坏,客户端会选取另外的datanode请求
4)datanode与客户端建立socket连接,传输对应的数据块,客户端收到数据缓存到本地,之后写入文件
5)依次传输剩下的数据块,直到整个文件合并完成

2、namenode的启动过程

1)加载镜像文件,还原了checkpoint时间节点前的元数据(包含目录结构,文件大小,块大小,块的id等等),不包含块的存储位置
2)加载edits文件,还原了checkpoint时间节点到集群停止的元数据,不包含块的存储位置,(至此namenode还原的元数据唯一缺失的就是块的存储位置)
3)blockreport阶段,datanode启动,向namenode汇报自己所管理的块及块的id,namenode根据块的ID还原块的存储位置
4)在blockreport结束后,集群会判断,datanode的启动数量(可设置,默认为0),丢失的块的占比(可设置,默认0.999f)
   是否满足退出安装模式的条件,如果满足,30s后退
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值