2016-05-22 9 views
0

Ich versuche, eine Hive-Abfrage zu verarbeiten und in HDFS als ORC-Format zu schreiben. Aber ich bekomme ein Timeout-Problem. Ich habe in Spark-default.conf eingecheckt, aber es gibt keine Timeout-Einstellungen, sollte ich es hinzufügen? Bitte lassen Sie mich die Änderungen kennen zuSpark Socket Timeout Problem beim Schreiben in hdfs

temp = sqlContext.sql(""" query """) 
temp.write.format("orc").option("header", "true").save("hdfs://app/Quality/spark_test/") 

festen Händen zu machen, ist das Protokoll des Fehlers

: org.apache.hadoop.net.ConnectTimeoutException: Call From .. to app:8020 failed on socket timeout exception: org.apache.hadoop.net.ConnectTimeoutException: 20000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=app/64.100.51.136:8020]; For more details see: http://wiki.apache.org/hadoop/SocketTimeout 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526) 
    at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:792) 
    at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:751) 
    at org.apache.hadoop.ipc.Client.call(Client.java:1482) 
    at org.apache.hadoop.ipc.Client.call(Client.java:1409) 
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:229) 
    at com.sun.proxy.$Proxy46.getFileInfo(Unknown Source) 
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getFileInfo(ClientNamenodeProtocolTranslatorPB.java:771) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:187) 
    at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:102) 
    at com.sun.proxy.$Proxy47.getFileInfo(Unknown Source) 
    at org.apache.hadoop.hdfs.DFSClient.getFileInfo(DFSClient.java:2113) 
    at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1305) 
    at org.apache.hadoop.hdfs.DistributedFileSystem$22.doCall(DistributedFileSystem.java:1301) 
    at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81) 
    at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1301) 
    at org.apache.hadoop.fs.FileSystem.exists(FileSystem.java:1460) 
    at org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelation.run(InsertIntoHadoopFsRelation.scala:73) 
    at org.apache.spark.sql.execution.ExecutedCommand.sideEffectResult$lzycompute(commands.scala:58) 
    at org.apache.spark.sql.execution.ExecutedCommand.sideEffectResult(commands.scala:56) 
    at org.apache.spark.sql.execution.ExecutedCommand.doExecute(commands.scala:70) 
    at org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$5.apply(SparkPlan.scala:132) 
    at org.apache.spark.sql.execution.SparkPlan$$anonfun$execute$5.apply(SparkPlan.scala:130) 
    at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:150) 
    at org.apache.spark.sql.execution.SparkPlan.execute(SparkPlan.scala:130) 
    at org.apache.spark.sql.execution.QueryExecution.toRdd$lzycompute(QueryExecution.scala:55) 
    at org.apache.spark.sql.execution.QueryExecution.toRdd(QueryExecution.scala:55) 
    at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:256) 
    at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:148) 
    at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:139) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) 
    at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:381) 
    at py4j.Gateway.invoke(Gateway.java:259) 
    at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) 
    at py4j.commands.CallCommand.execute(CallCommand.java:79) 
    at py4j.GatewayConnection.run(GatewayConnection.java:209) 
    at java.lang.Thread.run(Thread.java:744) 

Verursacht durch: org.apache.hadoop.net.ConnectTimeoutException: 20000 millis Timeout während für den Kanal warten bereit sein für die Verbindung. ch: java.nio.channels.SocketChannel [Verbindung ausstehende remote = app/64.100.51.136: 8020] bei org.apache.hadoop.net.NetUtils.connect (NetUtils.java:534) bei org.apache.hadoop .net.Net.Utils.connect (NetUtils.java:495) bei org.apache.hadoop.ipc.Client $ Connection.setupConnection (Client.java:614) bei org.apache.hadoop.ipc.Client $ Connection.setupIOstreams (Client.java:708) bei org.apache.hadoop.ipc.Client $ Connection.access $ 2900 (Client.java:374) bei org.apache.hadoop.ipc.Client.getConnection (Client.java:1531) bei org.apache.hadoop.ipc.Client.call (Client.java:1448) ... 41 mehr

+0

Sieht aus wie Sie Probleme mit der Verbindung es selbst mit. Hast du erfolgreich etwas geschrieben? Probieren Sie eine kleine Datei aus. –

Antwort

1

Das Problem von schlecht bereitgestellt hdfs loca kommt tion. Wenn Sie hdfs://app/ Funken bieten wird angenommen, dass der NameNode Hostname app ist

So, dieses Problem zu lösen: in Ihrem Code, wenn Sie die hdfs Lage bieten sollten Sie:

  1. Entweder den Hostnamen des NameNode bieten/oder IP, so sollten Sie den Code sein:

    temp.write.format("orc").option("header", "true").save("hdfs://NAMENODE_HOST:8020/app/Quality/spark_test/") 
    
  2. oder, wenn Sie bereits Funken mit HDFS/Yarn, indem Sie die Konfigurationsdateien die Standorte in spark-env.sh, die Bereitstellung der locatio konfiguriert haben n auf HDFS ohne das Protokoll (HDFS), so dass der Code wird sein:

    temp.write.format("orc").option("header", "true").save("/app/Quality/spark_test/")