我是hadoop
,hbase
和hive
环境的新手。我使用完全分布式模式配置了hadoop和hbase节点。我在hive表中插入了一些示例数据。
我为hbase表创建了一个表配置单元,用于访问hbase表数据并从hive表中读取数据,反之亦然
create external table testing
(key string
, name string
, age int
, year int
, salary int)
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
WITH SERDEPROPERTIES
(hbase.columns.mapping = :key,cf1:name,cf1:id,cf2:year,cf2:salary)
TBLPROPERTIES (hbase.table.name = basetbalename)
和hbase表我创建了两个列族。
create 'hbasetablename' ,'cf1', 'cf2'
一切正常。但是当我从hive覆盖数据到hbase表时会出现错误。我不知道为什么会出现错误。
我试图覆盖像这样的数据
hbase> insert overwrite table sample select concat(name, ':', age) as key,name,age,year,salary from empdetail;'
当我覆盖表时出现以下错误。
查询ID = master_20150411092222_f7cf8d94-8449-48f3-8aff-06ef8213f776 总工作量= 1 启动作业1中的1个减少任务数设置为0,因为没有减少运算符 开始工作= job_1428713373268_0001, 跟踪网址= http://master:8088/proxy/application_1428713373268_0001/ 杀死命令= / home / master / hadoop / bin / hadoop job -kill job_1428713373268_0001 Stage-0的Hadoop作业信息:映射器数量:1;减速机数量:0 2015-04-11 09:23:40,198 Stage-0 map = 0%,
reduce = 0%2015-04-11 09:24:07,628 Stage-0 map = 100%,reduce = 0%,累计CPU3.25秒2015-04-11 09:24:08,674 Stage-0 map = 0%,减少= 0% 2015-04-11 09:24:41,742 Stage-0 map = 100%,reduce = 0%MapReduce累计CPU总时间:3秒250毫秒结束 Job = job_1428713373268_0001有错误在作业期间出错,获取调试信息.. 职位跟踪网址:http://master:8088/proxy/application_1428713373268_0001/正在审核 任务ID:task_1428713373268_0001_m_000000(以及更多)rom job job_1428713373268_0001 失败最多的任务(4):任务ID:task_1428713373268_0001_m_000000 网址:http://master:8088/taskdetails.jsp?jobid=job_1428713373268_0001&tipid=task_1428713373268_0001_m_000000 此任务的诊断消息: 错误:java.lang.RuntimeException:java.lang.NoSuchMethodError:org.apache.hadoop.hbase.client.Put.setDurability(Lorg / apache / hadoop / hbase / client / Durability;)V
在org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:179)at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54) org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:450)org.apache.hadoop.mapred.MapTask.run(MapTask.java:343) 在org.apache.hadoop.mapred.YarnChild $ 2.run(YarnChild.java:163)atjava.security.AccessController.doPrivileged(Native Method)at at javax.security.auth.Subject.doAs(Subject.java:415)在
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
在org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 引起:java.lang.NoSuchMethodError:org.apache.hadoop.hbase.client.Put.setDurability(Lorg / apache / hadoop / hbase / client / Durability;)V 在 org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat $ MyRecordWriter.write(HiveHBaseTableOutputFormat.java:142)在 org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat $ MyRecordWriter.write(HiveHBaseTableOutputFormat.java:117)在 org.apache.hadoop.hive.ql.io.HivePassThroughRecordWriter.write(HivePassThroughRecordWriter.java:40)在 org.apache.hadoop.hive.ql.exec.FileSinkOperator.processOp(FileSinkOperator.java:714)在 org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)在 org.apache.hadoop.hive.ql.exec.SelectOperator.processOp(SelectOperator.java:84)在 org.apache.hadoop.hive.ql.exec.Operator.forward(Operator.java:815)在 org.apache.hadoop.hive.ql.exec.TableScanOperator.processOp(TableScanOperator.java:95)atorg.apache.hadoop.hive.ql.exec.MapOperator $ MapOpCtx.forward(MapOperator.java:157) 在org.apache.hadoop.hive.ql.exec.MapOperator.process(MapOperator.java:493) 在org.apache.hadoop.hive.ql.exec.mr.ExecMapper.map(ExecMapper.java:170) ..还有8个 FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.mr.MapRedTask返回代码2 MapReduce工作推出: Stage-Stage-0:Map:1累积CPU:3.25秒HDFS读取:0 HDFS写入:0失败 总MapReduce CPU耗时:3秒250毫秒
我不知道如何解决这个bug。在hive中我将一些jar文件设置为classpath
add jar ${env:HIVE_HOME}/lib/hbase-hadoop2-compat-1.0.0.jar;
add jar ${env:HIVE_HOME}/lib/hbase-client-1.0.0.jar;
add jar ${env:HIVE_HOME}/lib/zookeeper-3.4.6.jar;
add jar ${env:HIVE_HOME}/lib/hive-hbase-handler-1.1.0.jar;
add jar ${env:HIVE_HOME}/lib/guava-14.0.1.jar;
add jar ${env:HIVE_HOME}/lib/guava-11.0.2.jar;
add jar ${env:HIVE_HOME}/lib/hbase-common-1.0.0.jar;
add jar ${env:HIVE_HOME}/lib/protobuf-java-2.5.0.jar;
add jar ${env:HIVE_HOME}/lib/hbase-protocol-1.0.0.jar;
add jar ${env:HIVE_HOME}/lib/hbase-server-1.0.0.jar;
add jar ${env:HIVE_HOME}/lib/htrace-core-3.1.0-incubating.jar;
我在hive-site.xml
文件中设置了hive aux jar类路径后的值但是没有工作。
我也在hive shell中设置了动态分区。
set hive.exec.dynamic.partition=true
set hive.exec.dynamic.partition.mode=nonstrict;
但它没有用。如果我做了任何对齐和拼写错误,请为此道歉。我不知道错误在哪里。请帮助我。
提前致谢。
答案 0 :(得分:0)
不幸的是,我相信你必须升级Hadoop的版本。
似乎Hive正在尝试访问org.apache.hadoop.hbase.client.Put类的未设置方法。