Hadoop-组件-HDFS-理论笔记-HDFS 架构设计-DataNode 架构-服务层设计-RPC 通信服务
HDFS NameNode 启动流程中启动 Namenode上的 http 服务~~~
启动 NameNode上的 Http服务
一、概述
startHttpServer() 主要作用启动 NameNode上的 Http服务,其时序图如图所示:
二、核心源码
通过代码定位和时序图得知 Namenode 上的 Http服务启动的核心代码为:
2.1. 获取文本传输协议
1 | HttpConfig.Policy policy = DFSUtil.getHttpPolicy(conf); |
hdfs-default.xml
得到文本传输协议:HTTP_ONLY
hdfs-default.xml
得到文本传输协议:HTTP_ONLY
1 | HttpConfig.Policy policy = DFSUtil.getHttpPolicy(conf); |
2.2. 页面访问 IP 地址
1 | final String infoHost = bindAddress.getHostName(); |
得到 NameNode 的页面访问IP地址,默认是:0.0.0.0
2.3. initWebHdfs(conf);
final InetSocketAddress httpAddr = bindAddress;
HttpServer2
Hadoop 喜欢封装自己的东西,比如本来是有 RPC 的,但是 Hadoop 会封装 HadoopRPC 这里面也一样,Hadoop 封装自己的 HttpServer2
2.4. 绑定功能属性
1 | setupServlets(httpServer, conf); |
HttpServer2 绑定了一堆 Servlet,定义好了接收哪些 Http 请求,接收到了请求由谁来处,httpServer.addInternalServlet 就是绑定功能,里面有很多我们就经常常见的一些功能啊
检查文件系统的健康状况
1
httpServer.addInternalServlet("fsck", "/fsck", FsckServlet.class, true);
浏览目录信息
在50071页面,就是通过这个 http://xx.xx.xx.xx:50070/listPath?path=/user/warehouse
1
httpServer.addInternalServlet("listPaths", "/listPaths/*", ListPathsServlet.class, false);
注: 如果有一天想在当前的原生 Hdfs Web 页面添加功能。比如说添加一个修改
按钮,则在这儿再绑定一个功能,绑定完这个功能之后前端找到添加这样一个功能点就行了。然后它调用当前这个ApiServer 地址就可以执行。
2.5. httpServer.start();
启动 HttpServer服务,对外开放 50071 端口
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker!
评论
ValineTwikoo