版本说明
hadoop 1.0.3
hbase 0.94.1
hive 0.9.0
执行操作
hive> select count(*) from tablename;
异常提示
exception in thread thread-54 java.lang.runtimeexception: error while reading from task log url
at org.apache.hadoop.hive.ql.exec.errors.tasklogprocessor.getstacktraces(tasklogprocessor.java:240)
at org.apache.hadoop.hive.ql.exec.jobdebugger.showjobfaildebuginfo(jobdebugger.java:227)
at org.apache.hadoop.hive.ql.exec.jobdebugger.run(jobdebugger.java:92)
at java.lang.thread.run(thread.java:662)
caused by: java.io.ioexception: server returned http response code: 400 for url: :50060/tasklog?taskid=attempt_201212192008_0014_m_000000_3&start=-8193
at sun.net.(httpurlconnection.java:1436)
at java.net.url.openstream(url.java:1010)
at org.apache.hadoop.hive.ql.exec.errors.tasklogprocessor.getstacktraces(tasklogprocessor.java:192)
... 3 more
解决步骤
1.异常中的路径(根据自己的异常url地址)
:50060/tasklog?taskid=attempt_201212192008_0014_m_000000_3&start=-8193
修改为:
:50060/tasklog?attemptid=attempt_201212192008_0014_m_000000_3&start=-8193
进行访问
2.页面中有异常具体记录,我这点的异常提示是:
java.lang.noclassdeffounderror: com/google/protobuf/message
明显是缺少某个jar,这个jar可以在hbase的jar中找到protobuf-java-2.4.0a.jar
3.将jar放入hive的lib目录下,修改配置文件conf/hive-site.xml
(如果前面整合过hadoop,hbase,hive的就知道,这里是加载hive默认没有加载的jar)
hive.aux.jars.path
file:///usr/java/hive-0.9.0/lib/protobuf-java-2.4.0a.jar
4.再次执行hive的统计命令,可能还会有异常,因为我的mapreduce前面使用过,,在hadoop中已经 加入过protobuf-java-2.4.0a.jar这个jar,如果以前你没有在hadoop的lib下加入这个jar可能也 会有异常,如果出现异常依然可以根据第一步骤的方法来查看具体的异常。
5.特别提示:如果hadoop以前没有加入这个jar,请将集群所有的机器都加入这个jar,并重启 hadoop或者单独重启mapreduce,重启mapreduce命令如下:
stop-mapred.sh
start-mapred.sh
