面试题总结–Hadoop
文章目录
- 面试题总结--Hadoop
-
- 1. Hadoop常用端口号
- 2. HDFS读流程和写流程
- 3. MapReduce的程序的运行流程
1. Hadoop常用端口号
组件 | 节点 | 默认端口 | 配置 | 用途说明 |
---|---|---|---|---|
HDFS | DataNode | 50010 | dfs.datanode.address | datanode服务端口,用于数据传输 |
HDFS | DataNode | 50075 | dfs.datanode.http.address | http服务的端口 |
HDFS | DataNode | 50475 | dfs.datanode.https.address | https服务的端口 |
HDFS | DataNode | 50020 | dfs.datanode.ipc.address | ipc服务的端口 |
HDFS | NameNode | 50070 | dfs.namenode.http-address | http服务的端口 |
HDFS | NameNode | 50470 | dfs.namenode.https-address | https服务的端口 |
HDFS | NameNode | 8020 | fs.defaultFS | 接收Client连接的RPC端口,用于获取文件系统metadata信息。 |
HDFS | journalnode | 8485 | dfs.journalnode.rpc-address | RPC服务 |
HDFS | journalnode | 8480 | dfs.journalnode.http-address | HTTP服务 |
HDFS | ZKFC | 8019 | dfs.ha.zkfc.port | ZooKeeper |
YARN | ResourceManager | 8032 | yarn.resourcemanager.address | RM的applications |
YARN | ResourceManager | 8030 | yarn.resourcemanager.scheduler.address | scheduler组件的IPC端口 |
YARN | ResourceManager | 8031 | yarn.resourcemanager.resource-tracker.address | IPC |
YARN | ResourceManager | 8033 | yarn.resourcemanager.admin.address | IPC |
YARN | ResourceManager | 8088 | yarn.resourcemanager.webapp.address | http服务端口 |
YARN | NodeManager | 8040 | yarn.nodemanager.localizer.address | localizer |
YARN | NodeManager | 8042 | yarn.nodemanager.webapp.address | http服务端口 |
YARN | NodeManager | 8041 | yarn.nodemanager.address | NM中container |
YARN | JobHistory Server | 10020 | mapreduce.jobhistory.address | IPC |
YARN | JobHistory Server | 19888 | mapreduce.jobhistory.webapp.address | http服务端口 |
2. HDFS读流程和写流程
HDFS的读数据流程:
客户端将要读取的文件路径发送给namenode,namonode获取文件的元信息(主要是block的存放位置信息)返回给客户端,客户端根据返回的信息找到相应datanode逐个获取文件的block并在客户端本地进行数据追加合并从而获得整个文件。
HDFS的写数据流程:
客户端要向HDFS写数据,首先要跟namenode通信以确认可以写文件并获得接受文件block的datanode,然后,客户端按顺序将文件逐个block传递给相应datanode,并由接收到block的datanode负责向其他datanode复制block的副本
- client发写数据请求
-
namenode响应请求,然后做一系列校验,如果能上传该数据,则返回该文件的所有切块应该被存在哪些datanode上的datanodes列表
blk-001:hadoop02 hadoop03
blk-002:hadoop03 hadoop04
- client拿到datanode列表之后,开始传数据
- 首先传第一块blk-001,datanode列表就是hadoop02,hadoop03,client就把blk-001传到hadoop02和hadoop03上
- …用传带一个数据块同样的方式传其他的数据
- 当所有的数据块都传完之后,client会给namenode返回一个状态信息,表示数据已全部写入成功,或者是失败的信息
- namenode接受到client返回的状态信息来判断当次写入数据的请求是否成功,如果成功,就需要更新元数据信息。