133.1。你认为你在群集中,但你实际上是本地的

使用ImportTsv发生了以下堆栈跟踪,但是这样的事情可能会在配置错误的任何作业上发生。

 WARN mapred.LocalJobRunner: job_local_0001
java.lang.IllegalArgumentException: Can't read partitions file
       at org.apache.hadoop.hbase.mapreduce.hadoopbackport.TotalOrderPartitioner.setConf(TotalOrderPartitioner.java:111)
       at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:62)
       at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:117)
       at org.apache.hadoop.mapred.MapTask$NewOutputCollector.<init>(MapTask.java:560)
       at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:639)
       at org.apache.hadoop.mapred.MapTask.run(MapTask.java:323)
       at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:210)
Caused by: java.io.FileNotFoundException: File _partition.lst does not exist.
       at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:383)
       at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:251)
       at org.apache.hadoop.fs.FileSystem.getLength(FileSystem.java:776)
       at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1424)
       at org.apache.hadoop.io.SequenceFile$Reader.<init>(SequenceFile.java:1419)
       at org.apache.hadoop.hbase.mapreduce.hadoopbackport.TotalOrderPartitioner.readPartitions(TotalOrderPartitioner.java:296) 

...看到堆栈的关键部分?这是...

at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:210) 

LocalJobRunner 表示作业在本地运行,而不是在群集上运行。

要解决此问题,您应该在设置HADOOP_CLASSPATH的情况下运行 MR 作业以包含 HBase 依赖项。 “hbase classpath”实用程序可用于轻松完成此操作。例如(用您的 HBase 版本替换 VERSION):

HADOOP_CLASSPATH=`hbase classpath` hadoop jar $HBASE_HOME/hbase-mapreduce-VERSION.jar rowcounter usertable 

有关 HBase MapReduce 作业和类路径的更多信息,请参见 HBase,MapReduce 和 CLASSPATH

133.2。启动一项工作,你得到 java.lang.IllegalAccessError:com / google / protobuf / HBaseZeroCopyByteString 或类 com.google.protobuf.ZeroCopyLiteralByteString 无法访问其超类 com.google.protobuf.LiteralByteString

请参阅 HBASE-10304 运行 hbase 作业 jar:IllegalAccessError:类 com.google.protobuf.ZeroCopyLiteralByteString 无法访问其超类 com.google.protobuf.LiteralByteStringHBASE-11118 非环境变量解决方案“ IllegalAccessError:com.google.protobuf.ZeroCopyLiteralByteString 类无法访问其超类 com.google.protobuf.LiteralByteString“。尝试运行 spark 作业时,问题也会出现。参见 HBASE-10877 应扩展 HBase 不可重试的例外列表