File tree Expand file tree Collapse file tree 7 files changed +39
-8
lines changed Expand file tree Collapse file tree 7 files changed +39
-8
lines changed Original file line number Diff line number Diff line change 34
34
35
35
4 . [ Yarn 调度MapReduce] ( ./docs/Yarn调度MapReduce.md )
36
36
37
- 5 . hdfs读写流程
37
+ 5 . [ hdfs写流程 ] ( ./docs/hdfs写流程.md )
38
38
39
- 6 . hdfs创建一个文件的流程
39
+ 6 . [ hdfs读流程 ] ( ./docs/hdfs读流程.md )
40
40
41
- 7 . hadoop1.x 和hadoop 2.x 的区别
41
+ 7 . hdfs创建一个文件的流程
42
42
43
- 8 . hadoop HA介绍
43
+ 8 . hadoop1.x 和hadoop 2.x 的区别
44
44
45
- 9 . hadoop的配置文件有哪些,自己实际改过哪些?
45
+ 9 . [ hadoop HA介绍 ] ( ./docs/hadoopHA介绍.md )
46
46
47
- 10 . 小文件过多会有什么危害,如何避免 ?
47
+ 10 . hadoop的配置文件有哪些,自己实际改过哪些 ?
48
48
49
- 11 . 启动hadoop集群会分别启动哪些进程,各自的作用
49
+ 11 . 小文件过多会有什么危害,如何避免?
50
+
51
+ 12 . 启动hadoop集群会分别启动哪些进程,各自的作用
50
52
51
53
52
54
Original file line number Diff line number Diff line change 1
1
## Yarn 调度MapReduce过程
2
2
3
- ![ ] ( D:\Note\big-data-interview\BigData-Interview\pictures\ yarn调度mr过程.jpg)
3
+ ![ ] ( ../picturees/ yarn调度mr过程.jpg)
4
4
5
5
1 . Mr程序提交到客户端所在的节点(MapReduce)
6
6
2 . yarnrunner向Resourcemanager申请一个application。
Original file line number Diff line number Diff line change
1
+ ## hadoop HA介绍
2
+
3
+ ![ ] ( ../pictures/hdfs-ha.png )
4
+
5
+ 1 . ** Active NameNode 和 Standby NameNode** :两台 NameNode 形成互备,一台处于 Active 状态,为主 NameNode,另外一台处于 Standby 状态,为备 NameNode,只有主 NameNode 才能对外提供读写服务;
6
+ 2 . ** ZKFailoverController(主备切换控制器,FC)** :ZKFailoverController 作为独立的进程运行,对 NameNode 的主备切换进行总体控制。ZKFailoverController 能及时检测到 NameNode 的健康状况,在主 NameNode 故障时借助 Zookeeper 实现自动的主备选举和切换(当然 NameNode 目前也支持不依赖于 Zookeeper 的手动主备切换);
7
+ 3 . ** Zookeeper 集群** :为主备切换控制器提供主备选举支持;
8
+ 4 . ** 共享存储系统** :共享存储系统是实现 NameNode 的高可用最为关键的部分,共享存储系统保存了 NameNode 在运行过程中所产生的 HDFS 的元数据。主 NameNode 和备 NameNode 通过共享存储系统实现元数据同步。在进行主备切换的时候,新的主 NameNode 在** 确认元数据完全同步之后才能继续对外提供服务** 。
9
+ 5 . ** DataNode 节点** :因为主 NameNode 和备 NameNode 需要共享 HDFS 的数据块和 DataNode 之间的映射关系,为了使故障切换能够快速进行,DataNode 会同时向主 NameNode 和备 NameNode 上报数据块的位置信息。
Original file line number Diff line number Diff line change
1
+ ## hdfs写流程
2
+
3
+ ![ ] ( ../pictures/hdfs写流程.png )
4
+
5
+ 1 . Client 调用 DistributedFileSystem 对象的 ` create ` 方法,创建一个文件输出流(FSDataOutputStream)对象;
6
+ 2 . 通过 DistributedFileSystem 对象与集群的 NameNode 进行一次 RPC 远程调用,在 HDFS 的 Namespace 中创建一个文件条目(Entry),此时该条目没有任何的 Block,NameNode 会返回该数据每个块需要拷贝的 DataNode 地址信息;
7
+ 3 . 通过 FSDataOutputStream 对象,开始向 DataNode 写入数据,数据首先被写入 FSDataOutputStream 对象内部的数据队列中,数据队列由 DataStreamer 使用,它通过选择合适的 DataNode 列表来存储副本,从而要求 NameNode 分配新的 block;
8
+ 4 . DataStreamer 将数据包以流式传输的方式传输到分配的第一个 DataNode 中,该数据流将数据包存储到第一个 DataNode 中并将其转发到第二个 DataNode 中,接着第二个 DataNode 节点会将数据包转发到第三个 DataNode 节点;
9
+ 5 . DataNode 确认数据传输完成,最后由第一个 DataNode 通知 client 数据写入成功;
10
+ 6 . 完成向文件写入数据,Client 在文件输出流(FSDataOutputStream)对象上调用 ` close ` 方法,完成文件写入;
11
+ 7 . 调用 DistributedFileSystem 对象的 complete 方法,通知 NameNode 文件写入成功,NameNode 会将相关结果记录到 editlog 中。
Original file line number Diff line number Diff line change
1
+ ## hdfs读流程
2
+
3
+ ![ ] ( ../pictures/hdfs读流程.png )
4
+
5
+ 1 . Client 通过 DistributedFileSystem 对象与集群的 NameNode 进行一次 RPC 远程调用,获取文件 block 位置信息;
6
+ 2 . NameNode 返回存储的每个块的 DataNode 列表;
7
+ 3 . Client 将连接到列表中最近的 DataNode;
8
+ 4 . Client 开始从 DataNode 并行读取数据;
9
+ 5 . 一旦 Client 获得了所有必须的 block,它就会将这些 block 组合起来形成一个文件。
You can’t perform that action at this time.
0 commit comments