복붙노트

[HADOOP] HDFS 쓰는 동안 소켓 시간 초과 문제를 스파크

HADOOP

HDFS 쓰는 동안 소켓 시간 초과 문제를 스파크

나는 하이브 쿼리를 처리하고 ORC 형식으로 HDFS에 쓰기를 시도하고있다. 하지만 시간 제한 문제를 얻고있다. 나는 스파크 default.conf 체크,하지만 난 그것을 추가해야, 제한 시간 설정이 없다? 나를 수 있도록 변경 사항을 알려 주시기 바랍니다

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

오류의 로그를 첨부

: 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)

org.apache.hadoop.net.ConnectTimeoutException :에 의한 채널 기다리는 연결을위한 준비를하는 동안 20000 밀리 초 시간 초과. CH : java.nio.channels.SocketChannel [: 8020 = 원격 앱 / 64.100.51.136을 접속중인]         org.apache.hadoop.net.NetUtils.connect에서 (NetUtils.java:534)         org.apache.hadoop.net.NetUtils.connect에서 (NetUtils.java:495)         org.apache.hadoop.ipc.Client $ Connection.setupConnection에서 (Client.java:614)         org.apache.hadoop.ipc.Client $ Connection.setupIOstreams에서 (Client.java:708)         org.apache.hadoop.ipc.Client $ Connection.access에서 $ 2900 (Client.java:374)         org.apache.hadoop.ipc.Client.getConnection에서 (Client.java:1531)         org.apache.hadoop.ipc.Client.call에서 (Client.java:1448)         ... (41)보다

해결법

  1. ==============================

    1.문제는 심하게 제공 HDFS 위치에서 온다. 당신은 HDFS를 제공하는 경우 : // 응용 프로그램 / 스파크는 네임 노드의 호스트 이름이 응용 프로그램이라고 가정합니다

    문제는 심하게 제공 HDFS 위치에서 온다. 당신은 HDFS를 제공하는 경우 : // 응용 프로그램 / 스파크는 네임 노드의 호스트 이름이 응용 프로그램이라고 가정합니다

    그래서이 문제를 해결하려면 코드에서 당신은 당신이해야 HDFS 위치를 제공하는 경우 :

  2. from https://stackoverflow.com/questions/37369676/spark-socket-timeout-issue-while-writing-to-hdfs by cc-by-sa and MIT license