群集规格:Apache Spark基于Mesos,5 Vms,HDFS作为存储。
spark-env.sh
export SPARK_LOCAL_IP=192.168.xx.xxx #to set the IP address Spark binds to on this node
enter code here`export MESOS_NATIVE_JAVA_LIBRARY="/home/xyz/tools/mesos-1.0.0/build/src/.libs/libmesos-1.0.0.so" #to point to your libmesos.so if you use Mesos
export SPARK_EXECUTOR_URI="hdfs://vm8:9000/spark-2.0.0-bin-hadoop2.7.tgz"
HADOOP_CONF_DIR="/usr/local/tools/hadoop" #To point Spark towards Hadoop configuration files
火花defaults.conf
spark.executor.uri hdfs://vm8:9000/spark-2.0.0-bin-hadoop2.7.tgz
spark.driver.host 192.168.xx.xxx
spark.rpc netty
spark.rpc.numRetries 5
spark.ui.port 48888
spark.driver.port 48889
spark.port.maxRetries 32
我做了一些在集群模式下提交字数scala应用程序的实验,我发现它只有在从提交的Vm中找到驱动程序(包含main方法)时才能成功执行。据我所知,资源调度(VM)由Mesos处理。例如,如果我从vm12提交我的应用程序并且巧合如果Mesos也安排vm12执行应用程序那么它将成功执行。相反,如果mesos调度程序决定分配让我们说vm15.I检查了stderr中的日志,它将失败mesos UI并发现错误..
16/09/27 11:15:49错误SparkContext:初始化SparkContext时出错。
此外,我尝试在以下链接中查找spark的配置方面。 [http://spark.apache.org/docs/latest/configuration.html][1]我尝试设置rpc,因为似乎有必要将驱动程序保持在LAN中的worker-node附近。 但是无法获得太多的见解。
我还尝试在HDFS中上传我的代码(应用程序)并从HDFS提交应用程序jar文件。我收到了相同的观察结果。
根据文档中的文档连接apache-spark和Mesos 以下链接http://spark.apache.org/docs/latest/running-on-mesos.html 我还尝试在其他VM中配置spark-defaults.conf,spark-env.sh,以检查它是否成功运行至少2 Vm。那也没有锻炼。
我在这里错过任何概念清晰度。 那么,无论我提交的是什么,我怎样才能使我的应用程序成功运行?