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设置为动态获取当前的机器名

上一篇:group by与avg(),max(),min(),sum()函数的关系


下一篇:Java 问题定位工具 -- jps