2016-08-15 1 views
2

Я пытаюсь запуститьspark2 + пряжи - NullPointerException при подготовке AM контейнера

pyspark --master yarn 
  • версия Spark: 2.0.0
  • Hadoop версия: 2.7.2
  • Hadoop пряжи веб-интерфейс успешно начал

Это то, что происходит:

16/08/15 10:00:12 DEBUG Client: Using the default MR application classpath: $HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*,$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/* 
16/08/15 10:00:12 INFO Client: Preparing resources for our AM container 
16/08/15 10:00:12 DEBUG Client: 
16/08/15 10:00:12 DEBUG DFSClient: /user/mispp/.sparkStaging/application_1471254869164_0006: masked=rwxr-xr-x 
16/08/15 10:00:12 DEBUG Client: IPC Client (1933573135) connection to sm/192.168.29.71:8020 from mispp sending #8 
16/08/15 10:00:12 DEBUG Client: IPC Client (1933573135) connection to sm/192.168.29.71:8020 from mispp got value #8 
16/08/15 10:00:12 DEBUG ProtobufRpcEngine: Call: mkdirs took 14ms 
16/08/15 10:00:12 DEBUG Client: IPC Client (1933573135) connection to sm/192.168.29.71:8020 from mispp sending #9 
16/08/15 10:00:12 DEBUG Client: IPC Client (1933573135) connection to sm/192.168.29.71:8020 from mispp got value #9 
16/08/15 10:00:12 DEBUG ProtobufRpcEngine: Call: setPermission took 10ms 
16/08/15 10:00:12 DEBUG Client: IPC Client (1933573135) connection to sm/192.168.29.71:8020 from mispp sending #10 
16/08/15 10:00:12 DEBUG Client: IPC Client (1933573135) connection to sm/192.168.29.71:8020 from mispp got value #10 
16/08/15 10:00:12 DEBUG ProtobufRpcEngine: Call: getFileInfo took 2ms 
16/08/15 10:00:12 INFO Client: Deleting staging directory hdfs://sm/user/mispp/.sparkStaging/application_1471254869164_0006 
16/08/15 10:00:12 DEBUG Client: IPC Client (1933573135) connection to sm/192.168.29.71:8020 from mispp sending #11 
16/08/15 10:00:12 DEBUG Client: IPC Client (1933573135) connection to sm/192.168.29.71:8020 from mispp got value #11 
16/08/15 10:00:12 DEBUG ProtobufRpcEngine: Call: delete took 14ms 
16/08/15 10:00:12 ERROR SparkContext: Error initializing SparkContext. 
java.lang.NullPointerException 
     at scala.collection.mutable.ArrayOps$ofRef$.newBuilder$extension(ArrayOps.scala:190) 
     at scala.collection.mutable.ArrayOps$ofRef.newBuilder(ArrayOps.scala:186) 
     at scala.collection.TraversableLike$class.filterImpl(TraversableLike.scala:246) 
     at scala.collection.TraversableLike$class.filter(TraversableLike.scala:259) 
     at scala.collection.mutable.ArrayOps$ofRef.filter(ArrayOps.scala:186) 
     at org.apache.spark.deploy.yarn.Client$$anonfun$prepareLocalResources$6.apply(Client.scala:484) 
     at org.apache.spark.deploy.yarn.Client$$anonfun$prepareLocalResources$6.apply(Client.scala:480) 
     at scala.collection.mutable.ArraySeq.foreach(ArraySeq.scala:74) 
     at org.apache.spark.deploy.yarn.Client.prepareLocalResources(Client.scala:480) 
     at org.apache.spark.deploy.yarn.Client.createContainerLaunchContext(Client.scala:834) 
     at org.apache.spark.deploy.yarn.Client.submitApplication(Client.scala:167) 
     at org.apache.spark.scheduler.cluster.YarnClientSchedulerBackend.start(YarnClientSchedulerBackend.scala:56) 
     at org.apache.spark.scheduler.TaskSchedulerImpl.start(TaskSchedulerImpl.scala:149) 
     at org.apache.spark.SparkContext.<init>(SparkContext.scala:500) 
     at org.apache.spark.api.java.JavaSparkContext.<init>(JavaSparkContext.scala:58) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
     at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
     at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:240) 
     at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:357) 
     at py4j.Gateway.invoke(Gateway.java:236) 
     at py4j.commands.ConstructorCommand.invokeConstructor(ConstructorCommand.java:80) 
     at py4j.commands.ConstructorCommand.execute(ConstructorCommand.java:69) 
     at py4j.GatewayConnection.run(GatewayConnection.java:211) 
     at java.lang.Thread.run(Thread.java:745) 
16/08/15 10:00:12 DEBUG AbstractLifeCycle: stopping [email protected] 
16/08/15 10:00:12 DEBUG Server: Graceful shutdown [email protected] by 

пряжи site.xml: (последнее свойство что-то я нашел в Интернете, так просто попытался, если она будет работать)

<configuration> 

<!-- Site specific YARN configuration properties --> 
    <property> 
     <name>yarn.nodemanager.aux-services</name> 
     <value>mapreduce_shuffle</value> 
    </property> 
    <property> 
     <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> 
     <value>org.apache.hadoop.mapred.ShuffleHandler</value> 
    </property> 
    <property> 
     <name>yarn.resourcemanager.resource-tracker.address</name> 
     <value>sm:8025</value> 
    </property> 
    <property> 
     <name>yarn.resourcemanager.scheduler.address</name> 
     <value>sm:8030</value> 
    </property> 
    <property> 
     <name>yarn.resourcemanager.address</name> 
     <value>sm:8050</value> 
    </property> 
    <property> 
     <name>yarn.application.classpath</name> 
     <value>/home/mispp/hadoop-2.7.2/share/hadoop/yarn</value> 
    </property> 
</configuration> 

.bashrc:

export HADOOP_PREFIX=/home/mispp/hadoop-2.7.2 
export PATH=$PATH:$HADOOP_PREFIX/bin 
export HADOOP_HOME=$HADOOP_PREFIX 
export HADOOP_COMMON_HOME=$HADOOP_PREFIX 
export HADOOP_YARN_HOME=$HADOOP_PREFIX 
export HADOOP_HDFS_HOME=$HADOOP_PREFIX 
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX 
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop 
export YARN_CONF_DIR=$HADOOP_PREFIX/etc/hadoop 

Любая идея, почему Бывает? Он установлен в 3 контейнера LXD (мастер + два вычисления), на сервере с 16 ГБ оперативной памяти.

ответ

3

Учитывая расположение ошибки в Спарк 2.0.0 код:

https://github.com/apache/spark/blob/v2.0.0/yarn/src/main/scala/org/apache/spark/deploy/yarn/Client.scala#L480

Я подозреваю, что ошибка происходит из-за неправильной конфигурации spark.yarn.jars. Я бы дважды уточнил, что значение этой конфигурации в вашей настройке правильное, согласно документу http://spark.apache.org/docs/2.0.0/running-on-yarn.html#spark-properties.

+0

yep, пряжа вызывала проблемы. – mispp

0

Обычно (не всегда, по-видимому), когда вы видите

ОШИБКА SparkContext: Ошибка инициализации SparkContext.

При использовании пряжи это означает, что приложение Spark не может запускаться, потому что оно не может получить достаточный ресурс (опять же, как правило, память). Так что это первое, что вам нужно проверить.

Здесь вы можете вставить свой spark-defaults.conf. Или если вы не заметите, что значение по умолчанию для spark.executor.memory равно 1g. Вы можете попытаться перезаписать это значение, например,

pyspark --executor-memory 256m 

, чтобы узнать, началось оно или нет.

Кроме того, в вашем нет конфигурации ресурсов (например, yarn.nodemanager.resource.memory-mb), поэтому вполне вероятно, что вы не даете достаточное количество ресурсов для распределения. Учитывая размер вашей машины, вам лучше понять эти ценности.

0

Я только что поднял @tinfoiled ответ, но я хотел бы прокомментировать здесь синтаксис свойства spark.yarn.jars (он заканчивается с '), так как я потратил довольно много времени на выяснение.

Правильный синтаксис (что OP будет знать его уже) есть -

spark.yarn.jars=hdfs://xxx:9000/user/spark/share/lib/*.jar 

На самом деле я не ставил *.jar в конце, и это привело к «невозможность загрузить ApplicationMaster». Я пробовал всевозможные комбинации, но это не сработало. На самом деле я поставил вопрос о SOF по той же проблеме на Property spark.yarn.jars - how to deal with it?

Я даже не был уверен, что то, что я делаю, это правильный путь, но вопрос OP и ответ на @tinfoiled дали мне некоторую уверенность, и я наконец, смог использовать это свойство.

+0

Что включено в hdfs. Это отсутствует в ответе. – mathtick