在Hadoop中,如何在数据节点上查看任务的类路径

时间:2014-08-17 16:56:00

标签: hadoop mapreduce jvm classpath

我们正在使用hadoop jar命令运行mapreduce作业。我们的mapreduce代码使用hive API。我们将hive库包含-lbjars选项。

但是,hive安装在我们所有的数据节点上,因此我们想检查是否需要通过-libjars选项提供hive jar。我知道任务的类路径可能不包括datanode上的可用库,但它只从-libjars选项获取库,但我只是想确认一下。

然而,现在的挑战是如何检查mapreduce任务的类路径。我尝试ps -ef | grep java但输出被截断为4096字节(已知问题),而jps -vl甚至不会显示类路径。

有没有更简单的方法来找出任务的类路径是由什么组成的? Hadoop将它记录在某个地方?

2 个答案:

答案 0 :(得分:0)

您可以在映射器设置中打印CLASSPATH,然后在映射器的日志中进行检查:

@Override
protected void setup(Context context) throws IOException, InterruptedException {
   System.out.println(System.getenv("CLASSPATH"));
   ...
}

答案 1 :(得分:0)

#<java_home>/bin/jinfo <pid>

向我展示了与任务JVM相关的所有信息,包括classpath。在输出中查找java.class.path =

现在,如何找出任务的pid?这就是问题...