【HDFS】一文搞懂WebHDFS

本文包含的主要内容如下:
① WebHDFS的原理
② ExternalCall以及WebHdfs请求如何与RPC共用CallQueue
③ ExternalCall的执行与响应过程(sendResponse)
④ WebHdfs和HttpFS的简单区别
⑤ 个人的一些关于webhdfs的总结

一、WebHDFS的原理

1.前置知识:HttpServer2

HDFS自己对Jetty服务器进行了一个封装,这个类就是HttpServer2.

HttpServer2类里面有下面几个跟Web相关的重要的字段:

  protected final Server webServer;

  private final HandlerCollection handlers;

  private final List listeners = Lists.newArrayList();

  protected final WebAppContext webAppContext;

其中:
Server是org.eclipse.jetty.server.Server类型。
HandlerCollection是org.eclipse.jetty.server.handler.HandlerCollection类型。
ServerConnector是org.eclipse.jetty.server.ServerConnector类型。
WebAppContext是org.eclipse.jetty.webapp.WebAppContext类型。
可以看出都是Jetty的相关类,跟Web服务相关。

HDFS中HttpServer2的start方法里面会进行Jetty Web服务器的初始化以及启动操作。

2.initWebHdfs

namenode在启动时会调用startHttpServer()方法。
startHttpServer方法中会去创建NameNodeHttpServer对象并执行其start方法。在start方法里又会去进行各种配置、对象的初始化操作,调用initWebHdfs方法,执行HttpServer2#start方法。最终会去启动Jetty Web Server的start方法,启动服务端。

你可能感兴趣的:(【HDFS】一文搞懂WebHDFS)