1. 解压spark安装包, 重命名(版本使用: hadoop-2.7.1.tar.gz + spark-2.3.0-bin-hadoop2.7.tgz) 2. 进入 /home/spark/spark-2.2.0/conf 目录
3. cp slaves.template slaves
4. vim slaves
将结尾的 localhost(伪分布式) 修改成自己的work节点, 比如 hadoop2 hadoop3(每行一条), 保存退出
5. cp spark-env.sh.template spark-env.sh vim spark-env.sh 添加:
export JAVA_HOME=/usr/java/jdk1.8.0_11
export SPARK_MASTER_IP=hadoop1
export SPARK_MASTER_HOST=hadoop1
export SPARK_MASTER_PORT=7077
export SPARK_WORKER_CORES=2 每个Worker进程管理2个core
export SPARK_WORKER_MEMORY=2G 每个Worker进程管理2g内存
# 想要spark运行在yarn上, 需要增加如下配置(每个节点机器上的spark都需要进行配置)
export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.7.1/etc/hadoop
如果需要修改 ssh 端口号, 加入如下:
export SPARK_SSH_OPTS="-p 2222"
如果出现安全模式错误, 执行 hdfs dfsadmin -safemode leave, 离开安全模式
6. scp -r spark-2.2.0 root@hadoop3:/home/spark 将spark整体拷贝到其他节点机器上
7. 在 master 节点机器上, 进入spark下的sbin 目录中执行 ./start-all.sh 各个节点上执行: jps
master节点上出现 Master 进程
slave 节点上出现 Worker 进程
8. 8080端口为spark 的 web 监控端口, 7070为spark 的 数据传输端口
9. http://hadoop1:8080 可以看到spark管理界面
10. spark在 Standalone 上运行分为俩种模式
1.client (适合测试)
Driver 进程是在客户端启动的
Driver 的作用是:
分发任务
回收 task 计算结果
回收 task 执行情况
心跳
可以在提交应用程序的客户端上监控task的执行情况
适用场景: 调试/测试环境(应为会占用网卡流量)
执行命令:
1> --total-executor-cores 3 表示适用多少个core 来执行, 不指定默认是配置文件总的所有的core
2> 1000 表示启动多少个线程来执行这个任务
./spark-submit --master spark://hadoop1:7077 --total-executor-cores 3
--class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.0.jar 1000
2.cluster
Driver 进程是在集群某一台 Worker 上启动的,
无法查看 task 的启动执行情况
适用场景: 生产环境
执行命令 :
--deploy-mode cluster 指定执行模式, 默认为 client模式
./spark-submit --master spark://hadoop1:7077 --deploy-mode cluster
--total-executor-cores 3 --class org.apache.spark.examples.SparkPi ../examples/jars/spark-examples_2.11-2.3.0.jar 1000
查看结果: 浏览器中: http://hadoop1:8080 ----->找到 Completed Drivers (2)(已经完成的Driver) -----> 点击Worker中的链接 ----->
找到 Finished Drivers (1) ------> 找到后面对应的 stdout 就可以看到执行情况和结果
执行python 脚本
./spark-submit --master spark://hadoop1:7077 /data/UserCountStatistical.py 10
修改 spark 中 ssh 链接端口 vi spark-env.sh
export SPARK_SSH_OPTS="-p 16022"