【问题标题】:Low CPU utilization in SparkSpark 中的 CPU 利用率低
【发布时间】:2015-05-07 05:08:34
【问题描述】:

我在 8 核机器上以本地模式运行 Spark 作业。它有一个本地 SSD 和 64GB 的 RAM。 HDFS 在同一台机器上以伪分布式模式运行。运行以下作业时,我无法获得 CPU 利用率以超过单个核心的最大化。 RAM 使用率保持在 10GB 以下。环回接口最大速度约为 333MB/s。无论哪种方式,磁盘 IO 通常都低于 30MB/s。如何编写此代码以更好地利用我的硬件资源?

object FilterProperty {
    def main(args:Array[String]) {
        val conf = new SparkConf()
            .setAppName("Filter Claims Data for Property")
            .setMaster("local")
            .set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
            .set("spark.cores.max", "16")
        conf.registerKryoClasses(Array(classOf[JsObject]))
        val sc = new SparkContext(conf)
        val filtered = sc.textFile("hdfs://localhost:9000/user/kevin/intermediate/claims.json", 48)
            .filter(s => s != "")
            .map(s => Json.parse(s).as[JsObject])
            .filter(Util.property_filter)
        filtered.saveAsTextFile("hdfs://localhost:9000/user/kevin/intermediate/property_claims.json" + fn)
        sc.stop()
    }
}

【问题讨论】:

    标签: scala hadoop apache-spark


    【解决方案1】:

    你应该改变这行代码

    .setMaster("local")
    

    .setMaster("local[*]")
    

    这意味着在您的机器上使用与内核一样多的线程。或者您可以设置一个数字而不是 *,这意味着使用该数量的线程。

    【讨论】:

    • 太棒了,这让我的总利用率达到了约 90%。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-08-05
    • 2018-06-21
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    相关资源
    最近更新 更多