Hadoop 客户端配置中的 SOCKS 套接字工厂
同时加载 SOCKS 端点和工厂类,然后考虑 Hadoop 针对各协议的工厂覆盖设置。
Hadoop 既需要 SOCKS 端点,也需要读取该端点的客户端套接字工厂。请把两者一起加入该操作加载的 core-site.xml:
<property>
<name>hadoop.socks.server</name>
<value>proxy.example.net:1080</value>
</property>
<property>
<name>hadoop.rpc.socket.factory.class.default</name>
<value>org.apache.hadoop.net.SocksSocketFactory</value>
</property>在 Hadoop 3.4.2 中,SocksSocketFactory 会从其 Configuration 读取 host:port 端点,并按该路由创建 Java 套接字。若要在无代理认证的情况下进行获准的公网 TCP 测试,可使用 SOCKS 代理列表中一条兼容条目提供 hadoop.socks.server;请确认能够访问所有必需的协议目的地和端口。
在假定会选用默认工厂之前,请检查协议专属的键:NetUtils 先检查 hadoop.rpc.socket.factory.class.,再检查协议类的简单名称。只有该查找未选中任何工厂时,它才使用默认值。
因此,来自另一个已加载文件的取值可能让旧工厂继续生效。应检查客户端实际生效的 Configuration,而不是服务器上的某一个 XML 文件。
这适用于 Hadoop 使用该 TCP 工厂的场景。它保留组件的目的地址与 DNS 行为;选择代理并不等于可以杜撰替代的 DNS 结果。