我们正在使用hadoop jar
命令运行mapreduce作业。我们的mapreduce代码使用hive api。我们正在包含包含-lbjars
选项的hive库。
然而,hive安装在我们所有的数据节点上,所以我们想检查是否需要通过-libjars
选项提供hive jar。我知道任务的类路径可能不包括datanode上可用的库,但它只从-libjars
选项获得库,但我只是想确认这一点。
然而,现在的挑战是如何检查mapreduce任务的类路径。我尝试了ps -ef | grep java
,但输出被截断为4096字节(已知问题),jps -vl
甚至不会显示我的类路径。
是否有更简单的方法来找出任务的类路径是由什么组成的?Hadoop把它记录在某个地方?
您可以在mapper设置中打印CLASSPATH
,然后在mapper的日志中检查:
@Override
protected void setup(Context context) throws IOException, InterruptedException {
System.out.println(System.getenv("CLASSPATH"));
...
}
#<java_home>/bin/jinfo <pid>
显示了与任务JVM相关的所有信息,包括类路径。在输出中查找java.class.path =
。
现在,如何找出任务的pid ?