2017-12-07 10 views
0

Ich versuche, Daten in alluxio mit Map reduzieren zu schreiben. Ich habe ungefähr 11 Gig von Daten auf hdfs, die ich zu alluxio schreibe. Es arbeitet gut mit MUST_CACHE write type (der Standardwert von alluxio.user.file.writetype.default).Schreiben von Daten in alluxio mit CACHE_THROUGH schlägt fehl

Aber wenn ich zu schreiben versuchen es CACHE_THROUGH verwendet, wird mit folgenden Ausnahme versagt:

Error: alluxio.exception.status.UnavailableException: Channel to <hostname of one of the worker>:29999: <underfs path to file> (No such file or directory) 
      at alluxio.client.block.stream.NettyPacketWriter.close(NettyPacketWriter.java:263) 
      at com.google.common.io.Closer.close(Closer.java:206) 
      at alluxio.client.block.stream.BlockOutStream.close(BlockOutStream.java:166) 
      at alluxio.client.file.FileOutStream.close(FileOutStream.java:137) 
      at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.close(FSDataOutputStream.java:72) 
      at org.apache.hadoop.fs.FSDataOutputStream.close(FSDataOutputStream.java:106) 
      at org.apache.hadoop.mapreduce.lib.output.TextOutputFormat$LineRecordWriter.close(TextOutputFormat.java:111) 
      at org.apache.hadoop.mapred.MapTask$NewDirectOutputCollector.close(MapTask.java:679) 
      at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:802) 
      at org.apache.hadoop.mapred.MapTask.run(MapTask.java:346) 
      at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163) 
      at java.security.AccessController.doPrivileged(Native Method) 
      at javax.security.auth.Subject.doAs(Subject.java:422) 
      at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1595) 
      at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158) 
    Caused by: alluxio.exception.status.NotFoundException: Channel to <hostname of one of the worker>29999: <underfs path to file> (No such file or directory) 
      at alluxio.exception.status.AlluxioStatusException.from(AlluxioStatusException.java:153) 
      at alluxio.util.CommonUtils.unwrapResponseFrom(CommonUtils.java:548) 
      at alluxio.client.block.stream.NettyPacketWriter$PacketWriteHandler.channelRead(NettyPacketWriter.java:367) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) 
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) 
      at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) 
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) 
      at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:254) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) 
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) 
      at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) 
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) 
      at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:163) 
      at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) 
      at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:319) 
      at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:787) 
      at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:130) 
      at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) 
      at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:468) 
      at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:382) 
      at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:354) 
      at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:116) 
      at java.lang.Thread.run(Thread.java:748) 

Ich habe versucht, mit folgendem Befehl als auch, gleiche Fehler:

./alluxio fs -Dalluxio.user.file.writetype.default=CACHE_THROUGH copyFromLocal <hdfs_input_path> <alluxio_output_path> 

Jede Hilfe/Zeiger werden geschätzt. Danke

Antwort

1

Der Shell-Befehl copyFromLocal kann nur Dateien kopieren, die auf dem lokalen Dateisystem verfügbar sind. Um eine Datei aus HDFS in Alluxio zu kopieren, können Sie zuerst lokal auf die Datei kopieren und dann in Alluxio schreiben.

hdfs dfs -get <hdfs_input_path> /tmp/tmp_file 
alluxio fs copyFromLocal /tmp/tmp_file <alluxio_output_path> 

Um direkt von mapreduce zu Alluxio schreiben, aktualisieren Sie Ihre core-site.xml zu

enthalten
<property> 
    <name>fs.alluxio.impl</name> 
    <value>alluxio.hadoop.FileSystem</value> 
    <description>The Alluxio FileSystem (Hadoop 1.x and 2.x)</description> 
</property> 
<property> 
    <name>fs.AbstractFileSystem.alluxio.impl</name> 
    <value>alluxio.hadoop.AlluxioFileSystem</value> 
    <description>The Alluxio AbstractFileSystem (Hadoop 2.x)</description> 
</property> 

, die Classpath Alluxio Client jar auf Ihre Bewerbung mit -libjars /path/to/client, und schreiben an einen alluxio://master_hostname:19998/alluxio_output_path URI hinzufügen. Weitere Informationen finden Sie unter the documentation.

+0

Danke, es hat funktioniert. – user3811124

Verwandte Themen