Я управляю искрой работы на пряже. Работа работает на Amazon EMR. (1 ведущий и 2 ведомых с m4.xlarge)
Я настроил аналогичную инфраструктуру с использованием дистрибутива HDP 2.6 на машинах aws ec2. Но задание spark застревает на одном конкретном этапе, и через некоторое время я получаю следующую ошибку в журналах контейнеров. Похоже, что основной ошибкой является простоя службы в случайном порядке.
18/06/25 07:15:31 INFO spark.MapOutputTrackerWorker: выполнение выборки; конечная точка трекера = NettyRpcEndpointRef (spark: //MapOutputTracker@10.210.150.150: 44343)
18/06/25 07:15:31 ИНФОРМАЦИЯ spark.MapOutputTrackerWorker: нет выводов карты для перемешивания 9, выбирая их
18/06/25 07:15:31 ИНФОРМАЦИЯ spark.MapOutputTrackerWorker: нет выводов карты для перемешивания 9, выбирая их
18/06/25 07:15:31 INFO spark.MapOutputTrackerWorker: получил выходные места
18/06/25 07:15:31 INFO storage.ShuffleBlockFetcherIterator: получение 5 непустых блоков из 1000 блоков
18/06/25 07:15:31 INFO storage.ShuffleBlockFetcherIterator: запущен 1 удаленный выбор за 0 мс
18/06/25 07:15:31 INFO storage.ShuffleBlockFetcherIterator: получение 5 непустых блоков из 1000 блоков
18/06/25 07:15:31 INFO storage.ShuffleBlockFetcherIterator: запущено 0 удаленных выборок за 0 мс
18/06/25 07:15:31 INFO storage.ShuffleBlockFetcherIterator: получение 5 непустых блоков из 1000 блоков
18/06/25 07:15:31 INFO storage.ShuffleBlockFetcherIterator: запущен 1 удаленный выбор за 0 мс
18/06/25 07:15:31 INFO storage.ShuffleBlockFetcherIterator: получение 5 непустых блоков из 1000 блоков
18/06/25 07:15:31 INFO storage.ShuffleBlockFetcherIterator: запущен 1 удаленный выбор за 1 мс
18/06/25 07:15:31 INFO codegen.CodeGenerator: код сгенерирован за 4.822611 мс
18/06/25 07:15:31 INFO 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: Все еще не обработано 307 запросов, когда соединение с ip-10-210-150-180. ******** / 10.210.150.180:7447 закрыто
18/06/25 07:17:31 INFO shuffle.RetryBlockFetcher: повторная выборка (1/3) для 197 ожидающих блоков через 5000 мс
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.channelInactive (TransportResponseHandler.java:146)
в org.apache.spark.network.server.TransportChannelHandler.channelInactive (TransportChannelHandler.java:108)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:241)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:227)
в io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive (AbstractChannelHandlerContext.java:220)
в io.netty.channel.ChannelInboundHandlerAdapter.channelInactive (ChannelInboundHandlerAdapter.java:75)
в io.netty.handler.timeout.IdleStateHandler.channelInactive (IdleStateHandler.java:278)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:241)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:227)
в io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive (AbstractChannelHandlerContext.java:220)
в io.netty.channel.ChannelInboundHandlerAdapter.channelInactive (ChannelInboundHandlerAdapter.java:75)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:241)в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:227)
в io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive (AbstractChannelHandlerContext.java:220)
в io.netty.channel.ChannelInboundHandlerAdapter.channelInactive (ChannelInboundHandlerAdapter.java:75)
в org.apache.spark.network.util.TransportFrameDecoder.channelInactive (TransportFrameDecoder.java:182)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:241)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:227)
в io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive (AbstractChannelHandlerContext.java:220)
в io.netty.channel.DefaultChannelPipeline $ HeadContext.channelInactive (DefaultChannelPipeline.java:1289)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:241)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:227)
в io.netty.channel.DefaultChannelPipeline.fireChannelInactive (DefaultChannelPipeline.java:893)
на io.netty.channel.AbstractChannel $ AbstractUnsafe $ 7.run (AbstractChannel.java:691)
в io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks (SingleThreadEventExecutor.java:399)
на io.netty.channel.nio.NioEventLoop.run (NioEventLoop.java:446)
в io.netty.util.concurrent.SingleThreadEventExecutor $ 2.run (SingleThreadEventExecutor.java:131)
в io.netty.util.concurrent.DefaultThreadFactory $ DefaultRunnableDecorator.run (DefaultThreadFactory.java:144)
на java.lang.Thread.run (Thread.java:748)
18/06/25 07:17:31 ИНФОРМАЦИЯ shuffle.RetryBlockFetcher: повторная выборка (1/3) для 166 ожидающих блоков через 5000 мс
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.channelInactive (TransportResponseHandler.java:146)
в org.apache.spark.network.server.TransportChannelHandler.channelInactive (TransportChannelHandler.java:108)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:241)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:227)
в io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive (AbstractChannelHandlerContext.java:220)
в io.netty.channel.ChannelInboundHandlerAdapter.channelInactive (ChannelInboundHandlerAdapter.java:75)
в io.netty.handler.timeout.IdleStateHandler.channelInactive (IdleStateHandler.java:278)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:241)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:227)
в io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive (AbstractChannelHandlerContext.java:220)
в io.netty.channel.ChannelInboundHandlerAdapter.channelInactive (ChannelInboundHandlerAdapter.java:75)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:241)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:227)
в io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive (AbstractChannelHandlerContext.java:220)
в io.netty.channel.ChannelInboundHandlerAdapter.channelInactive (ChannelInboundHandlerAdapter.java:75)
в org.apache.spark.network.util.TransportFrameDecoder.channelInactive (TransportFrameDecoder.java:182)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:241)в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:227)
в io.netty.channel.AbstractChannelHandlerContext.fireChannelInactive (AbstractChannelHandlerContext.java:220)
в io.netty.channel.DefaultChannelPipeline $ HeadContext.channelInactive (DefaultChannelPipeline.java:1289)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:241)
в io.netty.channel.AbstractChannelHandlerContext.invokeChannelInactive (AbstractChannelHandlerContext.java:227)
в io.netty.channel.DefaultChannelPipeline.fireChannelInactive (DefaultChannelPipeline.java:893)
на io.netty.channel.AbstractChannel $ AbstractUnsafe $ 7.run (AbstractChannel.java:691)
в io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks (SingleThreadEventExecutor.java:399)
на io.netty.channel.nio.NioEventLoop.run (NioEventLoop.java:446)
в io.netty.util.concurrent.SingleThreadEventExecutor $ 2.run (SingleThreadEventExecutor.java:131)
в io.netty.util.concurrent.DefaultThreadFactory $ DefaultRunnableDecorator.run (DefaultThreadFactory.java:144)
at java.lang.Thread.run (Thread.java:748)
В настоящее время я использую искру на кластере пряжи со следующими конфигурациями искровых настроек по умолчанию
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
И у меня есть следующий набор в yarn-site.xml в nodemanager подчиненных машин
<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>
Редактировать: В ходе некоторой сетевой отладки я обнаружил, что временный порт, созданный контейнером для соединения с сервисом случайного воспроизведения, активно отказывается от соединения. (телнет сразу выдает ошибку)