Spark Chapter 5 PySpark 运行模式
# 1 目前支持的模式
1)local
2)standalone
3)Mesos国内用的不多
4)YARN 目前国内70%的开发选择
5)Kubernetes——实验版本
* 有何区别,开发过程中如何选择
# 2 local模式
在开发过程中使用这种模式,step1 功能跑通—>step2 性能调优.
帮助命令查看:./pyspark --help
*重要pyshark参数
--master local[2]
--name
--py -file,.zip,.txt
* 启动案例
```
./pyshark --master local[2] --name spark-local /home/xx.py file:///home/data file:///home/data
```
---
## 1 master说明
local——一个线程
local[2]
local[K,F] K个线程,F次最大失败
local[*] 所有
local[*,F]
spark://HOST:PORT standalone模式
spark://HOST1:PORT1,HOST2:PORT2 standalone模式
mesos://HOST:PORT
yarn
k8s://HOST:PORT
## 2 standalone 模式
hdfs:NameNode,DataNode
yarn:ResourceManager NodeManager
step1启动集群./sbin/start-master.sh
step2启动从节点./sbin/start-slave.sh
ps:如果启动成功,任务上会有master和worker
*配置spark路径
每台机器都在相同的路径下不部署spark
文件名:$SPARK_HOME/conf/slaves
添加内容hadoop000,hadoop001,……
* 启动:
启动命令:$spark_home/sbin/start-all.sh
启动的时候关注启动日志,启动失败的原因可以从日志里去看
ps:要提前配置$JAVA_HOME
检测:
jps:检测是否有master和worker启动
webUI:端口可以在日志中的MasterUI后面进行查找,一般8080(在提交pyshark作业时可以设置,--webui-post PORT);使用时在浏览器的输入hadoop000:8080。(内部的端口一般为7077,通过-p PORT,--port PORT设置)
*配置spark中的$JAVA_HOME:$spark_home/sbin/spark-env.sh中添加(cp spark-env.sh.template spark-env.sh )
*查看系统$JAVA_HOME:eoch
* 日志查看:cat 日志地址,地址在运行的第一、二行会有
*查看进程情况:jps
*杀掉进程kill -9进程编号
* 测试模式,节点数量大于1,如果你使用本地文件进行测试,保证每个节点上都有本地测试的文件(推荐用hdfs文件进行测试)
```
./spark -sumbit --master spark://hadoop000:7077 -name spark-standalone /home/hadoop/script/spark0402.py hdfs://hadoop000:8020/wc.txt hdfs://hadoop000:8020/wc/output
```
*hdfs操作
查看hdfs上的内容:hadoop fs -ls/
传送文件到hdfs上:hadoop fs -put ~/data/hello.txt /wc.txt
查看hdfs上文件内容:hadoop fs -text /wc.txt
外部对其使用时hdfs://hadoop000:8020/hello.txt[file:///home/hadoop/wc/output](file:///home/hadoop/wc/output)
## 3 yarn 模式【重点】
reduce yarn,spark on yarn 70%
把spark作为客户端,需要做的事情时提交作业到yarn上去执行。
yarn vs standalone
yarn:只需要一个节点,可以提交作业,不需要spark集群(不需要启动master和worker;如果是standalone模式,则spark集群上每个节点都需要部署spark,然后需要启动spark集群(需要启动master和worker))
*启动yarn
*?
*在yarn上运行spark
```
./spark -sumbit --master yarn -name spark-yarn /home/hadoop/script/spark0402.py hdfs://hadoop000:8020/wc.txt hdfs://hadoop000:8020/wc/output
```
* 环境变量配置
使用yarn模式的时候,需要指定HADOOP_CONF_DIR orYARN_CONF_DIR
即在$spark_home/sbin/spark-env.sh添加HADOOP_CONF_DIR =$HADOOP_HOME地址(配置文件记得sourse)
如何规避架包传输?
*yarn支持 client和cluster:driver运行在哪里
*如果是cluster上运行,则会运行在application master节点上。
* client模式提交作业进程是不能停止的,cluster提交完就可以断开了,因为driver是并行在AM上的
*--master yarn-client/cluster ,也可以加在参数--deploy-mode后面
*yarn日志查看
*(Jobhistory课程10小时学会hadoop)
*yarn logs -applcationId
tips:pyspark/spark-shell——交互式运行程序client,如果用集群模式,只能用./spark or ./spark-sumbit