Spark应用程序运行日志查看

本文介绍了如何查看Spark应用程序的运行日志,包括通过WEBUI页面和直接访问日志文件。通过ApplicationID进入Spark作业监控界面,stdout文件显示println语句输出,stderr显示其他运行日志。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

比如,Spark应用程序代码如下:

 defseq(a: Int, b: Int): Int = {

   println("seq: " + a + "\t "+ b)

   math.max(a, b)

 }

 

 defcomb(a: Int, b: Int): Int = {

   println("comb: " + a + "\t "+ b)

   a + b

  }

 

   vardata11= sc.parallelize(List((1, 3), (1, 2), (1, 4), (2, 3)))

    data11.aggregateByKey(1)(seq, comb).collect

 

我要查看println的日志的方法:

进入WEBUI页面:http://192.168.180.156:8085选择相关的应用程序,在页面点击表格中Running Applications 的ApplicationID:app-20160520200716-0023

,这时候你可以进入到Spark作业监控的WEB UI界面,比如http://192.168.180.156:8085/app/?appId=app-20160520200716-0023

在页面中,输出的日志有sterr和stdout两种,在stdout可以查看程序中输出的内容。

如果你在程序中使用了println(....)输出语句,这些信息会在stdout文件里面显示;其余的Spark运行日志会在stderr文件里面显示。

也可以直接进行日志文件进行查看,如:

/home/huangmeiling/lib/spark-1.5.1/work/app-20160520200716-0023/0/stdout

/home/huangmeiling/lib/spark-1.5.1/work/app-20160520200716-0023/0/stderr

实例如下:

点击:stdout


日志文件:

 

转载请注明出处:

http://blog.youkuaiyun.com/sunbow0

 

 

 

### 创建和优化Spark应用程序 #### Spark应用程序的创建 Apache Spark是一个强大的分布式计算框架,适用于处理大规模数据集。为了构建高效的Spark应用,理解其基本架构至关重要[^1]。 一个典型的Spark应用程序由以下几个部分组成: - **Driver Program**: 这是用户编写的包含main函数的应用入口点。它定义了分布式数据集的操作逻辑并发出指令给Executor。 - **Cluster Manager (集群管理器)**: 可以是YARN, Mesos 或者 Standalone等不同的资源调度系统,负责分配资源给各个节点上的Executors。 - **Worker Nodes (工作节点/执行器)**: 实际运行任务的地方,每个worker node 上可以启动多个executors 来完成具体的计算作业。 要创建一个新的Spark项目,通常需要遵循这些步骤: 1. 设置开发环境,安装Java SDK、Scala(如果是基于scala的话),以及IDE如IntelliJ IDEA或Eclipse; 2. 使用Maven或者Sbt作为依赖管理和打包工具引入必要的库文件; 3. 编写代码实现业务逻辑,比如读取输入源的数据、转换操作、保存输出结果等; 4. 提交job至集群环境中去执行,可以通过命令行提交也可以通过API接口方式。 ```bash spark-submit --class com.example.MainClass \ --master yarn \ path/to/application.jar ``` 以上展示了如何利用`spark-submit`脚本向Yarn集群提交一个名为`com.example.MainClass`的任务,并指定了jar包的位置。 #### 优化Spark应用程序的方法论 当涉及到性能调优方面时,应该考虑如下几个重要因素来提高效率和稳定性[^2]: - **内存管理** 对于垃圾回收而言,调整RDD缓存所占比例是非常重要的一步,默认情况下,Spark会预留大约60%的executor内存用于存储持久化的RDDs,而剩下的40%则用来承载临时对象和其他开销。因此可以根据实际应用场景适当减少前者增加后者,从而缓解GC压力。 - **I/O瓶颈解决** - *磁盘*: 减少不必要的中间结果落地次数,合理设置checkpoint频率防止过多的小文件产生拖慢速度。 - *网络*: 当存在大量跨节点通信时(例如Shuffle阶段),应确保driver与workers之间的连接稳定快速,尽可能使它们处于同一局域网内部署,以此加快传输速率。 - **其他建议** 利用Web UI界面查看实时指标变化趋势,结合日志分析找出潜在问题所在之处。另外,在正式上线之前务必进行全面的压力测试,提前发现可能存在的隐患并加以改进。 最后需要注意的是,尽管很多时候性能问题是由于编码不当引起的,但在着手修改算法之前应当先验证所有参与运算的工作站状态良好——包括但不限于CPU利用率过高、硬盘剩余容量不足等问题都会间接影响整体表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值