使用YARN master以编程方式提交spark-submit不起作用

时间:2017-04-16 02:33:33

标签: python apache-spark yarn

我正在使用Apache Spark 2.1.0。如果我这样做:

public static void setAcceptThirdPartyCookies(WebView webView, boolean accept) {
    CookieManager cookieManager = CookieManager.getInstance();

    // This is a safeguard, in case you've disabled cookies elsewhere
    if (accept && !cookieManager.acceptCookie()) {
        cookieManager.setAcceptCookie(true);
    }
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        cookieManager.setAcceptThirdPartyCookies(webView, accept);
    }
}

Spark python模块将在YARN上正确执行,应用程序将作为已完成的应用程序显示在YARN Web浏览器GUI上。

如果我以编程方式执行,它不会显示在YARN GUI中,所以我假设它不会最终使用YARN作为master:

$ spark-submit --master yarn main.py

如何在Python中以编程方式使用YARN master运行我的Spark应用程序?

我试过了:

  • from pyspark import SparkContext, SparkConf import os from pyspark.sql import * from pyspark.sql.types import * def read_cluster_file(file_path, spark, table_name): cluster_data = spark.read.csv(file_path, header=True, mode="DROPMALFORMED") cluster_data.createOrReplaceTempView(table_name) return cluster_data def main(): spark = SparkSession.builder.master("yarn").appName("gene_cluster").getOrCreate() dir = os.path.dirname(__file__) cluster_data = read_cluster_file("file:"+dir+"/gene_cluster.csv", ",", spark, "cluster") result_df = spark.sql("SELECT `subunits(Entrez IDs)` FROM cluster") result_df.show() if __name__ == '__main__': main() .setMaster("yarn-client")

  • 使用SQLContext和新的SparkSession。

1 个答案:

答案 0 :(得分:1)

我在HDP2.5中面临着同样的问题。我正在使用SparkSession API,即使我将master设置为'yarn',SparkContext还是在本地模式下创建的,与我的yarn相关的配置均无效。我还通过使用带有以下命令的spark-submit提交示例应用程序来检查集群设置是否存在任何问题。

spark-submit --master yarn --deploy-mode client --class org.apache.spark.examples.SparkPi /usr/hdp/2.5.0.0-1245/spark/lib/spark-examples-1.6.2.2.5.0.0-1245-hadoop2.7.3.2.5.0.0-1245.jar 10

该作业执行得很好,从Spark WebUI可以清楚地看到它作为集群作业运行,并且执行者分布在我的工作节点之间。

在深入研究Spark代码之后,似乎使用pyspark即使在不考虑配置的情况下也创建了sc,并且一旦创建了配置,就会应用一些特定的配置,即使在spark之后也可以有效上下文已初始化,但在初始化时必须适当设置一些上下文。我终于通过设置PYSPARK_SUBMIT_ARGS来运行该作业。

export PYSPARK_SUBMIT_ARGS="--master yarn pyspark-shell"

查看pyspark代码中的java_gateway.py进行进一步了解。我们将很快迁移到HDP3.0,并且如果需要在最新版本中进行更新。