Spark History Server Web UI配置

本文介绍如何在Hadoop集群上配置Spark History Server,包括创建日志存储路径、配置相关参数、启动服务等步骤。

1.进入spark目录和配置文件

[root@hadoop01 ~]# cd /opt/app/spark/conf
[root@hadoop01 conf]# cp spark-defaults.conf.template spark-defaults.conf

2.创建spark-history的存储日志路径为hdfs上(当然也可以在linux文件系统上)

[root@hadoop01 conf]# hdfs dfs -ls /
Found 3 items
drwxr-xr-x   - root root          0 2017-02-14 12:43 /spark
drwxrwx---   - root root          0 2017-02-14 12:58 /tmp
drwxr-xr-x   - root root          0 2017-02-14 12:58 /user
You have new mail in /var/spool/mail/root
[root@hadoop01 conf]# hdfs dfs -ls /spark
Found 1 items
drwxrwxrwx   - root root          0 2017-02-15 21:44 /spark/checkpointdata
[root@hadoop01 conf]# hdfs dfs -mkdir /spark/historylog

在HDFS中创建一个目录,用于保存Spark运行日志信息。Spark History Server从此目录中读取日志信息
3.配置

[root@hadoop01 conf]# vi spark-defaults.conf
spark.eventLog.enabled           true
spark.eventLog.compress          true
spark.eventLog.dir               hdfs://nameservice1/spark/historylog
spark.yarn.historyServer.address 172.16.101.55:18080

spark.eventLog.dir保存日志相关信息的路径,可以是hdfs://开头的HDFS路径,也可以是file://开头的本地路径,都需要提前创建
spark.yarn.historyServer.address : Spark history server的地址(不加http://).
这个地址会在Spark应用程序完成后提交给YARN RM,然后可以在RM UI上点击链接跳转到history server UI上.

4.添加SPARK_HISTORY_OPTS参数
[root@hadoop01 conf]# vi spark-env.sh

#!/usr/bin/env bash
export SCALA_HOME=/root/learnproject/app/scala
export JAVA_HOME=/usr/java/jdk1.8.0_111
export SPARK_MASTER_IP=172.16.101.55
export SPARK_WORKER_MEMORY=1g
export SPARK_PID_DIR=/root/learnproject/app/pid
export HADOOP_CONF_DIR=/root/learnproject/app/hadoop/etc/hadoop

export SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://mycluster/spark/historylog \
-Dspark.history.ui.port=18080 \
-Dspark.history.retainedApplications=20"

5.启动服务和查看

[root@hadoop01 spark]# ./sbin/start-history-server.sh 
starting org.apache.spark.deploy.history.HistoryServer, logging to /root/learnproject/app/spark/logs/spark-root-org.apache.spark.deploy.history.HistoryServer-1-sht-sgmhadoopnn-01.out

[root@hadoop01  ~]# jps
28905 HistoryServer
30407 ProdServerStart
30373 ResourceManager
30957 NameNode
16949 Jps
30280 DFSZKFailoverController
31445 JobHistoryServer
[root@hadoop01  ~]# ps -ef|grep spark
root     17283 16928  0 21:42 pts/2    00:00:00 grep spark
root     28905     1  0 Feb16 ?        00:09:11 /usr/java/jdk1.8.0_111/bin/java -cp /root/learnproject/app/spark/conf/:/root/learnproject/app/spark/jars/*:/root/learnproject/app/hadoop/etc/hadoop/ -Dspark.history.fs.logDirectory=hdfs://mycluster/spark/historylog -Dspark.history.ui.port=18080 -Dspark.history.retainedApplications=20 -Xmx1g org.apache.spark.deploy.history.HistoryServer
You have new mail in /var/spool/mail/root
[root@hadoop01  ~]# netstat -nlp|grep 28905
tcp        0      0 0.0.0.0:18080               0.0.0.0:*                   LISTEN      28905/java          

以上配置是针对使用自己编译的Spark部署到集群中一到两台机器上作为提交作业客户端的,如果你是CDH集群中集成的Spark那么可以在管理界面直接查看!

<think>嗯,用户现在想了解如何在Spark Thrift Server 2.4.4中配置和启用会话监控。我需要先回顾一下之前的对话,用户之前询问的是HiveServer2的JVM监控方法,现在转向了Spark Thrift Server的会话监控,虽然都是监控,但具体技术点不同。 首先,用户提到了引用1中的Spark Web UI,默认端口4040,可以查看运行中的应用信息,但问题在于当应用退出后如何查看历史记录,需要配置History Server。这可能与会话监控有关,但用户现在问的是Thrift Server的会话监控,可能需要更具体的配置。 接着引用2提到Spark SQL支持Hive,需要添加特定的构建标志,并且在集群中配置hive-site.xml和相关依赖。这可能涉及到Thrift Server的依赖配置,但用户的问题是关于会话监控,可能需要查看活动会话、查询状态等信息。 引用3是关于YARN CapacityScheduler的配置,可能与会话资源管理有关,但暂时不太直接相关。 回顾用户上一次的问题,他们询问了HiveServer2的JVM监控方法,包括工具使用、JMX、GC日志等。现在转向Spark Thrift Server的会话监控,可能需要类似的方法,但具体工具可能不同。 用户的需求是开启会话监控,可能包括查看当前连接的用户、执行的查询、资源使用情况等。Spark Thrift Server是基于HiveServer2的,所以可能需要类似Hive的监控方式,但结合Spark自身的监控功能。 首先,我应该考虑Spark Thrift Server本身的监控选项。Spark Web UI可能是一个途径,但Thrift Server可能有自己的管理接口。根据引用1,Spark Web UI默认在4040端口,但Thrift Server可能有不同的端口设置或者需要通过History Server来查看历史会话。 另外,配置方面,可能需要修改Spark配置文件,如spark-defaults.conf,设置相关的监控参数,比如启用事件日志,这样History Server可以记录会话信息。同时,可能需要配置Thrift Server的参数,如hive.server2.webui.port,来暴露监控界面。 用户可能还需要查看当前活动的会话,这可能需要通过Spark的REST API或者JDBC接口来查询。例如,使用SHOW SESSIONS命令,或者在Spark SQL中查询特定的系统表。 另外,安全方面需要考虑,如果用户提到JMX有安全风险,那么在配置监控时是否需要认证,或者使用HTTPS等安全措施。 总结下来,步骤可能包括: 1. 启用SparkWeb UIHistory Server来监控会话。 2. 配置Thrift Server的特定参数,如端口、事件日志路径。 3. 使用REST API或JDBC命令查看当前会话。 4. 集成监控工具如Prometheus和Grafana进行可视化。 5. 调整日志级别以捕获更多会话信息。 需要确保所有配置步骤适用于Spark 2.4.4版本,并引用相关的文档或社区建议。同时,提醒用户注意端口冲突、安全配置以及依赖的JAR包是否正确部署,特别是在集群环境中。</think>根据Spark Thrift Server的运行机制和监控需求,以下是配置会话监控的完整方案(以Spark 2.4.4为例): --- ### 一、启用Web UI监控 1. **配置Web UI端口** 在`spark-defaults.conf`中增加: ```properties spark.thrift.server.ui.port=4041 # 避免与Spark应用默认端口冲突 spark.ui.proxyBase=/thrift ``` 验证地址:`http://<server_host>:4041` 2. **查看活动会话** Web UI会展示: - 当前活跃JDBC/ODBC会话(通过`Sessions`标签页) - 每个会话的SQL执行计划(DAG可视化) - 各阶段任务资源消耗(CPU/MEM指标) --- ### 二、配置事件日志记录 1. **启用事件日志** 修改`spark-defaults.conf`: ```properties spark.eventLog.enabled=true spark.eventLog.dir=hdfs:///spark-events # 推荐HDFS路径 spark.history.fs.logDirectory=hdfs:///spark-events ``` 2. **启动History Server** 执行命令启动历史服务: ```bash $SPARK_HOME/sbin/start-history-server.sh ``` 通过`http://<history_server>:18080`可追溯已完成会话的完整执行记录[^1] --- ### 三、通过Spark SQL监控会话 1. **内置监控命令** 通过Beeline连接后执行: ```sql SHOW SESSIONS; -- 显示所有活动会话 SHOW DATABASES LIKE 'sys%'; -- 查看系统数据库 SELECT * FROM sys.jdbc_connections; -- 获取连接详情(包含client_ip、user_name) ``` 2. **自定义指标扩展** 在`spark-defaults.conf`中添加: ```properties spark.sql.statistics.verbose=true spark.sql.thriftServer.instrumentation=true ``` --- ### 四、集成Prometheus监控 1. **配置指标导出** 添加依赖到`spark-env.sh`: ```bash export SPARK_METRICS_CONF=" *.sink.prometheusServlet.class=org.apache.spark.metrics.sink.PrometheusServlet *.sink.prometheusServlet.path=/metrics/prometheus master.sink.prometheusServlet.port=4042 " ``` 2. **Grafana仪表盘配置** 使用官方模板`Spark-Thrift-Metrics`可实时监控: - 并发会话数(通过`jdbc_num_active_connections`指标) - 查询耗时分布直方图(`sql_execution_duration_seconds`) - 内存压力指标(`jvm_memory_usage`) --- ### 五、日志级调优 1. **调整Thrift Server日志** 在`log4j.properties`中设置: ```properties log4j.logger.org.apache.spark.sql.hive.thriftserver=INFO log4j.logger.org.apache.hive.service.cli.session=DEBUG ``` 2. **关键日志特征** 监控日志文件`$SPARK_HOME/logs/spark-*.log`中以下模式: ```log INFO ThriftCLIService: Session [id=xxxx] opened INFO ThriftCLIService: Executing query 'SELECT...' WARN SessionState: Query exceeded timeout threshold ``` --- ### 六、安全增强建议 1. **JMX认证配置** 若需通过JMX监控,在`spark-env.sh`中启用加密: ```bash -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.password.file=/path/to/jmx_passwd ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值