因此,我们的Hadoop集群在某些节点上运行,只能从这些节点访问.你通过SSH连接它们并完成你的工作.
因为这很烦人,但是(可以理解)没有人会试图配置访问控制,以便它可以从外部使用,我正在尝试下一个最好的事情,即使用SSH运行SOCKS代理到簇:
$ ssh -D localhost:10000 the.gateway cat
有SOCKS支持的耳语(自然我没有找到任何文档),显然这进入core-site.xml
:
fs.default.name hdfs://reachable.from.behind.proxy:1234/ mapred.job.tracker reachable.from.behind.proxy:5678 hadoop.rpc.socket.factory.class.default org.apache.hadoop.net.SocksSocketFactory hadoop.socks.server localhost:10000
除了hadoop fs -ls /
仍然失败,没有提到SOCKS.
有小费吗?
我只是尝试运行作业,而不是管理集群.我只需要通过SOCKS访问HDFS并提交作业(似乎在集群节点之间使用SSL /代理等完全独立;我不希望这样,我的机器不应该是集群的一部分,只是一个客户.)
那有什么有用的文件吗?为了说明我没有找到任何有用的东西:我通过运行hadoop客户端strace -f
并检查它读取的配置文件来找到配置值.
是否有任何描述甚至会对哪些配置值作出反应?(我确实找到了零参考文档,只是不同的过时教程,我希望我一直在遗漏什么?)
有没有办法转储它实际使用的配置值?
实现此目的的原始代码已添加到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>
编辑:请注意,属性位于不同的文件中:
fs.default.name和hadoop.socks.server以及hadoop.rpc.socket.factory.class.default需要进入core-site.xml
mapred.job.tracker和mapred.job.tracker.http.address config需要进入mapred-site.xml(对于map-reduce config)