您的位置:首页 > 运维架构 > Shell

确定hive shell的java进程的pid的一种方法

2011-04-13 15:50 260 查看
使用hive的过程中,经常需要diagnose hive运行到了哪个地方,以便进行优化。jstack是常用的工具,可需要java 的process id。但是多个hive shell运行时jps得出的结果令人失望:

 

6874 org.apache.hadoop.util.RunJar -Xmx4096m -Dhadoop.log.dir=/home/hadoop/hadoop/bin/../logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/home/hadoop/hadoop/bin/.. -Dhadoop.id.str= -Dhadoop.root.logger=INFO,console -Djava.library.path=/home/hadoop/hadoop/bin/../lib/native/Linux-amd64-64 -Dhadoop.policy.file=hadoop-policy.xml
6985 org.apache.hadoop.util.RunJar -Xmx4096m -Dhadoop.log.dir=/home/hadoop/hadoop/bin/../logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/home/hadoop/hadoop/bin/.. -Dhadoop.id.str= -Dhadoop.root.logger=INFO,console -Djava.library.path=/home/hadoop/hadoop/bin/../lib/native/Linux-amd64-64 -Dhadoop.policy.file=hadoop-policy.xml


根本 无法辨别哪个是自己使用的hive shell。

 

一个简单的方法,在hive启动的时候,会显示一行类似如下内容:

Hive history file=/tmp/hadoop/hive_job_log_hadoop_201104131547_1147086228.txt

即hive 的历史文件,hive shell会一直hold住这个文件的handle,所以使用 

 

hadoop@arch-server:~/test$ lsof /tmp/hadoop/hive_job_log_hadoop_201104131553_2009456248.txt
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF   NODE NAME
java    7229 hadoop   74w   REG    8,1       67 532506 /tmp/hadoop/hive_job_log_hadoop_201104131553_2009456248.txt
 

这样就获取到了自己的hive shell的pid:7229

 

祝大家玩儿的开心

 

--EOF--

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息