我们正在使用hadoop jar
命令运行mapreduce作业。我们的mapreduce代码使用hive API。我们将hive库包含-lbjars
选项。
但是,hive安装在我们所有的数据节点上,因此我们想检查是否需要通过-libjars
选项提供hive jar。我知道任务的类路径可能不包括datanode上的可用库,但它只从-libjars
选项获取库,但我只是想确认一下。
然而,现在的挑战是如何检查mapreduce任务的类路径。我尝试ps -ef | grep java
但输出被截断为4096字节(已知问题),而jps -vl
甚至不会显示类路径。
有没有更简单的方法来找出任务的类路径是由什么组成的? Hadoop将它记录在某个地方?
答案 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?这就是问题...