【问题标题】:How can I change HDFS replication factor for my Spark program?如何更改我的 Spark 程序的 HDFS 复制因子?
【发布时间】:2017-09-07 22:49:39
【问题描述】:

我需要将我的 Spark 程序的 HDFS 复制因子从 3 更改为 1。在搜索时,我想出了“spark.hadoop.dfs.replication”属性,但通过查看https://spark.apache.org/docs/latest/configuration.html,它似乎不再存在。那么,如何从我的 Spark 程序或使用 spark-submit 更改 hdfs 复制因子?

【问题讨论】:

    标签: scala hadoop apache-spark hdfs


    【解决方案1】:

    您应该使用spark.hadoop.dfs.replication 在您的 spark 应用程序中设置 HDFS 中的复制因子。但是为什么在https://spark.apache.org/docs/latest/configuration.html 中找不到呢?那是因为该链接 ONLY 包含特定于 spark 的配置。事实上,您设置的任何以spark.hadoop.* 开头的属性都会自动转换为Hadoop 属性,去掉开头的“spark.haddoop.”。你可以在https://github.com/apache/spark/blob/d7b1fcf8f0a267322af0592b2cb31f1c8970fb16/core/src/main/scala/org/apache/spark/deploy/SparkHadoopUtil.scala找到它是如何实现的

    你应该寻找的方法是appendSparkHadoopConfigs

    【讨论】:

    • 为了在 shell 中进行测试,我必须将它作为命令行参数传递:spark-shell --conf spark.hadoop.dfs.replication=1。 (如果我不这样做,尝试更改/设置 shell 内的值是行不通的。我的意思是……值会改变(即,“get”会显示新值“1”),但文件仍使用默认复制 3 写入。)
    【解决方案2】:

    HDFDS 配置在任何方面都不特定于 Spark。您应该能够使用标准 Hadoop 配置文件对其进行修改。特别是hdfs-site.xml

    <property> 
      <name>dfs.replication<name> 
      <value>3<value> 
    <property>
    

    也可以使用SparkContext实例访问Hadoop配置:

    val hconf: org.apache.hadoop.conf.Configuration = spark.sparkContext.hadoopConfiguration
    hconf.setInt("dfs.replication", 3)
    

    【讨论】:

      猜你喜欢
      • 2013-06-18
      • 2013-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-21
      • 2016-05-26
      • 1970-01-01
      • 2021-12-24
      相关资源
      最近更新 更多