PIG0.12 HBASE 0.96-PIG 读取HDFS文件插入HBASE问题解决

  • 1.环境描述
  1. 已搭建HADOOP 2.2集群,1NameNode,3DataNode,可用
  2. 已安装配置Pig0.12,可用
  3.   已安装配置HBase 0.96集群,1MASTER3RegionServer
  • 2.问题描述

    按照网上或者相关例子,pig读取一个文件内容,使用HBaseStorage进行Store,第一个遇到的问题是WritableByteArrayComparable NO CLASS FOUND。这个问题是由于HBase版本升级后,这个类已经不存在了。即之前各个版本存在的hbase-{version}.jar已经不再出现在HBase0.96中。经过查询,网上给出各种方法,有一个方法在PIG_CLASSPATH中添加hbase-0.94.1.jar包。该方法的确可以解决WritableByteArrayComparable NO CLASS FOUND的问题。但是随之出现下面的问题。

       脚本执行到Will not attempt to authenticate using SASL (unknown error) ,建立SESSION后卡住,经过10多分钟后,脚本执行错误。查看日志发现错误信息:after 10 tries, no region found for table.但是查看namenode:60010/master-status发现一切状态正常。同时在hbase shell下查询、新建表、插入数据都没有任何问题。到这里后发现找不到解决方案,已经无法进行下去。

    回到最初出现的问题,明显是由于HBASE升级到0.96后,PIG没有针对进行版本的更新。因此到hotonwork网站上下载RHEL 6 and CentOS 6相应已经编译好的文件

 

Project

Download

Hadoop

hadoop-2.2.0.2.0.6.0-76.tar.gz

Pig

pig-0.12.0.2.0.6.0-76.tar.gz

Hive and HCatalog

hive-0.12.0.2.0.6.0-76.tar.gz

hcatalog-0.12.0.2.0.6.0-76.tar.gz

HBase and ZooKeeper

hbase-0.96.0.2.0.6.0-76-hadoop2-bin.tar.gz

zookeeper-3.4.5.2.0.6.0-76.tar.gz

Oozie

oozie-4.0.0.2.0.6.0-76-distro.tar.gz

Sqoop

sqoop-1.4.4.2.0.6.0-76.bin__hadoop-2.2.0.2.0.6.0-76.tar.gz

Flume

apache-flume-1.4.0.2.0.6.0-76-bin.tar.gz

Mahout

mahout-distribution-0.8.0.2.0.6.0-76.tar.gz

       pig安装目录下的 pig-withouthadoop.jar替换掉。

       重新开始跑脚本,发现可以生成MR相关JOB,只是跑JOB会报错:

2014-03-20 15:21:59,185 FATAL [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Error starting MRAppMaster

java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/mapreduce/TableInputFormat

查看HBASE安装目录下的相关JAR包,发现该类是存在的,那么肯定是相关变量设置问题,但是设置相关变量后,重启HADOOP\HBASE等,再次跑脚本仍然存在这个问题。因此使用比较笨的方法,每次跑脚本之前,或者在脚本里:

REGISTER /home/sun/hbase/lib/*.jar;

        再次执行脚本,插入成功。

 

转载请标明出处,素质转载。

猜你喜欢

转载自cctype.iteye.com/blog/2034545
pig