Hadoop 基础学习笔记

Secondary和standby

Secondary Namenode: 主要在1.x 版本中使用。这相当于一个辅助

Standby Namenode:只要是2.x版本使用。如果用Standby的时候,Secondary就用不了了。
相当于一个替身(完全和原来的Namenode一样)

HDFS读写过程

要掌握Hadoop,HDFS读写过程一定要了解。这里我摘抄了一段网络上比较清晰的解释:

写的过程:

1
2
3
4
5
6
7
8
9
10
11
1. CLIENT(客户端):用来发起读写请求,并拆分文件成多个 Block;
2. NAMENODE:全局的协调和把控所有的请求,提供 Block 存放在 DataNode 上的地址;
3. DATANODE:负责数据的存储,可以有很多个;
1. 客户端想 NameNode 发出请求(包含 Blocksize 和 副本数);
2. NameNode 经过计算,反馈给客户端相同副本数的 DataNode,切给出的 DataNode 有优先存储顺序要求;(数据与 DataNode 对应时,一般移动计算,不移动数据)
3. 客户端得到信息后开始写数据,当第一个 DataNode 接受 Block 时,会将该数据传给第二个 DataNode ,第二个 DataNode 接受到数据时,也会将该数据传递给第三个 DataNode;在最后一个 DataNode 接受数据完毕时,则该 Block 全部传输完毕;
4. DataNode 在接受数据完毕后,每一个 DataNode 都会将完毕信息传递给 NameNode;
5. NameNode 将所有 DataNode 反馈的信息(所有数据以传输完毕),反馈给客户端;
6. 客户端接受到 NamaNode 反馈的信息后(第一个 Block 传输完毕),开始发送请求传输第二个 Block;
7. 传输完毕后,在关闭请求之前,NameNode 将该文件所有 Block 存放在 DataNode 上的 ID 保存在文件中;

读过程:

1
2
3
4
5
6
7
1. 客户端:提供文件名、副本数、Block 数量、Block 地址;
2. NameNode:提供 DataNode 地址及内部位置;
1. 客户端提供提供文件名、副本数、Block 数量、Block 地址给 NameNode;
2. NameNode 收到请求后,根据请求给出 副本及其 Block 所存放的 DataNode,以及Block 在 DataNode 中存放的位置;
3. 客户端根据 NameNode 给的信息,给 DataNode 发出请求,由 DataNode 给出数据所在的具体块的信息;
4. 客户端根据 DataNode 提供的信息,下载数据;

HDFS优缺点:

1
2
3
4
5
6
7
8
9
优点:
数据冗余(文件以 Block 并且多副本的方式存储在集群的节点上)、硬件容错;
处理流式的数据访问;(一次写入,多次读取)
适合存储大文件;(通过扩展 DataNode 来实现存储大文件)
可构建在廉价的机器上;(降低成本)
缺点:
低延迟的数据访问;(一般数据较大,不容易实现在秒级别检索数据)
不适合小文件的存储;(无论文件大小,都有对应的元数据存放在 NameNode 上,如果小文件较多,则对应的元数据较多,对应的元数据所占用的内存信息较大,给NameNode 压力较大)

练习题

我看有个选择题答案的正确选项是:
同一个MapReduce job的mapper和reducer可能同时在一台nodemanager上执行。
(像Spark的Narrow dependency那样,不同的mapper和reducer可能同时进行?)
然而我选的选项是:同一台nodemanager一次只会处理一个MapReduce job的作业。(一次可以同时处理很多个job?)

Reference

https://www.cnblogs.com/volcao/p/11446657.html