1、本地模式(开发):运行在单机上(路径:spark/bin)
交互式运行(Python):./pyspark --master local[*]
交互式运行(Scala):./spark-shell --master local[*]
提交Spark作业:./spark-submit --master local[*] --name [applicationname] .py文件 file:///[输入文件路径] file:///[输出文件路径]
2、Standalone模式(独立集群):
配置文件 (路径:spark/conf)
①cp slaves.template slaves
②sudo vi slaves (将localhost修改为Master)
Master
如果是多台机器同时运行,那么就应对salves进行如下配置:
Master
Slave1
Slave2
③cp spark-env.sh.template spark-env.sh
④sudo vi spark-env.sh (必须添加,否则启动spark集群时会出错)
JAVA_HOME=/home/spark/app/jdk
⑤安装包分发到其他节点:
scp -r spark/ slave1:$pwd
scp -r spark/ slave2:$pwd
启动集群:
①启动HDFS(路径:hadoop/bin)
./start-dfs.sh
②启动spark集群(路径:spark/sbin)
./start-all.sh
检测:jps
主节点:NameNode、SecondaryNameNode、Master
从节点:DataNode、Worker
交互式运行(python):./pyspark --master spark://hostname:7077
#注:若使用Standalone模式,且节点个数大于1时,使用本地文件进行计算,必须保证每个节点上都有本地测试文件。
3、YARN模式:
配置文件(路径:spark/conf)
①sudo vi spark-env.sh
HADOOP_CONF_DIR=/home/spark/app/hadoop/etc/hadoop
#注:启动Spark的YARN模式必须确保HADOOP_CONF_DIR或YARN_CONF_DIR指向包含Hadoop集群配置文件的目录(路径:/home/spark/app/hadoop/etc/hadoop)
启动集群:
①启动HDFS(路径:hadoop/bin)
./start-dfs.sh
②启动YARN(路径:hadoop/bin)
./start-yarn.sh
③启动spark集群(路径:spark/sbin)
./start-all.sh
检测:jps
主节点:NameNode、SecondaryNameNode、ResourceManager、Master
从节点:DataNode、NodeManager、Worker
交互式运行(python):./pyspark --master yarn-client
4、Mesos模式:
Spark on Mesos有两种模式:粗粒度(coarse-grained,默认)和细粒度(fine-grained)。细粒度模式从Spark 2.0.0开始弃用。
粗粒度模式
启动开销小,但是该模式运行时,每个应用程序会一直保留Mesos资源,直到整个应用程序结束后才会释放资源。
细粒度模式
Spark执行程序内的每个Spark任务都作为单独的Mesos任务运行。这允许Spark的多个实例(和其他框架)以非常精细的粒度共享内核,其中每个应用程序在运行时,将动态地获得或多或少的内核,但是在启动每个任务时会带来额外的开销。此模式可能不适用于低延迟要求。虽然细粒度的Spark任务在终止时会放弃内核,但它们不会放弃内存,因为JVM不会将内存返回给操作系统。
警告:
WARN yarn.Client: Neither spark.yarn.jars nor spark.yarn.archive is set, falling back to uploading libraries under SPARK_HOME.
原因:每次运行spark时都会把yarn所需的spark jar打包上传至HDFS,然后分发到每个NM,为了节省时间,可以将jar包提前上传至HDFS,那么运行spark时就少了一步上传,可以直接从HDFS读取了。
做法:①HDFS上创建存放spark jar的目录
hadoop fs -mkdir -p /spark-yarn/jars
②将/spark/jars下的jar包上传至刚建的HDFS路径
cd /home/spark/app/spark/jars/
hadoop fs -put * /spark-yarn/jars/
③设置spark-defaults.conf
spark.yarn.jars=hdfs://master:8020/spark-yarn/jars/*.jar
#记录Spark事件, 用于应用程序在完成后重构Web_UI(运行本地模式时以下语句要注释)
spark.eventLog.enabled true
spark.eventLog.dir hdfs://Master:8020/directory