所以我们的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>
Except hadoop fs -ls /
仍然失败,没有提到 SOCKS。
有小费吗?
我只是尝试运行作业,而不是管理集群。
我只需要通过 SOCKS 访问 HDFS 并提交作业(似乎在集群节点等之间使用 SSL/代理是完全独立的事情;我不希望这样,我的机器不应该成为集群的一部分,只是一个客户。)
有这方面有用的文档吗?为了说明我未能找到任何有用的东西:我通过运行 hadoop 客户端找到了配置值strace -f
并检查它读取的配置文件。
是否有任何地方描述了它对哪些配置值做出反应? (我确实找到了零参考文档,只是过时的教程,我希望我遗漏了一些东西?)
有没有办法转储它实际使用的配置值?
实现此功能的原始代码已添加到https://issues.apache.org/jira/browse/HADOOP-1822 https://issues.apache.org/jira/browse/HADOOP-1822
但本文还指出,必须将套接字类更改为 SOCKS
http://rainerpeter.wordpress.com/2014/02/12/connect-to-hdfs-using-a-proxy/ http://rainerpeter.wordpress.com/2014/02/12/connect-to-hdfs-using-a-proxy/
with
<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 需要进入核心站点.xml
- mapred.job.tracker 和 mapred.job.tracker.http.address 配置需要进入mapred-site.xml(对于映射减少配置)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)