2017-07-20 4 views
0

Ich bekomme den folgenden Fehler, wenn ich versuche, Streaming-Daten in Hadoop durch Flume zu bekommen.HDFS IO-Fehler (Hadoop 2.8) mit Flume

Ich habe Link in Gerinne erstellt/lib diesem Punkt auf die .jar Dateien in Hadoop/share/hadoop/

Ich doppelt die URL geprüft und ich glaube, sie sind alle richtig. Ich dachte an das Posting, um noch mehr Augen und Feedback zu bekommen.

 2017-07-20 10:53:18,959 (SinkRunner-PollingRunner-DefaultSinkProcessor) [WARN -org.apache.flume.sink.hdfs.HDFSEventSink.process HDFSEventSink.java:455)] HDFS IO error 
     java.io.IOException: No FileSystem for scheme: hdfs 
     at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2798) 
     at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2809) 
     at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:100) 
     at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2848) 
     at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2830) 
     at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:389) 
     at org.apache.hadoop.fs.Path.getFileSystem(Path.java:356) 
     at org.apache.flume.sink.hdfs.BucketWriter$1.call(BucketWriter.java:243) 
     at org.apache.flume.sink.hdfs.BucketWriter$1.call(BucketWriter.java:235) 
     at org.apache.flume.sink.hdfs.BucketWriter$9$1.run(BucketWriter.java:679) 
     at org.apache.flume.auth.SimpleAuthenticator.execute(SimpleAuthenticator.java:50) 
     at org.apache.flume.sink.hdfs.BucketWriter$9.call(BucketWriter.java:676) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:748) 

Hier ist die Flume Sink Config

agent1.sinks.PurePathSink.type = hdfs 
agent1.sinks.PurePathSink.hdfs.path = hdfs://127.0.0.1:9000/User/bts/pp 
agent1.sinks.PurePathSink.hdfs.fileType = DataStream 
agent1.sinks.PurePathSink.hdfs.filePrefix = export 
agent1.sinks.PurePathSink.hdfs.fileSuffix = .txt 
agent1.sinks.PurePathSink.hdfs.rollInterval = 120 
agent1.sinks.PurePathSink.hdfs.rollSize = 131072 

Kern-site.xml - Hadoop 2,8

<configuration> 

    <property> 
     <name>hadoop.tmp.dir</name> 
     <value>/home1/tmp</value> 
     <description>A base for other temporary directories</description> 
    </property> 
    <property> 
     <name>fs.default.name</name> 
     <value>hdfs://127.0.0.1:9000</value> 
    </property> 

    <property> 
     <name>fs.file.impl</name> 
     <value>org.apache.hadoop.fs.LocalFileSystem</value> 
     <description>The FileSystem for file: uris.</description> 
    </property> 

    <property> 
     <name>fs.hdfs.impl</name> 
     <value>org.apache.hadoop.hdfs.DistributedFileSystem</value> 
     <description>The FileSystem for hdfs: uris.</description> 
    </property> 

Antwort

0

In meinem c Ich habe festgestellt, dass die Pfade explizit gelöst wurden, um das Problem zu lösen. Es hatte damit zu tun, mit welchem ​​Jar es aufging.

Dank @V.Bravo für Ihre Antwort. Ich bin nicht eine Verteilung verwenden, aber eine Gruppe von meiner eigenen

  • Moses
+0

Hey @moses Ich verstehe im Stehen nicht, was Sie genau gemacht haben. Ich stoße auf ein ähnliches Problem, kann aber immer noch nicht herausfinden, was zu tun ist – Ali

0

an Ihrem Flume Sink Blick scheint es, dass Sie nicht laufen diese ein Cluster, aber auf einem lokalen Host.

Überprüfen Sie die HDFS Pfad, ob er zugänglich ist:

agent1.sinks.PurePathSink.hdfs.path = hdfs://127.0.0.1:9000/User/bts/pp 

Die Portnummer der Regel ist 8020 (wenn Sie Cloudera Distribution verwenden)

Bitte auch den unten stehenden Link für die Fehler Replikation und Lösung : [Gelöst Cloudera: FLUME + IO-Fehler Problem]

https://community.cloudera.com/t5/Storage-Random-Access-HDFS/Flume-HDFS-IO-error-ConnectException/td-p/28157