我正在编写一个mapper,想知道是否可以获取映射器正在运行的节点名称。
答案 0 :(得分:3)
Hadoop会自动将MapReduce程序移动到您的数据所在的位置,所以我认为您可以执行getHostName()(如果您使用的是Java),它应该返回运行程序的节点的名称。
java.net.InetAddress.getLocalHost().getHostName();
如果您正在使用其他语言,例如Python,Ruby等(即使用HadoopStreaming),同样的想法也适用,因此您应该能够使用这些语言中可用的相应函数/方法来获取主机名
答案 1 :(得分:0)
配置值fs.default.name
很可能会为您提供namenode的URL,如果您获得了FileSystem的实例(Filesystem.get(conf)
),您应该可以调用getUri()
获取相同信息的方法。