2015-12-16 6 views
6

Wir versuchen Cloudera 5.5 wo HDFS wird arbeiten nur auf s3 für die wir haben die notwendigen Eigenschaften in Core-konfiguriert site.xmlErsetze HDFS Formular lokale Festplatte zu s3 Fehler bekommen (org.apache.hadoop.service.AbstractService)

<property> 
    <name>fs.s3a.access.key</name> 
    <value>################</value> 
</property> 
<property> 
    <name>fs.s3a.secret.key</name> 
    <value>###############</value> 
</property> 
<property> 
    <name>fs.default.name</name> 
    <value>s3a://bucket_Name</value> 
</property> 
<property> 
    <name>fs.defaultFS</name> 
    <value>s3a://bucket_Name</value> 
</property> 

Nachdem es der Einrichtung konnten wir die Dateien für s3 Eimer von Befehl

hadoop fs -ls/

durchsuchen und es zeigt die Dateien auf s3 nur.

Aber wenn wir beginnen das Garn Dienste JobHistory Server mit folgenden Fehler nicht anspringt und startet Schwein Jobs, die wir bekommen gleichen Fehler

PriviledgedActionException as:mapred (auth:SIMPLE) cause:org.apache.hadoop.fs.UnsupportedFileSystemException: No AbstractFileSystem for scheme: s3a 
ERROR org.apache.hadoop.mapreduce.v2.jobhistory.JobHistoryUtils 
Unable to create default file context [s3a://kyvosps] 
org.apache.hadoop.fs.UnsupportedFileSystemException: No AbstractFileSystem for scheme: s3a 
    at org.apache.hadoop.fs.AbstractFileSystem.createFileSystem(AbstractFileSystem.java:154) 
    at org.apache.hadoop.fs.AbstractFileSystem.get(AbstractFileSystem.java:242) 
    at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:337) 
    at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:334) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:415) 

Auf serching im Internet fanden wir, dass wir folgende Eigenschaften festlegen müssen, wie auch in Kern-site.xml

<property> 
    <name>fs.s3a.impl</name> 
    <value>org.apache.hadoop.fs.s3a.S3AFileSystem</value> 
    <description>The implementation class of the S3A Filesystem</description> 
</property> 
<property> 
    <name>fs.AbstractFileSystem.s3a.impl</name> 
    <value>org.apache.hadoop.fs.s3a.S3AFileSystem</value> 
    <description>The FileSystem for S3A Filesystem</description> 
</property> 

Nach den obigen Eigenschaften setzen wir werden immer folgende Fehler

org.apache.hadoop.service.AbstractService 
Service org.apache.hadoop.mapreduce.v2.hs.HistoryFileManager failed in state INITED; cause: java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.fs.s3a.S3AFileSystem.<init>(java.net.URI, org.apache.hadoop.conf.Configuration) 
java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.fs.s3a.S3AFileSystem.<init>(java.net.URI, org.apache.hadoop.conf.Configuration) 
    at org.apache.hadoop.fs.AbstractFileSystem.newInstance(AbstractFileSystem.java:131) 
    at org.apache.hadoop.fs.AbstractFileSystem.createFileSystem(AbstractFileSystem.java:157) 
    at org.apache.hadoop.fs.AbstractFileSystem.get(AbstractFileSystem.java:242) 
    at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:337) 
    at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:334) 
    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:1671) 
    at org.apache.hadoop.fs.FileContext.getAbstractFileSystem(FileContext.java:334) 
    at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:451) 
    at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:473) 
    at org.apache.hadoop.mapreduce.v2.jobhistory.JobHistoryUtils.getDefaultFileContext(JobHistoryUtils.java:247) 

Die dafür benötigten Gläser sind an Ort und Stelle, aber immer noch wird der Fehler jede Hilfe wird groß sein. Vielen Dank im Voraus

aktualisieren

Ich habe versucht, die Eigenschaft fs.AbstractFileSystem.s3a.impl zu entfernen, aber es gibt mir die gleiche erste Ausnahme der, die ich vorher war immer die

org.apache.hadoop.security.UserGroupInformation 
PriviledgedActionException as:mapred (auth:SIMPLE) cause:org.apache.hadoop.fs.UnsupportedFileSystemException: No AbstractFileSystem for scheme: s3a 
ERROR org.apache.hadoop.mapreduce.v2.jobhistory.JobHistoryUtils 
Unable to create default file context [s3a://bucket_name] 
org.apache.hadoop.fs.UnsupportedFileSystemException: No AbstractFileSystem for scheme: s3a 
    at org.apache.hadoop.fs.AbstractFileSystem.createFileSystem(AbstractFileSystem.java:154) 
    at org.apache.hadoop.fs.AbstractFileSystem.get(AbstractFileSystem.java:242) 
    at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:337) 
    at org.apache.hadoop.fs.FileContext$2.run(FileContext.java:334) 
    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:1671) 
    at org.apache.hadoop.fs.FileContext.getAbstractFileSystem(FileContext.java:334) 
    at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:451) 
    at org.apache.hadoop.fs.FileContext.getFileContext(FileContext.java:473) 
ist
+0

Wo befinden sich die JAR-Dateien? Befinden sie sich auf allen Knoten an derselben Stelle? –

+0

@DurgaViswanathGadiraju Der Speicherort ist "/opt/cloudera/parcels/CDH-5.5.0-1.cdh5.5.0.p0.8/lib/hadoop" und ja, sie sind an allen Knoten in der gleichen Position –

Antwort

4

Das Problem ist nicht mit der Lage der Gläser.

Das Problem ist mit der Einstellung:

<property> 
    <name>fs.AbstractFileSystem.s3a.impl</name> 
    <value>org.apache.hadoop.fs.s3a.S3AFileSystem</value> 
    <description>The FileSystem for S3A Filesystem</description> 
</property> 

Diese Einstellung ist nicht erforderlich. Aufgrund dieser Einstellung wird die Suche nach folgendem Konstruktor in S3AFileSystem Klasse und es gibt keine solche Konstruktor:

S3AFileSystem(URI theUri, Configuration conf); 

folgende Ausnahme sagt deutlich, dass es nicht in der Lage ist, einen Konstruktor für S3AFileSystem mit URI und Configuration Parametern zu finden.

java.lang.RuntimeException: java.lang.NoSuchMethodException: org.apache.hadoop.fs.s3a.S3AFileSystem.<init>(java.net.URI, org.apache.hadoop.conf.Configuration) 

um dieses Problem zu beheben, entfernen Sie fs.AbstractFileSystem.s3a.impl Einstellung von core-site.xml. Just fs.s3a.impl Einstellung in core-site.xml sollte Ihr Problem lösen.

EDIT: org.apache.hadoop.fs.s3a.S3AFileSystem nur implementiert FileSystem.

Daher können Sie den Wert fs.AbstractFileSystem.s3a.impl nicht auf org.apache.hadoop.fs.s3a.S3AFileSystem setzen, da org.apache.hadoop.fs.s3a.S3AFileSystemAbstractFileSystem nicht implementiert.

Ich benutze Hadoop 2.7.0 und in dieser Version s3A wird nicht als AbstractFileSystem ausgesetzt.

Es gibt JIRA-Ticket: https://issues.apache.org/jira/browse/HADOOP-11262, das gleiche zu implementieren, und das Update ist in Hadoop 2.8.0 verfügbar.

Angenommen, hat Ihr Glas ausgesetzt s3A als AbstractFileSystem, müssen Sie für fs.AbstractFileSystem.s3a.impl folgendes festgelegt:

<property> 
    <name>fs.AbstractFileSystem.s3a.impl</name> 
    <value>org.apache.hadoop.fs.s3a.S3A</value> 
</property> 

, dass Ihr Problem lösen wird.

+0

Ich habe das auch versucht das gibt mir den Fehler "PriviledgedActionException as: mapred (auth: SIMPLE) Ursache: org.apache.hadoop.fs.UnsupportedFileSystemException: Nein AbstractFileSystem für Schema: s3a" Aus diesem Grund habe ich nur die Eigenschaft in der core-stie.xml hinzugefügt Ich werde meine Frage auch aktualisieren –

+0

Können Sie mir sagen, woher nehmen Sie das Glas für s3a-Dateisystem? Dann kann ich Ihr Problem definitiv lösen. Ich habe mir die Implementierung hier angesehen: https://github.com/Aloisius/hadoop-s3a, die nur FileSystem implementiert. –

+0

jar ist in Standard-Speicherort der Cloudera, die "/opt/cloudera/parcels/CDH-5.5.0-1.cdh5.5.0.p0.8/lib/hadoop" der Jar-Name ist Hadoop-AWS-2.6.0 ist -cdh5.5.0.jar –

Verwandte Themen