से Distcp मैं अपने अमेज़ॅन एस 3 बाल्टी में अपने स्थानीय हडूप क्लस्टर (सीडीएच 4) से एक फ़ोल्डर की प्रतिलिपि बनाने के लिए distcp का उपयोग करने की कोशिश कर रहा हूं।स्थानीय हडोप से अमेज़ॅन एस 3
मैं निम्न आदेश का उपयोग:
hadoop distcp -log /tmp/distcplog-s3/ hdfs://nameserv1/tmp/data/sampledata s3n://hdfsbackup/
hdfsbackup मेरी अमेज़न S3 बाल्टी का नाम है।
DistCp अज्ञात मेजबान अपवाद के साथ विफल रहता है:
13/05/31 11:22:33 INFO tools.DistCp: srcPaths=[hdfs://nameserv1/tmp/data/sampledata]
13/05/31 11:22:33 INFO tools.DistCp: destPath=s3n://hdfsbackup/
No encryption was performed by peer.
No encryption was performed by peer.
13/05/31 11:22:35 INFO hdfs.DFSClient: Created HDFS_DELEGATION_TOKEN token 54 for hadoopuser on ha-hdfs:nameserv1
13/05/31 11:22:35 INFO security.TokenCache: Got dt for hdfs://nameserv1; Kind: HDFS_DELEGATION_TOKEN, Service: ha-hdfs:nameserv1, Ident: (HDFS_DELEGATION_TOKEN token 54 for hadoopuser)
No encryption was performed by peer.
java.lang.IllegalArgumentException: java.net.UnknownHostException: hdfsbackup
at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:414)
at org.apache.hadoop.security.SecurityUtil.buildDTServiceName(SecurityUtil.java:295)
at org.apache.hadoop.fs.FileSystem.getCanonicalServiceName(FileSystem.java:282)
at org.apache.hadoop.fs.FileSystem.collectDelegationTokens(FileSystem.java:503)
at org.apache.hadoop.fs.FileSystem.addDelegationTokens(FileSystem.java:487)
at org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodesInternal(TokenCache.java:130)
at org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodesInternal(TokenCache.java:111)
at org.apache.hadoop.mapreduce.security.TokenCache.obtainTokensForNamenodes(TokenCache.java:85)
at org.apache.hadoop.tools.DistCp.setup(DistCp.java:1046)
at org.apache.hadoop.tools.DistCp.copy(DistCp.java:666)
at org.apache.hadoop.tools.DistCp.run(DistCp.java:881)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
at org.apache.hadoop.tools.DistCp.main(DistCp.java:908)
Caused by: java.net.UnknownHostException: hdfsbackup
... 14 more
मैं एडब्ल्यूएस आईडी/गुप्त सभी नोड्स के मूल-site.xml में विन्यस्त है।
<!-- Amazon S3 -->
<property>
<name>fs.s3.awsAccessKeyId</name>
<value>MY-ID</value>
</property>
<property>
<name>fs.s3.awsSecretAccessKey</name>
<value>MY-SECRET</value>
</property>
<!-- Amazon S3N -->
<property>
<name>fs.s3n.awsAccessKeyId</name>
<value>MY-ID</value>
</property>
<property>
<name>fs.s3n.awsSecretAccessKey</name>
<value>MY-SECRET</value>
</property>
मैं बिना किसी समस्या के सीपी कमांड का उपयोग कर hdfs से फ़ाइलों की प्रतिलिपि बनाने में सक्षम हूं। नीचे दिए गए आदेश को सफलतापूर्वक S3
hadoop fs -cp hdfs://nameserv1/tmp/data/sampledata s3n://hdfsbackup/
मैं जानता हूँ कि वहाँ अमेज़न S3 अनुकूलित distcp (s3distcp) उपलब्ध करने के लिए HDFS फ़ोल्डर की नकल की, लेकिन मैं इसे उपयोग करने के लिए के रूप में यह अद्यतन/अधिलेखित विकल्प का समर्थन नहीं करता नहीं करना चाहती।
धन्यवाद, मुझे संदेह है कि यह एक अन्य समस्या (https://issues.apache.org/jira/browse/HADOOP-8408) के आधार पर एक सुरक्षा संबंधी समस्या है जिसका एक समान अपवाद स्टैकट्रैक था। – Mohamed
लाइन डोमेन नाम देखने के लिए बाल्टी का नाम बदलना मेरे लिए काम नहीं करता था। पैच समस्या को हल करता है। – Mohamed