Hadoop HDFS源码学习笔记(八)---HdfsProxy

稍微研究了一下HdfsProxy,希望可以了解其机制,简单的实现一个server端

首先看一下其开始的流程图:


在main函数中首先调用了HdfsProxy的createHdfsProxy,在这个函数中new了一个Configuration,然后加载了hdfsproxy-default.xml文件,该文件中有一些基本的配置,需要用户添加,具体用到了什么后边可以看到。

StringUtils.startupShutdownMessage函数主要是用来打开关闭一个LOG的,这里可以不用过多的在意,主要是一个追踪过程

然后new了一个HdfsProxy对象,在构造函数中完成了初始化操作,在这个函数中第一句话就是:

sslAddr = getSslAddr(conf); 

从conf中获得sslAddr

然后是:

String nn = conf.get("hdfsproxy.dfs.namenode.address");

说明在上述提到的xml文件中需要配置namenode的地址

之后根据这个字符串创建了InetSocketAddress,并且new了一个新的configuration,该configuration主要是加载ssl相关的一些配置

然后new了一个ProxyHttpServer对象,传递的参数就是刚创建的sslConf以及从conf中得到的sslAddr

之后就是给这个proxyServer设置一些属性,包括proxy的端口,连接的namenode的地址,当前的conf

然后调用了proxy的addGlobalFilter函数,这个过程主要涉及到hadoop的一些身份认证的过程,暂时不去了解分析,就先放下了

接下来的三句话很关键,在这个proxy中添加注册了不同的servlet,指明了不同的https url的前缀处理的函数不同。

之后就是调用了start函数,开启了server

接下来看一下类图,了解各类之间的关系


HdfsProxy本身并没有做什么事情,它还是使用Hadoop本身的HttpServer,就是增加了一层封装,并且只实现了doGet方法,属于非常简单的server

现在23.1版本的代码不再是使用HdfsProxy,而是一个新的包httpfs,关于这个初步猜测可能是hoop的contribute。暂时没有去分析,以后有机会再说吧 呵呵

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章