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 <app ID>

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

yarn-site.xml

<property>  
	<name>yarn.log-aggregation-enable</name>  
	<value>true</value>  
</property>
<property>
    <name>yarn.nodemanager.remote-app-log-dir</name>
    <value>/yarn/logs</value>
</property>

mapred-site.xml

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

启动/关闭:

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

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值