一般开发模式中使用
--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
。
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
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 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