【问题标题】:Set Ceph endpoint to DNS doesn't work in Hadoop将 Ceph 端点设置为 DNS 在 Hadoop 中不起作用
【发布时间】:2019-12-26 08:28:02
【问题描述】:

我正在尝试启用包含 Hadoop (2.7)、Spark(2.3) 和 Ceph(luminous) 的大数据环境。 在将 fs.s3a.endpoint 更改为域名之前,一切正常。

core-site.xml的关键部分如下:

<property>
    <name>fs.defaultFS</name>
    <value>s3a://tpcds</value>
</property>
<property>
        <name>fs.s3a.endpoint</name>
        <value>http://10.1.2.213:8080</value>
</property>

但是,当我将 fs.s3a.endpoint 更改为域名时,如下所示:

<property>
        <name>fs.s3a.endpoint</name>
        <value>http://gw.gearon.com:8080</value>
</property>

我尝试在 Hadoop Yarn 上启动 SparkSQL,抛出如下错误:

AmazonHttpClient:448 - Unable to execute HTTP request: tpcds.gw.gearon.com: Name or service not known
java.net.UnknownHostException: tpcds.gw.gearon.com: Name or service not known
        at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
        at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929)
        at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324)
        at java.net.InetAddress.getAllByName0(InetAddress.java:1277)

gw.gearon.com 肯定会转发给10.1.2.213。谷歌搜索后,我意识到应该再设置一个属性。

<property>
  <name>fs.s3a.path.style.access</name>
  <value>true</value>
  <description>Enable S3 path style access ie disabling the default virtual hosting behaviour.
    Useful for S3A-compliant storage providers as it removes the need to set up DNS for virtual hosting.
  </description>
</property>

fs.s3a.path.style.access 设置为true 后,启动Hadoop Map-Reduce 时错误消失。但是,对于 Hadoop Yarn 上的 Spark-SQL,错误仍然存​​在。我想也许 Spark 会覆盖 Hadoop 的设置,所以我还将spark.hadoop.fs.s3a.path.style.access true 附加到spark-defaults.xml,它仍然不起作用。

那么问题来了: 我设置的endpointhttp://gw.gearon.com:8080,为什么错误显示我tpcds.gw.gearon.com 是未知的? tpcds 是我的 Ceph 存储桶名称,我将其设置为我的 fs.defaultFS,它在 core-site.xml 中看起来不错。我该如何解决这个问题?

欢迎任何评论,并提前感谢您的帮助。

【问题讨论】:

    标签: apache-spark hadoop bigdata ceph


    【解决方案1】:

    您应该使用“亚马逊命名方法”,如 herehere 所述。

    也就是说,将通配符 dns CNAME 指向网关的名称:

    *.gw.gearon.com CNAME 10.1.2.213
    

    还要确保将该名称正确设置到网关中(文档here):

    rgw dns name = clover.voxelgroup.net
    

    【讨论】:

    • 感谢您的回答。这里有两个 cmets: 1. *.gw.gearon.com CNAME 10.1.2.213 应该是 *.gw.gearon.com IN CNAME 10.1.2.213,对吗? 2,在我的情况下,{hostname} 应该是 gw.gearon.com,对吧?即rgw dns name = gw.gearon.com?
    • 1.如果您使用的是绑定,则更正,例如,这不是我的情况。 2 正确,如果您查看您发布的错误:Unable to execute HTTP request: tpcds.gw.gearon.com 找到问题的关键是SparkSQL 正在使用这种命名方法来调用ceph:bucket.gateway.domain.com 这应该是标准的。
    猜你喜欢
    • 2021-11-07
    • 2017-12-10
    • 2016-08-28
    • 1970-01-01
    • 2020-04-05
    • 2011-12-09
    • 2020-06-01
    • 2014-11-21
    • 1970-01-01
    相关资源
    最近更新 更多