Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 当有未完成的请求时,外部洗牌服务连接空闲超过120秒_Amazon Web Services_Apache Spark_Yarn - Fatal编程技术网

Amazon web services 当有未完成的请求时,外部洗牌服务连接空闲超过120秒

Amazon web services 当有未完成的请求时,外部洗牌服务连接空闲超过120秒,amazon-web-services,apache-spark,yarn,Amazon Web Services,Apache Spark,Yarn,我正在做一项关于纱线的工作。作业在amazon EMR上正常运行。带有m4.xlarge的1个主设备和2个从设备 我已经使用aws ec2机器使用HDP2.6发行版设置了类似的infra。但是spark作业在某个特定阶段被卡住了,过了一段时间,我在容器日志中得到了以下错误。主要错误似乎是洗牌服务处于空闲状态 18/06/25 07:15:31 INFO spark.MapOutputTrackerWorker:正在提取;跟踪器端点=NettyRpcEndpointRefspark://MapOu

我正在做一项关于纱线的工作。作业在amazon EMR上正常运行。带有m4.xlarge的1个主设备和2个从设备

我已经使用aws ec2机器使用HDP2.6发行版设置了类似的infra。但是spark作业在某个特定阶段被卡住了,过了一段时间,我在容器日志中得到了以下错误。主要错误似乎是洗牌服务处于空闲状态

18/06/25 07:15:31 INFO spark.MapOutputTrackerWorker:正在提取;跟踪器端点=NettyRpcEndpointRefspark://MapOutputTracker@10.210.150.150:44343 18/06/25 07:15:31 INFO spark.MapOutputTrackerWorker:没有用于随机播放9的贴图输出,正在获取它们 18/06/25 07:15:31 INFO spark.MapOutputTrackerWorker:没有用于随机播放9的贴图输出,正在获取它们 18/06/25 07:15:31 INFO spark.MapOutputTrackerWorker:获取了输出位置 18/06/25 07:15:31信息存储。ShuffleBlockFetcheriator:从1000个块中获取5个非空块 18/06/25 07:15:31信息存储。ShuffleBlockFetcherInterator:在0毫秒内启动了1次远程抓取 18/06/25 07:15:31信息存储。ShuffleBlockFetcheriator:从1000个块中获取5个非空块 18/06/25 07:15:31信息存储。ShuffleBlockFetcherInterator:在0毫秒内启动了0次远程抓取 18/06/25 07:15:31信息存储。ShuffleBlockFetcheriator:从1000个块中获取5个非空块 18/06/25 07:15:31信息存储。ShuffleBlockFetcherInterator:在0毫秒内启动了1次远程抓取 18/06/25 07:15:31信息存储。ShuffleBlockFetcheriator:从1000个块中获取5个非空块 18/06/25 07:15:31信息存储。ShuffleBlockFetcherInterator:在1毫秒内启动了1次远程回迁 18/06/25 07:15:31信息codegen.CodeGenerator:在4.822611毫秒内生成的代码 18/06/25 07:15:31信息codegen.CodeGenerator:在8.430244毫秒内生成的代码 18/06/25 07:17:31错误server.TransportChannelHandler:到ip-10-210-150-180的连接。*******/10.210.150.180:7447已静默120000毫秒,但有未完成的请求。假设连接已断开;如果错误,请调整spark.network.timeout。 18/06/25 07:17:31错误client.TransportResponseHandler:当ip-10-210-150-180的连接关闭时,仍有307个请求未完成。**********/10.210.150.180:7447 18/06/25 07:17:31信息洗牌。RetryingBlockFetcher:在5000毫秒后为197个未完成的块重试1/3的获取 18/06/25 07:17:31错误shuffle.OneForOneBlockFetcher:启动块提取时失败 java.io.IOException:从ip-10-210-150-180的连接。*******/10.210.150.180:7447关闭 位于org.apache.spark.network.client.TransportResponseHandler.channelInactivateTransportResponseHandler.java:146 位于org.apache.spark.network.server.TransportChannelHandler.channelInactivateTransportChannelHandler.java:108 在io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviabstractChannelHandlerContext.java:241 位于io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviableStractChannelHandlerContext.java:227 位于io.netty.channel.AbstractChannelHandlerContext.FireChannelInactivateAbstractChannelHandlerContext.java:220 在io.netty.channel.ChannelInboundHandlerAdapter.channelInactiveVechannelInboundHandlerAdapter.java:75 在io.netty.handler.timeout.IdleStateHandler.channelInactiveIdleStateHandler.java:278 在io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviabstractChannelHandlerContext.java:241 位于io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviableStractChannelHandlerContext.java:227 位于io.netty.channel.AbstractChannelHandlerContext.FireChannelInactivateAbstractChannelHandlerContext.java:220 在io.netty.channel.ChannelInboundHandlerAdapter.channelInactiveVechannelInboundHandlerAdapter.java:75 在io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviabstractChannelHandlerContext.java:241 位于io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviableStractChannelHandlerContext.java:227 位于io.netty.channel.AbstractChannelHandlerContext.FireChannelInactivateAbstractChannelHandlerContext.java:220 在io.netty.channel.ChannelInboundHandlerAdapter.channelInactiveVechannelInboundHandlerAdapter.java:75 位于org.apache.spark.network.util.TransportFrameDecoder.channelInactivateTransportFrameDecoder.java:182 在io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviabstractChannelHandlerContext.java:241 位于io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviableStractChannelHandlerContext.java:227 位于io.netty.channel.AbstractChannelHandlerContext.FireChannelInactivateAbstractChannelHandlerContext.java:220 在io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactiveDefaultChannelPipeline.java:1289 在io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviabstractChannelHandlerContext.java:241 位于io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviableStractChan java:227 位于io.netty.channel.DefaultChannelPipeline.FireChannelInactivateDefaultChannelPipeline.java:893 在io.netty.channel.AbstractChannel$Abstract7.runAbstractChannel.java:691 位于io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasksSingleThreadEventExecutor.java:399 位于io.netty.channel.nio.NioEventLoop.runNioEventLoop.java:446 位于io.netty.util.concurrent.SingleThreadEventExecutor$2.runSingleThreadEventExecutor.java:131 位于io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.runDefaultThreadFactory.java:144 java:748 18/06/25 07:17:31信息混洗。RetryingBlockFetcher:在5000毫秒后为166个未完成的块重试1/3的抓取 18/06/25 07:17:31错误shuffle.OneForOneBlockFetcher:启动块提取时失败 java.io.IOException:从ip-10-210-150-180的连接。*******/10.210.150.180:7447关闭 位于org.apache.spark.network.client.TransportResponseHandler.channelInactivateTransportResponseHandler.java:146 位于org.apache.spark.network.server.TransportChannelHandler.channelInactivateTransportChannelHandler.java:108 在io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviabstractChannelHandlerContext.java:241 位于io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviableStractChannelHandlerContext.java:227 位于io.netty.channel.AbstractChannelHandlerContext.FireChannelInactivateAbstractChannelHandlerContext.java:220 在io.netty.channel.ChannelInboundHandlerAdapter.channelInactiveVechannelInboundHandlerAdapter.java:75 在io.netty.handler.timeout.IdleStateHandler.channelInactiveIdleStateHandler.java:278 在io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviabstractChannelHandlerContext.java:241 位于io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviableStractChannelHandlerContext.java:227 位于io.netty.channel.AbstractChannelHandlerContext.FireChannelInactivateAbstractChannelHandlerContext.java:220 在io.netty.channel.ChannelInboundHandlerAdapter.channelInactiveVechannelInboundHandlerAdapter.java:75 在io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviabstractChannelHandlerContext.java:241 位于io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviableStractChannelHandlerContext.java:227 位于io.netty.channel.AbstractChannelHandlerContext.FireChannelInactivateAbstractChannelHandlerContext.java:220 在io.netty.channel.ChannelInboundHandlerAdapter.channelInactiveVechannelInboundHandlerAdapter.java:75 位于org.apache.spark.network.util.TransportFrameDecoder.channelInactivateTransportFrameDecoder.java:182 在io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviabstractChannelHandlerContext.java:241 位于io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviableStractChannelHandlerContext.java:227 位于io.netty.channel.AbstractChannelHandlerContext.FireChannelInactivateAbstractChannelHandlerContext.java:220 在io.netty.channel.DefaultChannelPipeline$HeadContext.channelInactiveDefaultChannelPipeline.java:1289 在io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviabstractChannelHandlerContext.java:241 位于io.netty.channel.AbstractChannelHandlerContext.InvokeChannelActiviableStractChannelHandlerContext.java:227 位于io.netty.channel.DefaultChannelPipeline.FireChannelInactivateDefaultChannelPipeline.java:893 在io.netty.channel.AbstractChannel$Abstract7.runAbstractChannel.java:691 位于io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasksSingleThreadEventExecutor.java:399 位于io.netty.channel.nio.NioEventLoop.runNioEventLoop.java:446 位于io.netty.util.concurrent.SingleThreadEventExecutor$2.runSingleThreadEventExecutor.java:131 位于io.netty.util.concurrent.DefaultThreadFactory$DefaultRunnableDecorator.runDefaultThreadFactory.java:144 java:748

我目前正在使用以下spark默认配置运行纱线簇上的spark

spark.eventLog.dir=hdfs:///user/spark/applicationHistory
spark.eventLog.enabled=true
spark.yarn.historyServer.address=ppv-qa12-tenant8-spark-cluster-master.periscope-solutions.local:18080
spark.shuffle.service.enabled=true
spark.dynamicAllocation.enabled=true
spark.driver.extraLibraryPath=/usr/hdp/current/hadoop-client/lib/native:/usr/hdp/current/hadoop-client/lib/native/Linux-amd64-64
spark.executor.extraLibraryPath=/usr/hdp/current/hadoop-client/lib/native:/usr/hdp/current/hadoop-client/lib/native/Linux-amd64-64
spark.driver.maxResultSize=0
spark.driver.extraJavaOptions=-XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:MaxHeapFreeRatio=70 -XX:+CMSClassUnloadingEnabled -XX:OnOutOfMemoryError='kill -9 %p'
spark.executor.extraJavaOptions=-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:MaxHeapFreeRatio=70 -XX:+CMSClassUnloadingEnabled -XX:OnOutOfMemoryError='kill -9 %p'
spark.executor.memory=5g
spark.driver.memory=1g
spark.executor.cores=4
在从属机器的nodemanager中,我在warn-site.xml中设置了以下内容

<configuration>
  <property>
    <name>yarn.application.classpath</name>
    <value>/usr/hdp/current/spark2-client/aux/*,/etc/hadoop/conf,/usr/hdp/current/hadoop-client/*,/usr/hdp/current/hadoop-client/lib/*,/usr/hdp/current/hadoop-hdfs-client/*,/usr/hdp/current/hadoop-hdfs-client/lib/*,/usr/hdp/current/hadoop-yarn-client/*,/usr/hdp/current/hadoop-yarn-client/lib/*</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>spark2_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.spark2_shuffle.class</name>
    <value>org.apache.spark.network.yarn.YarnShuffleService</value>
  </property>
  <property>
    <name>yarn.nodemanager.container-manager.thread-count</name>
    <value>64</value>
  </property>
  <property>
    <name>yarn.nodemanager.localizer.client.thread-count</name>
    <value>20</value>
  </property>
  <property>
    <name>yarn.nodemanager.vmem-pmem-ratio</name>
    <value>5</value>
  </property>
  <property>
    <name>yarn.resourcemanager.hostname</name>
    <value>************</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.client.thread-count</name>
    <value>64</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.client.thread-count</name>
    <value>64</value>
  </property>
  <property>
    <name>yarn.scheduler.increment-allocation-mb</name>
    <value>32</value>
  </property>
  <property>
    <name>yarn.scheduler.increment-allocation-vcores</name>
    <value>1</value>
  </property>
  <property>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>128</value>
  </property>
  <property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>32</value>
  </property>
  <property>
    <name>yarn.timeline-service.enabled</name>
    <value>true</value>
  </property>
  <property>
  <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>8</value>
  </property>
  <property>
  <name>yarn.nodemanager.resource.memory-mb</name>
    <value>11520</value>
  </property>
  <property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>11520</value>
  </property>
  <property>
  <name>yarn.nodemanager.hostname</name>
    <value>*************</value>
  </property>
</configuration>

编辑:通过一些网络调试,我发现容器创建的用于连接shuffle服务的epehmeral端口正在主动拒绝连接。telnet在查看内核和系统活动日志时立即抛出错误,我们在/var/log/messages中发现了以下问题

xen_netfront:xennet:skb乘坐火箭:19个插槽

这意味着我们的aws ec2机器出现了网络数据包丢失

数据传输b/n容器和shuffle服务通过RPC调用ChunkFetchRequest、ChunkFetchSuccess和ChunkFetchFailure发生,这些RPC调用被网络抑制

有关此日志的更多信息可以在以下线程中找到

日志消息表示我们超过了可放入驱动程序环形缓冲区队列16的数据包的最大缓冲区大小,这些SKB丢失

“分散-聚集”收集多个响应和响应 将其作为单个响应结束,这反过来又导致SKB大小的增加

因此,我们使用以下命令关闭“散射聚集”

sudo ethtool -K eth0 sg off
在此之后,再也没有数据包丢失了


性能也与我们以前在EMR中的性能相似。

您能确保洗牌服务是否在所有工人中正确运行吗?有时,洗牌服务会无声地停止并结束这些错误,而不是在所有机器上运行洗牌服务。目前,它是作为纱线的辅助服务而运行的。