Spark + Mesos 注意事项
在使用spark-submit的过程中,需要注意
spark-defaults.conf
Spark-defaults.conf的作用范围要搞清楚,编辑driver所在机器上的spark-defaults.conf,该文件会影响 到driver所提交运行的application,及专门为该application提供计算资源的executor的启动参数
只需要在driver所在的机器上编辑该文件,不需要在worker或master所运行的机器上编辑该文件
举个实际的例子
spark.executor.memory 1g
spark.driver.memory 1g
上述配置表示为该application提供计算资源的executor启动时, heap memory需要有5g。
这里需要引起注意的是,如果worker在加入cluster的时候,申明自己所在的机器只有4g内存,那么为上述的application分配executor是,该worker不能提供任何资源,因为4g<5g,无法满足最低的资源需求。
spark-env.sh
spark-env.sh中最主要的是指定ip地址,如果运行的是master,就需要指定SPARK_MASTER_IP,如果准备运行driver或worker就需要指定SPARK_LOCAL_IP,要和本机的IP地址一致,否则启动不了,不论是mesos集群还是spark运行环境,都推荐使用机器名来识别ip,在/etc/hosts中或者DNS中将ip地址和机器名对应起来
配置举例如下
host_name="`hostname --fqdn`"
export SPARK_MASTER_IP=node1
export SPARK_LOCAL_IP=$host_name
export MESOS_NATIVE_JAVA_LIBRARY=/home/casic/mesos/lib/libmesos.so
export SPARK_EXECUTOR_URI=/home/casic/spark.tgz
spark通过cluster模式运行的时候
driver是随机选取集群中的agent,agent通过解压SPARK_EXECUTOR_URI
的文件来运行spark,所有在cluster模式运行的时候,每次修改conf之后,需要重新打包spark.tgz并分发到所有agent或者放置在网络位置
SPARK_LOCAL_IP设置为动态获取当前的机器名