繁体   English   中英

提交火花的工作绩效

[英]Spark-submit job performance

我目前在以下环境上运行spark-submit:

单节点RAM :40GB, VCores :8, Spark版本 :2.0.2, Python :3.5)

我的pyspark程序基本上将从HDFS读取一个450MB的非结构化文件。 然后它将遍历每行并获取必要的数据并将其放置在列表中。 最后,它将使用createDataFrame并将数据帧保存到Hive表中。

我的pyspark程序代码段:

sparkSession = (SparkSession
.builder
.master("yarn")
.appName("FileProcessing")
.enableHiveSupport()
.config("hive.exec.dynamic.partition", "true")
.config("hive.exec.dynamic.partition.mode", "nonstrict")
.getOrCreate())

lines = sparkSession.read.text('/user/test/testfiles').collect()

for line in lines:
    // perform some data extrating and place it into rowList and colList using normal python operation

df = sparkSession.createDataFrame(rowList, colList)

df.registerTempTable("tempTable")
sparkSession.sql("create table test as select * from tempTable");

我的spark-submit命令如下:

spark-submit --master yarn --deploy-mode cluster --num-executors 2 --driver-memory 4g --executor-memory 8g --executor-cores 3 --files /usr/lib/spark-2.0.2-bin-hadoop2.7/conf/hive-site.xml FileProcessing.py

完成处理大约需要5分钟。 表现好吗? 如何设置执行程序内存和执行程序核心以进行调整,以便该过程可以在1-2分钟内完成?

感谢您的回应。 谢谢。

为了调整您的应用程序,您需要了解几件事

1)您需要监视您的应用程序,无论您的群集是否被充分利用,您创建的应用程序使用了多少资源

可以使用各种工具进行监视。 Ganglia在Ganglia中,您可以找到CPU,内存和网络使用情况。

2)根据对CPU和内存使用情况的观察,您可以更好地了解应用程序需要进行哪种调整

形成你的火花点

在spark-defaults.conf中

您可以指定所需的序列化类型,即使您可以更改垃圾回收算法,应用程序也需要多少驱动程序内存和执行程序内存。

以下是一些示例,您可以根据自己的要求调整此参数

spark.serializer                 org.apache.spark.serializer.KryoSerializer
spark.driver.memory              5g
spark.executor.memory            3g
spark.executor.extraJavaOptions  -XX:MaxPermSize=2G -XX:+UseG1GC
spark.driver.extraJavaOptions    -XX:MaxPermSize=6G -XX:+UseG1GC

有关更多详细信息,请参见http://spark.apache.org/docs/latest/tuning.html

希望这可以帮助!!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM