[HADOOP] hbase MR 작업을 실행할 때 cdh5.2 클러스터에 FileNotFoundException이 발생합니다.
HADOOPhbase MR 작업을 실행할 때 cdh5.2 클러스터에 FileNotFoundException이 발생합니다.
cdh5.2 클러스터에 hbase MR 작업을 실행하는 데 문제가 있습니다.
예를 들어, hbase 클래스 경로를 hadoop 클래스 경로에 추가했습니다.
vi /etc/hadoop/conf/hadoop-env.sh
줄을 추가하십시오 :
export HADOOP_CLASSPATH="/usr/lib/hbase/bin/hbase classpath:$HADOOP_CLASSPATH"
그리고 내가 달릴 때 : hadoop jar /usr/lib/hbase/hbase-server-0.98.6-cdh5.2.1.jar 행 카운터 "mytable"
다음과 같은 예외가 있습니다.
14/12/09 03:44:02 WARN security.UserGroupInformation: PriviledgedActionException as:root (auth:SIMPLE) cause:java.io.FileNotFoundException: File does not exist: hdfs://clusterName/usr/lib/hbase/lib/hbase-client-0.98.6-cdh5.2.1.jar
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.hbase.mapreduce.Driver.main(Driver.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: java.io.FileNotFoundException: File does not exist: hdfs://clusterName/usr/lib/hbase/lib/hbase-client-0.98.6-cdh5.2.1.jar
at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1083)
at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1075)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1075)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:288)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.getFileStatus(ClientDistributedCacheManager.java:224)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.determineTimestamps(ClientDistributedCacheManager.java:93)
at org.apache.hadoop.mapreduce.filecache.ClientDistributedCacheManager.determineTimestampsAndCacheVisibilities(ClientDistributedCacheManager.java:57)
at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:265)
at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSubmitter.java:301)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:394)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1295)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1292)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:1292)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1313)
at org.apache.hadoop.hbase.mapreduce.RowCounter.main(RowCounter.java:191)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:72)
at org.apache.hadoop.util.ProgramDriver.run(ProgramDriver.java:145)
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:153)
해결법
-
==============================
1.따라서 문제는 환경 문제였습니다. 아래 항아리를 / usr / lib / hadoop / lib에 추가했을 때. 모두 잘 작동했습니다
따라서 문제는 환경 문제였습니다. 아래 항아리를 / usr / lib / hadoop / lib에 추가했을 때. 모두 잘 작동했습니다
hbase-client-0.98.6-cdh5.2.1.jar hbase-common-0.98.6-cdh5.2.1.jar hbase-protocol-0.98.6-cdh5.2.1.jar hbase-server-0.98.6-cdh5.2.1.jar hbase-prefix-tree-0.98.6-cdh5.2.1.jar hadoop-core-2.5.0-mr1-cdh5.2.1.jar htrace-core-2.04.jar
내 기계에는 다음과 같은 rpm이 있습니다.
>> rpm -qa | grep cdh zookeeper-3.4.5+cdh5.2.1+84-1.cdh5.2.1.p0.13.el6.x86_64 hadoop-2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6.x86_64 hadoop-0.20-mapreduce-2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6.x86_64 hbase-regionserver-0.98.6+cdh5.2.1+64-1.cdh5.2.1.p0.9.el6.x86_64 cloudera-cdh-5-0.x86_64 bigtop-utils-0.7.0+cdh5.2.1+0-1.cdh5.2.1.p0.13.el6.noarch bigtop-jsvc-0.6.0+cdh5.2.1+578-1.cdh5.2.1.p0.13.el6.x86_64 parquet-1.5.0+cdh5.2.1+38-1.cdh5.2.1.p0.12.el6.noarch hadoop-hdfs-2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6.x86_64 hadoop-mapreduce-2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6.x86_64 hadoop-0.20-mapreduce-tasktracker-2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6.x86_64 hbase-0.98.6+cdh5.2.1+64-1.cdh5.2.1.p0.9.el6.x86_64 avro-libs-1.7.6+cdh5.2.1+69-1.cdh5.2.1.p0.13.el6.noarch parquet-format-2.1.0+cdh5.2.1+6-1.cdh5.2.1.p0.14.el6.noarch hadoop-yarn-2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6.x86_64 hadoop-hdfs-datanode-2.5.0+cdh5.2.1+578-1.cdh5.2.1.p0.14.el6.x86_64
여전히 어떤 rpm이 누락되어 있는지 궁금합니다.
-
==============================
2.CDH 5.2.0에서도 같은 문제가 있습니다. 해결 방법으로 jar 파일을 hdfs에 수동으로 복사했는데 예외가 발생하지 않습니다.
CDH 5.2.0에서도 같은 문제가 있습니다. 해결 방법으로 jar 파일을 hdfs에 수동으로 복사했는데 예외가 발생하지 않습니다.
-
==============================
3.파일을 HDFS에 수동으로 추가하는 대신 hbase 라이브러리 경로를 .bashrc 파일에 추가 할 수 있습니다. hbase의 lib 폴더를 CLASSPATH에 추가하십시오. 또한 hbase의 클래스 경로를 HADOOP_CLASSPATH에 추가하십시오.
파일을 HDFS에 수동으로 추가하는 대신 hbase 라이브러리 경로를 .bashrc 파일에 추가 할 수 있습니다. hbase의 lib 폴더를 CLASSPATH에 추가하십시오. 또한 hbase의 클래스 경로를 HADOOP_CLASSPATH에 추가하십시오.
.bashrc 파일에는 다음이 포함되어야합니다.
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`${HBASE_HOME}/bin/hbase classpath` export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`${HBASE_HOME}/bin/hbase mapredcp` export CLASSPATH=${HBASE_HOME}/lib/*
참고 : CLASSPATH는 hbase 설치 폴더의 lib 폴더를 가리켜 야합니다. 다음을 사용하여 Java 코드를 컴파일하고 실행하십시오.
javac Example.java java -classpath $CLASSPATH:. Example
from https://stackoverflow.com/questions/27374810/my-cdh5-2-cluster-get-filenotfoundexception-when-running-hbase-mr-jobs by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Oozie 워크 플로우에있는 MapReduce 작업에서 감속기 수 설정 (0) | 2019.08.17 |
---|---|
[HADOOP] 하이브 하중 특정 열 (0) | 2019.08.17 |
[HADOOP] hadoop 다중 클러스터에서 SSH 기본 포트 변경 [닫힘] (0) | 2019.08.17 |
[HADOOP] hbase API를 사용하여 지역 이름을 얻는 올바른 방법 (0) | 2019.08.17 |
[HADOOP] java.io.IOException : LocateBlock의 블록 길이를 얻을 수 없습니다 (0) | 2019.08.17 |