Spark学习之Spark调优与调试(7)

Spark学习之Spark调优与调试(7)

1. 对Spark进行调优与调试通常需要修改Spark应用运行时配置的选项。

当创建一个SparkContext时就会创建一个SparkConf实例。

2. Spark特定的优先级顺序来选择实际配置:

优先级最高的是在用户代码中显示调用set()方法设置选项;
其次是通过spark-submit传递的参数;
再次是写在配置文件里的值;
最后是系统的默认值。

3.查看应用进度信息和性能指标有两种方式:网页用户界面、驱动器和执行器进程生成的日志文件。

4.Spark执行的组成部分:作业、任务和步骤

需求:使用Spark shell完成简单的日志分析应用。
scala> val input =sc.textFile("/home/spark01/Documents/input.text")
input: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[3] at textFile at <console>:27

scala> val tokenized = input.map(line=>line.split(" ")).filter(words=>words.size>0)
tokenized: org.apache.spark.rdd.RDD[Array[String]] = MapPartitionsRDD[5] at filter at <console>:29

scala> val counts = tokenized.map(words=>(words(0),1)).reduceByKey{(a,b)=>a+b}
counts: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[7] at reduceByKey at <console>:31

scala> // see RDD

scala> input.toDebugString
res0: String = 
(1) MapPartitionsRDD[3] at textFile at <console>:27 []
 |  /home/spark01/Documents/input.text HadoopRDD[2] at textFile at <console>:27 []

scala> counts.toDebugString
res1: String = 
(1) ShuffledRDD[7] at reduceByKey at <console>:31 []
 +-(1) MapPartitionsRDD[6] at map at <console>:31 []
    |  MapPartitionsRDD[5] at filter at <console>:29 []
    |  MapPartitionsRDD[4] at map at <console>:29 []
    |  MapPartitionsRDD[3] at textFile at <console>:27 []
    |  /home/spark01/Documents/input.text HadoopRDD[2] at textFile at <console>:27 []

scala> counts.collect()
res2: Array[(String, Int)] = Array((ERROR,1), (##input.text##,1), (INFO,4), ("",2), (WARN,2))

scala> counts.cache()
res3: counts.type = ShuffledRDD[7] at reduceByKey at <console>:31

scala> counts.collect()
res5: Array[(String, Int)] = Array((ERROR,1), (##input.text##,1), (INFO,4), ("",2), (WARN,2))

scala>

5. Spark网页用户界面

默认情况地址是http://localhost:4040
通过浏览器可以查看已经运行过的作业(job)的详细情况
如图下图:

图1所有任务用户界面

图二作业2详细信息用户界面

6. 关键性能考量:

代码层面:并行度、序列化格式、内存管理
运行环境:硬件供给。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏about云

spark2 sql读取数据源编程学习样例1

问题导读 1.dataframe如何保存格式为parquet的文件? 2.在读取csv文件中,如何设置第一行为字段名? 3.dataframe保存为表如何指定b...

4696
来自专栏祝威廉

Spark 多个Stage执行是串行执行的么?

这里的话,我们构建了两个输入(input1,input2),input2带有一个reduceByKey,所以会产生一次Shuffle,接着进行Join,会产生第...

714
来自专栏Spark生态圈

[spark] Checkpoint 源码解析

在spark应用程序中,常常会遇到运算量很大经过很复杂的 Transformation才能得到的RDD即Lineage链较长、宽依赖的RDD,此时我们可以考虑将...

812
来自专栏AILearning

Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFram...

9688
来自专栏个人分享

SparkSql官方文档中文翻译(java版本)

Spark SQL是Spark的一个组件,用于结构化数据的计算。Spark SQL提供了一个称为DataFrames的编程抽象,DataFrames可以充当分布...

933
来自专栏Albert陈凯

Spark ReadmeApache Spark

Apache Spark Spark is a fast and general cluster computing system for Big Data. ...

2596
来自专栏积累沉淀

Spark实时流计算Java案例

现在,网上基于spark的代码基本上都是Scala,很多书上也都是基于Scala,没办法,谁叫spark是Scala写出来的了,但是我现在还没系统的学习Scal...

2266
来自专栏个人分享

最最简单的~WordCount¬

步骤1:textFile先生成HadoopRDD,然后再通过map操作生成MappedRDD.

691
来自专栏我是攻城师

Intellj IDEA +SBT + Scala + Spark Sql读取HDFS数据

3738
来自专栏牛肉圆粉不加葱

Spark SQL,DataFrame以及 Datasets 编程指南 - For 2.0

Spark SQL 是 Spark 用来处理结构化数据的一个模块。与基础的 Spark RDD API 不同,Spark SQL 提供了更多数据与要执行的计算的...

822

扫码关注云+社区