因此,我们的Hadoop集群在某些节点上运行,只能从这些节点访问。你通过SSH连接它们并开展工作。
因为这非常烦人,但是(可以理解)没有人会试图配置访问控制,以便它可以从外部使用,我尝试下一个最好的事情,即使用SSH运行进入集群的SOCKS代理:
$ ssh -D localhost:10000 the.gateway cat
有SOCKS支持的耳语(当然我还没有找到任何文档),显然是core-site.xml
:
<property>
<name>fs.default.name</name>
<value>hdfs://reachable.from.behind.proxy:1234/</value></property>
<property>
<name>mapred.job.tracker</name>
<value>reachable.from.behind.proxy:5678</value></property>
<property>
<name>hadoop.rpc.socket.factory.class.default</name>
<value>org.apache.hadoop.net.SocksSocketFactory</value></property>
<property>
<name>hadoop.socks.server</name>
<value>localhost:10000</value></property>
除hadoop fs -ls /
之外仍然失败,没有提及SOCKS。
任何提示?
我只是尝试运行作业,而不是管理群集。 我只需要通过SOCKS访问HDFS并提交作业(在集群节点之间使用SSL /代理等似乎是完全独立的;我不想要这样,我的机器不应该&#39;是集群的一部分,只是一个客户。)
有没有有用的文件?为了说明我未能找到有用的东西:我通过strace -f
运行hadoop客户端并查看它读取的配置文件来找到配置值。
是否有任何描述甚至会对哪些配置值作出反应? (我确实找到了零参考文档,只是不同的过时教程,我希望我已经遗漏了什么?)
有没有办法转储它实际使用的配置值?
答案 0 :(得分:5)
在https://issues.apache.org/jira/browse/HADOOP-1822
中添加了实现此功能的原始代码但是本文还指出您必须将套接字类更改为SOCKS
http://rainerpeter.wordpress.com/2014/02/12/connect-to-hdfs-using-a-proxy/
与
<property>
<name>hadoop.rpc.socket.factory.class.default</name>
<value>org.apache.hadoop.net.SocksSocketFactory</value>
</property>
编辑:请注意,属性位于不同的文件中: