通过SOCKS代理使用Hadoop?

时间:2014-08-01 00:57:55

标签: hadoop proxy

因此,我们的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客户端并查看它读取的配置文件来找到配置值。

是否有任何描述甚至会对哪些配置值作出反应? (我确实找到了零参考文档,只是不同的过时教程,我希望我已经遗漏了什么?)

有没有办法转储它实际使用的配置值?

1 个答案:

答案 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>

编辑:请注意,属性位于不同的文件中:

  1. fs.default.name和hadoop.socks.server以及hadoop.rpc.socket.factory.class.default需要进入 core-site.xml
  2. mapred.job.tracker和mapred.job.tracker.http.address配置需要进入 mapred-site.xml (对于map-reduce配置)