1.配置spark-env.sh
# 配置大哥;在二哥上面,MASTER_PORT=指的是自己
SPARK_MASTER_HOST=hadoop102
# 设置zookeepr,不能换行
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop101:2181,hadoop102:2181,hadoop103:2181 -Dspark.deploy.zookeeper.dir=/spark"
# 告诉Spark,hadoop放到哪里面了,前题是每一个Spark,的服务器上都装有hadoop
HADOOP_CONF_DIR=/data/hadoop/hadoop-3.2.1/etc/hadoop/
配置二哥MASTER_PORT=指的是自己
SPARK_MASTER_HOST=hadoop101
2.配置slaves
#配置的小弟
hadoop103
hadoop104
3.启动
- 启动zookeeper
bin/zkServer.sh
- 启动hadoop
sbin/start-all.sh
- 启动spark
sbin/start-all.sh
停止spark
sbin/stop-all.sh
注意查看spark的web端的时候,由于启动了zookeeper,spark的端口与zookeeper的端口冲突,spark会把端口改成8081,在logs日志中会显示
# 查看网络的状态;是zookeeper占用了8080端口
netstat -anp|grep 8080
启动二哥在hadoop101上启动
sbin/start-master.sh
4.配置历史服务器
配置文件:(复制spark-defaults.conf.template为spark-defaults.conf
);
# 作用:bin/spark-submit 后面跟了一大堆参数;这些参数如果放到了这个文件中;每次运行spark-submit的时候,会自动的从这个文件找参数;
# 这个文件只需要放到运行bin/spark-submit的服务器上就可以(建议四台机器一块放)
# 空格左边的叫键,右边叫值; 它会在bin/spark-submit后面的参数前面 加上spark;
# spark standlone 的大哥
spark.master spark://hadoop102:7077
# executor 的内存; 如果这里面要是木有,就还加上bin/spark-submit的参数上
spark.executor.memory 500m
# 启用历史服务器
spark.eventLog.enabled true
# 历史服务器会写一些日志,这个目录是日志的存储目录(如果目录不存在,得创建)
#必须是活着的 hdf 节点
spark.eventLog.dir hdfs://hadoop101:8020/spark/logs
# 读取目录
spark.history.fs.logDirectory hdfs://node7-1:8020/spark/logs
程序命令
bin/spark-submit \
--master spark://node7-2:7077 \
--name myPi \
--executor-memory 500m \
--total-executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
examples/jars/spark-examples_2.11-2.4.4.jar \
100
# 会自动的从spark-defaults.conf加载文件
# 省略了--master spark://node7-2:7077 挪到了spark-defaults.conf
bin/spark-submit --name myPi --executor-memory 500m --total-executor-cores 2 --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.4.4.jar 100
启动历史服务器(一般来说:历史服务器是在客户端上启动;hadoop101)
sbin/start-history-server.sh
停止历史服务器
sbin/stop-history-server.sh
Spark历史服务器 web 端口在logs日志中会提到 18080
Spark历史服务器放日志文件中存储的格式是json
5.运行示例
# --master:把任务提交给大哥;
# --executor-memory:指定executor的内存;
# --executor-cores:指定executor的cpu,核心
bin/spark-submit \
--master spark://hadoop102:7077 \
--name myPi \
--executor-memory 500m \
--total-executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
examples/jars/spark-examples_2.11-2.4.4.jar \
100000
# --master:把任务提交给大哥;
# --executor-memory:指定executor的内存;(都是workder的,executor)
# --executor-cores:指定executor的cpu,核心(都是workder的,executor)
# --deploy-mode:部署模式
bin/spark-submit \
--master spark://hadoop102:7077 \
--name myPi \
--deploy-mode cluster \
--executor-memory 500m \
--total-executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
examples/jars/spark-examples_2.11-2.4.4.jar \
10000
# --driver-cores:适应于集群模式;2核
# --driver-memory:适应于集群模式;500m;
bin/spark-submit \
--master spark://hadoop102:7077 \
--name myPi \
--deploy-mode cluster \
--executor-memory 500m \
--total-executor-cores 2 \
--driver-cores 2 \
--driver-memory 500m \
--class org.apache.spark.examples.SparkPi \
examples/jars/spark-examples_2.11-2.4.4.jar \
100
# --master:把任务提交给大哥;
# --executor-memory:指定executor的内存;(都是workder的,executor)
# --executor-cores:指定executor的cpu,核心(都是workder的,executor)
# --deploy-mode:部署模式
bin/spark-submit \
--master yarn \
--name myPi \
--executor-memory 500m \
--total-executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
examples/jars/spark-examples_2.11-2.4.4.jar \
10000
集群提交
# --master:把任务提交给大哥;
# --executor-memory:指定executor的内存;(都是workder的,executor)
# --executor-cores:指定executor的cpu,核心(都是workder的,executor)
# --deploy-mode:部署模式
bin/spark-submit \
--master yarn \
--name myPi \
--deploy-mode cluster \
--executor-memory 500m \
--total-executor-cores 2 \
--class org.apache.spark.examples.SparkPi \
examples/jars/spark-examples_2.11-2.4.4.jar \
10000