Искра при сбое контейнера для пряжи - PullRequest
0 голосов
/ 27 июня 2018

Для справки: я решил эту проблему, добавив Netty 4.1.17 в hadoop / share / hadoop / common

Независимо от того, какой jar я пытаюсь запустить (включая пример из https://spark.apache.org/docs/latest/running-on-yarn.html), Я получаю сообщение об ошибке контейнера при запуске Spark на Yarn. Я получаю эту ошибку в командной строке:

Diagnostics: Exception from container-launch.
Container id: container_1530118456145_0001_02_000001
Exit code: 1
Stack trace: ExitCodeException exitCode=1:
    at org.apache.hadoop.util.Shell.runCommand(Shell.java:585)
    at org.apache.hadoop.util.Shell.run(Shell.java:482)
    at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:776)
    at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:212)
    at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302)
    at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

Когда я просматриваю логи, я нахожу эту ошибку:

Exception in thread "main" java.lang.NoSuchMethodError:io.netty.buffer.PooledByteBufAllocator.metric()Lio/netty/buffer/PooledByteBufAllocatorMetric;
    at org.apache.spark.network.util.NettyMemoryMetrics.registerMetrics(NettyMemoryMetrics.java:80)
    at org.apache.spark.network.util.NettyMemoryMetrics.<init>(NettyMemoryMetrics.java:76)
    at org.apache.spark.network.client.TransportClientFactory.<init>(TransportClientFactory.java:109)
    at org.apache.spark.network.TransportContext.createClientFactory(TransportContext.java:99)
    at org.apache.spark.rpc.netty.NettyRpcEnv.<init>(NettyRpcEnv.scala:71)
    at org.apache.spark.rpc.netty.NettyRpcEnvFactory.create(NettyRpcEnv.scala:461)
    at org.apache.spark.rpc.RpcEnv$.create(RpcEnv.scala:57)
    at org.apache.spark.deploy.yarn.ApplicationMaster.runExecutorLauncher(ApplicationMaster.scala:530)
    at org.apache.spark.deploy.yarn.ApplicationMaster.org$apache$spark$deploy$yarn$ApplicationMaster$$runImpl(ApplicationMaster.scala:347)
    at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$2.apply$mcV$sp(ApplicationMaster.scala:260)
    at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$2.apply(ApplicationMaster.scala:260)
    at org.apache.spark.deploy.yarn.ApplicationMaster$$anonfun$run$2.apply(ApplicationMaster.scala:260)
    at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$5.run(ApplicationMaster.scala:815)
    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:1758)
    at org.apache.spark.deploy.yarn.ApplicationMaster.doAsUser(ApplicationMaster.scala:814)
    at org.apache.spark.deploy.yarn.ApplicationMaster.run(ApplicationMaster.scala:259)
    at org.apache.spark.deploy.yarn.ApplicationMaster$.main(ApplicationMaster.scala:839)
    at org.apache.spark.deploy.yarn.ExecutorLauncher$.main(ApplicationMaster.scala:869)
    at org.apache.spark.deploy.yarn.ExecutorLauncher.main(ApplicationMaster.scala)

Есть идеи, почему это происходит? Это работает на псевдораспределенном кластере, настроенном в соответствии с этим руководством: https://wiki.apache.org/hadoop/Hadoop2OnWindows. Локально работает Spark, и, учитывая, что этот jar был предоставлен Spark, я сомневаюсь, что это проблема внутри jar. (Несмотря на это, я добавил зависимость Netty в другой jar-файл и все еще получаю ту же ошибку).

Единственное, что установлено в моем файле spark-defaults.conf - это spark.yarn.jars, который указывает на каталог hdfs, куда я загрузил все файлы Spark. io.netty.buffer.PooledByteBufAllocator содержится в этих банках.

Spark 2.3.1, Hadoop 2.7.6

Ответы [ 3 ]

0 голосов
/ 27 июня 2018

Это может иметь проблему с версией между вашей пряжей и искрой. проверьте совместимость установленных версий.

Я настоятельно рекомендую прочитать больше о NoSuchMethodError и некоторых других подобных исключениях, таких как NoClassDefFoundError и ClassNotFoundException. Причина этого предположения заключается в том, что когда вы начинаете использовать искру в разных ситуациях, это гораздо более запутанные ошибки, и исключение для людей не столь опытно. NoSuchMethodError

Конечно, забота о многих - это лучшая практика для программиста, который работает над распределенными системами, такими как spark. Отлично сработано. ;)

0 голосов
/ 27 июля 2018

У меня была точно такая же проблема. Ранее я использовал Hadoop 2.6.5 и совместимую версию spark, все работало нормально. Когда я перешел на Hadoop 2.7.6, возникла проблема. Не уверен, что является причиной, но я скопировал в netty.4.1.17. Окончательный файл JAR в папку библиотеки hadoop, то проблема исчезнет.

0 голосов
/ 27 июня 2018

Похоже, у вас есть несколько версий netty на вашем classpath,

  1. mvn clean compile
  2. Удалить все и добавить последний.
...