Skip to content

Commit 469fa9f

Browse files
committed
更新题目
1 parent 61e12ba commit 469fa9f

File tree

7 files changed

+39
-8
lines changed

7 files changed

+39
-8
lines changed

README.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,21 @@
3434

3535
4. [Yarn 调度MapReduce](./docs/Yarn调度MapReduce.md)
3636

37-
5. hdfs读写流程
37+
5. [hdfs写流程](./docs/hdfs写流程.md)
3838

39-
6. hdfs创建一个文件的流程
39+
6. [hdfs读流程](./docs/hdfs读流程.md)
4040

41-
7. hadoop1.x 和hadoop 2.x 的区别
41+
7. hdfs创建一个文件的流程
4242

43-
8. hadoop HA介绍
43+
8. hadoop1.x 和hadoop 2.x 的区别
4444

45-
9. hadoop的配置文件有哪些,自己实际改过哪些?
45+
9. [hadoop HA介绍](./docs/hadoopHA介绍.md)
4646

47-
10. 小文件过多会有什么危害,如何避免?
47+
10. hadoop的配置文件有哪些,自己实际改过哪些?
4848

49-
11. 启动hadoop集群会分别启动哪些进程,各自的作用
49+
11. 小文件过多会有什么危害,如何避免?
50+
51+
12. 启动hadoop集群会分别启动哪些进程,各自的作用
5052

5153

5254

docs/Yarn调度MapReduce.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## Yarn 调度MapReduce过程
22

3-
![](D:\Note\big-data-interview\BigData-Interview\pictures\yarn调度mr过程.jpg)
3+
![](../picturees/yarn调度mr过程.jpg)
44

55
1. Mr程序提交到客户端所在的节点(MapReduce)
66
2. yarnrunner向Resourcemanager申请一个application。

docs/hadoopHA介绍.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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 上报数据块的位置信息。

docs/hdfs写流程.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
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 中。

docs/hdfs读流程.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
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 组合起来形成一个文件。

pictures/hdfs写流程.png

78.7 KB
Loading

pictures/hdfs读流程.png

173 KB
Loading

0 commit comments

Comments
 (0)