pyspark运行模式(local,standalone,yarn)

运行模式

local模式:

     一般开发模式中使用

常用参数

    --master 

    --name

    --py-files

bin/spark-submit --master local[2] --name spark0402 /opt/datas/helloWord.py file:///opt/datas/spark_readme.txt file:///opt/datas/wc

对于Python,你可以使用--py-files参数的spark-submit增加.py.zip.egg 与您的应用程序分发的文件。如果您依赖多个Python文件,建议将它们打包到.zip或中.egg

standalone

像hdfs和yarn有主从关系

hdfs:namenode datanode

yarn:resourcemanager nodemanager

master worker

需要配置slaves和spark-env.sh

$spark_home/conf/slaves

假设你有5台机器,就应该进行如下slaves的配置

pyspark-1.bigload.com

pyspark-2.bigload.com

pyspark-3.bigload.com

pyspark-4.bigload.com

pyspark-5.bigload.com

如果是多台机器,那么每台机器在相同路径下部署spark

$spark_home/conf/spark-env.sh

JAVA_HOME=/....(不添加会报错)

启动

bin/start-all.sh

交互式运行程序:bin/pyspark --master spark://pyspark-1.bigload.com:7077    

或者

脚本:bin/spark-submit --master spark://pyspark-1.bigload.com:7077 --name spark0501 /opt/datas/helloWord.py file:///opt/datas/spark_readme.txt file:///opt/datas/wc

如果使用standalone模式,而且你的节点个数大于1的时候,如果你使用本地文件测试,必须要保证每个节点上都存在本地测试文件,或者直接使用hdfs上的文件 ,例:hdfs://pyspark-1.bigload.com:8020/spark_readme.txt

bin/spark-submit --master spark://pyspark-1.bigload.com:7077 --name spark0502 /opt/datas/helloWord.py hdfs://pyspark-1.bigload.com:8020/hadoop/SogouQ.txt  hdfs://pyspark-1.bigload.com:8020/hadoop/SogouQout

yarn

spark 作为客户端,需要做的事情是,提交作业到yarn去执行

yarn vs standalone:

yarn:你只需要一个节点,然后提交作业即可,这个是不需要spark集群的(不需要master和woker)

standalone:你的spark集群上每个节点都需要部署spark,然后需要启动spark集群(需要master和woker)

bin/spark-submit --master yarn --name yarn0502 /opt/datas/helloWord.py hdfs://pyspark-1.bigload.com:8020/hadoop/SogouQ.txt hdfs://pyspark-1.bigload.com:8020/hadoop/SogouQout

确保HADOOP_CONF_DIR或YARN_CONF_DIR指向包含Hadoop集群的(客户端)配置文件的目录。即 将HADOOP_CONF_DIR=/opt/modules/hadoop-2.6.0-cdh5.7.0/etc/hadoop写入spark-env.sh

spark.yarn.jars的配置 

每次在spark运行时都会把yarn所需的spark jar打包上传至HDFS,然后分发到每个NM,为了节省时间我们可以将jar包提前上传至HDFS,那么spark在运行时就少了一步上传,可以直接从HDFS读取了。

具体做法如下:
1、HDFS上创建存放spark jar的目录

hadoop fs -mkdir -p  /spark-yarn/jars

2、将$SPARK_HOME/jars下的jar包上传至刚建的HDFS路径

[hadoop@hadoop000 jars]$ cd /home/hadoop/soul/app/spark-2.4.2-bin-2.6.0-cdh5.7.0/jars/
[hadoop@hadoop000 jars]$ hadoop fs -put * /spark-yarn/jars/

3、在 spark-defaults.conf中添加

spark.yarn.jars=hdfs://hadoop000:8020/spark-yarn/jars/*.jar

 

yarn支持client和cluster模式:driver运行在哪里

client:提交作业的进程是不能停止的,否则作业就挂了

cluster:提交完作业,那么提交作业端就可以断开了,因为driver是运行在am里面的

如何查看已经运行完的 yarn的日志信息:

yarn logs -applicationId 

需要打开日志聚合(否则会报Log aggregation has not completed or is not enabled.)

yarn-site.xml

  
	yarn.log-aggregation-enable  
	true  


    yarn.nodemanager.remote-app-log-dir
    /yarn/logs

mapred-site.xml

        
	  mapreduce.jobhistory.address
	  pyspark-1.bigload.com:10020
	  MapReduce JobHistory Server IPC host:port
	
	 
	
	  mapreduce.jobhistory.webapp.address
	  pyspark-1.bigload.com:19888
	  MapReduce JobHistory Server Web UI host:port
	
	
		mapreduce.jobhistory.done-dir
		/history/done
	
	 
	
		mapreduce.jobhistory.intermediate-done-dir
		/history/done_intermediate
	

启动/关闭:

$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver
$HADOOP_HOME/sbin/mr-jobhistory-daemon.sh stop historyserver

 

 

你可能感兴趣的:(大数据)