Apache spark 设置fs.defaultFS属性时无法创建Dataproc群集?

Apache spark 设置fs.defaultFS属性时无法创建Dataproc群集?,apache-spark,hadoop,google-cloud-dataproc,Apache Spark,Hadoop,Google Cloud Dataproc,这已经是前面讨论的对象,但是,我不相信答案,因为它指定可以创建一个集群设置fs.defaultFS属性。此外,即使可以通过编程方式设置此属性,有时从命令行设置它也更方便 因此,我想知道为什么传递给集群创建命令的以下选项不起作用:--properties core:fs.defaultFS=gs://my bucket?请注意,我没有包括所有参数,因为我在没有前一个标志的情况下运行了命令,并且它成功地创建了集群。但是,当传递此消息时,我得到:“失败:无法启动主机:DataNodes报告数不足。”

这已经是前面讨论的对象,但是,我不相信答案,因为它指定可以创建一个集群设置fs.defaultFS属性。此外,即使可以通过编程方式设置此属性,有时从命令行设置它也更方便

因此,我想知道为什么传递给集群创建命令的以下选项不起作用:
--properties core:fs.defaultFS=gs://my bucket
?请注意,我没有包括所有参数,因为我在没有前一个标志的情况下运行了命令,并且它成功地创建了集群。但是,当传递此消息时,我得到:“失败:无法启动主机:DataNodes报告数不足。”


如果有人通过设置fs.defaultFS来创建dataproc集群,那就太好了?谢谢。

确实,由于对实际HDF的某些依赖性,仍然存在已知问题;这些文档并不意味着在集群创建时将fs.defaultFS设置为GCS路径会起作用,而是简单地提供出现在
core site.xml
中的属性的一个方便示例;例如,从理论上讲,可以将
fs.defaultFS
设置为不同的先前存在的HDFS集群。为了避免混淆,我已经提交了修改文档中示例的通知单

两种选择:

  • 只需在作业提交时使用每个作业属性覆盖
    fs.defaultFS
  • 通过使用初始化操作而不是集群属性显式设置
    fs.defaultFS
    来解决一些已知问题
  • 更好地理解选项1的工作原理,因为集群级HDFS依赖关系不会改变。选项2之所以有效,是因为大多数不兼容仅发生在初始启动期间,并且初始化操作在相关守护进程启动之后运行。要覆盖init操作中的设置,可以使用
    bdconfig

    bdconfig set_property \
        --name 'fs.defaultFS' \
        --value 'gs://my-bucket' \
        --configuration_file /etc/hadoop/conf/core-site.xml \
        --clobber
    

    确实,由于对实际HDF的某些依赖性,仍然存在已知的问题;这些文档并不意味着在集群创建时将fs.defaultFS设置为GCS路径会起作用,而是简单地提供出现在
    core site.xml
    中的属性的一个方便示例;例如,从理论上讲,可以将
    fs.defaultFS
    设置为不同的先前存在的HDFS集群。为了避免混淆,我已经提交了修改文档中示例的通知单

    两种选择:

  • 只需在作业提交时使用每个作业属性覆盖
    fs.defaultFS
  • 通过使用初始化操作而不是集群属性显式设置
    fs.defaultFS
    来解决一些已知问题
  • 更好地理解选项1的工作原理,因为集群级HDFS依赖关系不会改变。选项2之所以有效,是因为大多数不兼容仅发生在初始启动期间,并且初始化操作在相关守护进程启动之后运行。要覆盖init操作中的设置,可以使用
    bdconfig

    bdconfig set_property \
        --name 'fs.defaultFS' \
        --value 'gs://my-bucket' \
        --configuration_file /etc/hadoop/conf/core-site.xml \
        --clobber
    

    很好,所以我尝试了这一点,它正确地设置了集群创建成功的字段。但是,在提交spark作业时,我会遇到以下异常:“在配置单元中找不到vysettings.xml文件。\u HOME pyspark.sql.utils.AnalysisException:HDFS上的根scratch dir:/tmp/HIVE应该是可写的。当前权限为:rwx------;”。我想知道是否还有其他的配置可以更改?我怀疑当fs.defaultFS设置为这个级别时,作业会尝试从gs://my bucket/etc/hive/conf/“vysettings.xml读取设置文件。所以不确定在提交时这样做是否好?是的,框架中可能会有很多导致问题的进一步假设;GCS posix权限是“伪造的”由于访问实际上由IAM权限控制,因此您可以将
    fs.gs.reported.permissions
    设置为希望它报告的任何内容,无论是在群集创建时
    core:fs.gs.reported.permissions=777
    ,还是在Spark作业提交时,您可能需要使用“Spark.hadoop”前缀:
    --properties spark.hadoop.fs.gs.reported.permissions=777
    下面是在代码中定义配置键的地方:这很有效!但是,在试验之后,我建议使用从代码中设置
    fs.defaultFS
    的方法,因为它需要最少的更改,此外,还可以从
    fs.gs.system.bucket
    config中获取Dataproc bucket。这取决于工作负载。GCS确实可以实现比HDFS更好的吞吐量,因为网络流量可能会在大量物理磁盘上分条,但小的往返延迟在GCS上更糟糕,因为它基本上通过额外的层(身份验证、路由、SSL/TLS)。一般来说,您可能不必担心性能差异,处理大量数据的典型Spark作业在地面军事系统上应该表现良好,因为吞吐量有限,但如果您想挤出每一个百分比的效率,您需要考虑特定于工作负载的方面。很好,所以我尝试了这个,它正确地设置了这个字段,集群创建成功。但是,在提交spark作业时,我会遇到以下异常:“在配置单元中找不到vysettings.xml文件。\u HOME pyspark.sql.utils.AnalysisException:HDFS上的根scratch dir:/tmp/HIVE应该是可写的。当前权限为:rwx------;”。我想知道是否还有其他的配置可以更改?我怀疑当fs.defaultFS设置为这个级别时,作业会尝试从gs://my bucket/etc/hive/conf/“vysettings.xml读取设置文件。所以不确定在提交时这样做是否好?是的,框架中可能会有很多导致问题的进一步假设;GCS posix权限是“伪造的”“由于访问实际上由IAM权限控制,因此您可以将
    fs.gs.reported.permissions
    设置为任何您需要的权限