[HADOOP] 왜 hbase에서 hbase / lib 폴더를 유지해야합니까?
HADOOP왜 hbase에서 hbase / lib 폴더를 유지해야합니까?
나는 Hbase에 어떤 데이터를 가지고있는 메인 클러스터를 가지고 있으며 그것을 복제하려고한다. 이미 백업 클러스터를 만들고 복제하려는 테이블의 스냅 샷을 만들었습니다. 원본 클러스터에서 스냅 샷을 대상으로 내보내려고 시도했지만 일부 오류가 발생합니다. 나는 실행 중이다.
./hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -snapshot mySnap -copy-to hdfs://198.58.88.11:9000/hbase
그리고 실행의 결과로서 나는 도착했다
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/vagrant/hbase/lib/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/vagrant/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2015-03-05 10:58:43,155 INFO [main] snapshot.ExportSnapshot: Copy Snapshot Manifest
2015-03-05 10:58:43,596 INFO [main] Configuration.deprecation: session.id is deprecated. Instead, use dfs.metrics.session-id
2015-03-05 10:58:43,597 INFO [main] jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
2015-03-05 10:58:43,890 INFO [main] mapreduce.JobSubmitter: Cleaning up the staging area file:/home/vagrant/hadoop/hadoop-datastore/mapred/staging/vagrant1489762780/.staging/job_local1489762780_0001
2015-03-05 10:58:43,892 ERROR [main] snapshot.ExportSnapshot: Snapshot export failed
java.io.FileNotFoundException: File does not exist: hdfs://namenode:9000/home/vagrant/hbase/lib/hbase-client-1.0.0.jar
at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1072)
at org.apache.hadoop.hdfs.DistributedFileSystem$17.doCall(DistributedFileSystem.java:1064)
at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1064)
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:389)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1285)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1282)
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:1282)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1303)
at org.apache.hadoop.hbase.snapshot.ExportSnapshot.runCopyJob(ExportSnapshot.java:775)
at org.apache.hadoop.hbase.snapshot.ExportSnapshot.run(ExportSnapshot.java:934)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.hbase.snapshot.ExportSnapshot.innerMain(ExportSnapshot.java:1008)
at org.apache.hadoop.hbase.snapshot.ExportSnapshot.main(ExportSnapshot.java:1012)
그래서, 내가 알기 론, 그것은 base-client-1.0.0.jar을 찾는다. 그러나 로컬 저장소가 아닌 hdfs : // namenode : 9000 / home / vagrant / hbase / lib / hbase-client-1.0.0.jar 파일을 찾고 있습니다. 왜 그런 일이 벌어지고있는가?
해결법
-
==============================
1.필자의 경우 문제의 원인은 원사의 잘못된 구성과지도 축소입니다. 올바르게 구성한 후에는 문제없이 스냅 샷을 내보낼 수있었습니다.
필자의 경우 문제의 원인은 원사의 잘못된 구성과지도 축소입니다. 올바르게 구성한 후에는 문제없이 스냅 샷을 내보낼 수있었습니다.
mapred-site.xml을 다음과 같이 만듭니다.
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobtracker.address</name> <value>cluster2.master:8021</value> </property> </configuration>
그리고 yarn-site.xml
<property> <name>yarn.resourcemanager.hostname</name> <value>cluster2.master</value> <description>The hostname of the RM.</description> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> <description>shuffle service that needs to be set for Map Reduce to run </description> </property>
cluster2.master는 설정에 따라 변경되어야합니다.
-
==============================
2.나는 Cloudera 5의 HBase 1.0과 HDFS 2.6.0에서 이것을 발견했습니다.
나는 Cloudera 5의 HBase 1.0과 HDFS 2.6.0에서 이것을 발견했습니다.
내가 사용한 것과 실제로 작동하게 만든 해결 방법은 실제로 그 JAR을 HDFS에 복사하는 것입니다. 나는 그것이 추한 것을 알고 있지만 그것은 효과가있어 아무 것도 좋습니다.
시작 :
export CLUSTER_NAME=<your_hdfs_cluster_name>
.. 다음 필요한 디렉토리를 만듭니다 :
hdfs dfs -mkdir -p hdfs://$CLUSTER_NAME/usr/lib/hbase/lib/ hdfs dfs -mkdir -p hdfs://$CLUSTER_NAME/usr/lib/zookeeper hdfs dfs -mkdir -p hdfs://$CLUSTER_NAME/usr/lib/hadoop-mapreduce hdfs dfs -mkdir -p hdfs://$CLUSTER_NAME/usr/lib/hadoop
... 그리고 모든 JAR을 복사하십시오 :
hdfs dfs -cp file:///usr/lib/hbase/lib/*.jar hdfs://$CLUSTER_NAME/usr/lib/hbase/lib/ hdfs dfs -cp file:///usr/lib/zookeeper/*.jar hdfs://$CLUSTER_NAME/usr/lib/zookeeper hdfs dfs -cp file:///usr/lib/hadoop-mapreduce/*.jar hdfs://$CLUSTER_NAME/usr/lib/hadoop-mapreduce hdfs dfs -cp file:///usr/lib/hadoop/*.jar hdfs://$CLUSTER_NAME/usr/lib/hadoop
from https://stackoverflow.com/questions/28877600/why-do-i-need-to-keep-hbase-lib-folder-in-hdfs by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] Hiber와 Hiber를 통합하기 : Hbase 테이블 등록하기 (0) | 2019.06.26 |
---|---|
[HADOOP] 하이브 설치 후 Hadoop (로컬 및 호스트 대상이 일치하지 않음) (0) | 2019.06.26 |
[HADOOP] 프로그램의 hadoop 시작 오류 : PriviledgedActionException (0) | 2019.06.26 |
[HADOOP] 스파크 클러스터 모드에서 제 플린 실행 (0) | 2019.06.26 |
[HADOOP] 하이브 - HiveQL 쿼리를 더욱 최적화 할 수있는 방법이 있습니까? (0) | 2019.06.26 |