原因
DriverProgram:客户端;提交一个应用程序(application)以后,再提交一次,就无法查看到之前的提交信息了;使用历史服务器就可以。
准备
已安装好hadoop(注意插件之间的版本兼容),spark。
开始
复制spark-defaults.conf.template为spark-defaults.conf
添加如下内容
# 作用:bin/spark-submit 后面跟了一大堆参数;这些参数如果放到了这个文件中;每次运行spark-submit的时候,会自动的从这个文件找参数;
# 这个文件只需要放到运行bin/spark-submit的服务器上就可以(建议四台机器一块放)
# 空格左边的叫键,右边叫值; 它会在bin/spark-submit后面的参数前面 加上spark;
# spark standlone 的大哥
spark.master spark://node7-2:7077
# executor 的内存; 如果这里面要是木有,就还加上bin/spark-submit的参数上
spark.executor.memory 500m
# 启用历史服务器
spark.eventLog.enabled true
# 历史服务器会写一些日志,这个目录是日志的存储目录(如果目录不存在,得创建)
spark.eventLog.dir hdfs://node7-1:8020/spark/logs
# 读取目录
spark.history.fs.logDirectory hdfs://node7-1:8020/spark/logs
复制spark-env.sh.template为spark-env.sh
添加如下内容
SPARK_MASTER_HOST=bqy01
# 设置zookeepr,不能换行
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=bqy01:2181,bqy02:2181,bqy03:2181 -Dspark.deploy.zookeeper.dir=/spark"
# 告诉Spark,hadoop放到哪里面了,前题是每一个Spark,的服务器上都装有hadoop
# HADOOP_CONF_DIR=/data/module/hadoop/etc/hadoop/
启动历史服务器(一般来说:历史服务器是在客户端上启动;node7-1)
启动
sbin/start-history-server.sh
关闭
sbin/stop-history-server.sh
试行案例
普通版
bin/spark-submit \
--master spark://bqy02: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://bqy02: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
查看
点击其中一个发现访问的就是4040的网页;
Spark历史服务器放日志文件中存储的格式是json