全部产品
云市场

Spark访问外部HDFS

更新时间:2019-06-20 20:31:58

在一些场景下,Spark集群需要访问外部集群的HDFS

  • 注意:hdfs端口打开后,因误操作hdfs导致的数据丢失等问题客户自身承担,客户需要对hdfs的操作比较了解。

访问限制

开通HDFS端口

  • 如果是要访问云HBase或云Spark的HDFS,请联系云HBase答疑(钉钉号),开通HDFS( 由于hdfs的开放可能造成用户的恶意攻击,引起集群不稳定甚至造成破坏。因此此功能暂时不直接开放给用户,当用户特别需要的情况下,我们通过云HBase答疑后台开通,随后客户使用完成,再关闭)

作业和会话配置

  • 假设Spark计算集群是实例A,待访问的HDFS存储集群是实例B,在创建作业和会话时需要添加以下配置:
    1. --conf spark.hadoop.dfs.nameservices=${A实例id},${B实例id}
    2. --conf spark.hadoop.dfs.client.failover.proxy.provider.${B实例id}=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    3. --conf spark.hadoop.dfs.ha.automatic-failover.enabled.${B实例id}=true
    4. --conf spark.hadoop.dfs.namenode.http-address.${B实例id}.nn1=${B实例id}-master1-001.spark.rds.aliyuncs.com:50070
    5. --conf spark.hadoop.dfs.namenode.http-address.${B实例id}.nn2=${B实例id}-master2-001.spark.rds.aliyuncs.com:50070
    6. --conf spark.hadoop.dfs.ha.namenodes.${B实例id}=nn1,nn2
    7. --conf spark.hadoop.dfs.namenode.rpc-address.${B实例id}.nn1=${B实例id}-master1-001.spark.rds.aliyuncs.com:8020
    8. --conf spark.hadoop.dfs.namenode.rpc-address.${B实例id}.nn2=${B实例id}-master2-001.spark.rds.aliyuncs.com:8020
  • 实例id查看查看实例id

  • 配置添加

    • 创建作业创建作业配置
    • 创建会话创建会话配置