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

本文详细介绍了HdfsProxy的工作机制及其实现流程。通过分析源码,解释了如何配置并启动HdfsProxy服务,包括加载配置文件、初始化SSL地址、设置HTTP服务器等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

稍微研究了一下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。暂时没有去分析,以后有机会再说吧 呵呵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值