Hadoop HDFS源码学习笔记(八)

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

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

Hadoop HDFS源码学习笔记(八)

在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

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

Hadoop HDFS源码学习笔记(八)

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

现在23.1版本的代码不再是使用HdfsProxy,而是一个新的包httpfs,关于这个初步猜测可能是hoop的contribute。

相关阅读:

Hadoop HDFS源码学习笔记(一)

Hadoop HDFS源码学习笔记(二)

Hadoop HDFS源码学习笔记(三)

Hadoop HDFS源码学习笔记(四)

Hadoop HDFS源码学习笔记(五)

Hadoop HDFS源码学习笔记(六)

Hadoop HDFS源码学习笔记(七)--DFSInputStream -- openInfo

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

更多Hadoop相关信息见Hadoop 专题页面 ?tid=13

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/04a8aa9d7d55cafa4f47757f4dbedfbc.html