Mac本地独立模式下Spark历史服务器无应用记录的配置求助
解决Spark单节点独立模式历史服务器无应用记录的问题
我之前在Mac上搭建Spark独立模式时也碰到过完全一样的问题!你现在的配置已经开启了事件日志的开关,但缺少了日志存储路径的配置,而且历史服务器也需要明确知道从哪里读取这些日志,所以才看不到应用记录。下面是一步步的解决步骤:
1. 配置Spark应用的事件日志存储路径
首先要给Spark指定一个本地目录来存储作业的事件日志(单节点场景用本地文件系统就足够,不用HDFS):
- 先创建日志目录,打开终端执行:
把mkdir -p /Users/你的用户名/spark-event-logs你的用户名换成你Mac上的实际用户名,比如/Users/jane/spark-event-logs - 打开Spark的
spark-defaults.conf配置文件(如果是brew安装的Spark,路径一般是/usr/local/Cellar/spark/[你的Spark版本]/libexec/conf/),修改以下配置:spark.master spark://master:7077 spark.eventLog.enabled true # 取消注释并修改成你刚才创建的本地路径,必须以file://开头 spark.eventLog.dir file:///Users/你的用户名/spark-event-logs # 其他保留的配置可以不动 # spark.serializer org.apache.spark.serializer.KryoSerializer # spark.driver.memory 5g # spark.executor.extraJavaOptions -XX:+PrintGCDetails -Dkey=value -Dnumbers="one two three"
2. 配置历史服务器的日志读取路径
接下来要让历史服务器知道去哪里读取这些日志:
- 如果还没生成
spark-env.sh,先复制模板文件:cp /usr/local/Cellar/spark/[你的Spark版本]/libexec/conf/spark-env.sh.template /usr/local/Cellar/spark/[你的Spark版本]/libexec/conf/spark-env.sh - 打开
spark-env.sh,在文件末尾添加一行:
这里的路径必须和上面SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=file:///Users/你的用户名/spark-event-logs"spark.eventLog.dir的路径完全一致!
3. 重启Spark服务
配置完成后,需要重启相关服务让配置生效:
- 先停止正在运行的master和history server:
这个./sbin/stop-master.sh ./sbin/stop-history-server.sh./sbin路径是Spark安装目录下的sbin文件夹,比如/usr/local/Cellar/spark/[版本号]/libexec/sbin/ - 然后重新启动master和history server:
./sbin/start-master.sh ./sbin/start-history-server.sh
4. 验证效果
现在跑一个简单的Spark作业来测试:
- 打开spark-shell:
spark-shell - 在shell里执行一个简单的计算:
sc.parallelize(1 to 100).count() - 然后打开浏览器访问历史服务器页面(默认是
http://localhost:18080),刷新一下,你就能看到刚才运行的应用记录了!
额外注意点
- 确保日志目录的权限正确,Spark要有读写权限,用当前用户创建的目录一般没问题
- 如果是手动下载的Spark而非brew安装,配置文件在你解压的Spark文件夹的
conf目录下 - 路径一定要写对,
file://后面是绝对路径,三个斜杠不要少(file:///)
内容的提问来源于stack exchange,提问作者pac
相关产品推荐
相关产品推荐

