尝试在Kerberos环境中使用yarn在sftp上以sftp模式写入csv文件

时间:2018-08-02 13:16:25

标签: scala apache-spark sftp yarn kerberos

我正在尝试将数据帧写入csv文件并将此csv文件放入远程计算机。 Spark作业在Yarn上运行到Kerberos群集中。

以下,当作业尝试在远程计算机上写入csv文件时出现错误:

诊断:用户类引发异常:org.apache.hadoop.security.AccessControlException:权限被拒绝:user = dev,access = WRITE,inode =“ / data / 9 / yarn / local / usercache / dev / appcache / application_1532962490515_15862 / container_e05_1532962490515_15862_02_000001 / tmp / spark_sftp_connection_temp178 / _temporary / 0“:hdfs:hdfs:drwxr-xr-x

为了写入此csv文件,我在以sftp模式写入此文件的方法中使用以下参数:

def writeToSFTP(df: DataFrame, path: String) = {
    df.write
      .format("com.springml.spark.sftp")
      .option("host", "hostname.test.fr")
      .option("username", "test_hostname")
      .option("password", "toto")
      .option("fileType", "csv")
      .option("delimiter", ",")
      .save(path)
  }

我正在使用Spark SFTP连接器库,如链接中所述:https://github.com/springml/spark-sftp

用于启动作业的脚本是:

#!/bin/bash

kinit -kt /home/spark/dev.keytab dev@CLUSTER.HELP.FR

spark-submit --class fr.edf.dsp.launcher.LauncherInsertion \
--master yarn-cluster \
--num-executors 1 \
--driver-memory 5g \
--executor-memory 5g \
--queue dev \
--files /home/spark/dev.keytab#user.keytab,\
/etc/krb5.conf#krb5.conf,\
/home/spark/jar/dev-application-SNAPSHOT.conf#app.conf \
--conf "spark.executor.extraJavaOptions=-Dapp.config.path=./app.conf -Djava.security.auth.login.config=./jaas.conf" \
--conf "spark.driver.extraJavaOptions=-Dapp.config.path=./app.conf -Djava.security.auth.login.config=./jaas.conf" \
/home/spark/jar/dev-SNAPSHOT.jar > /home/spark/out.log 2>&1&

csv文件未写入HDFS。建立数据框后,我尝试将其发送到计算机。我怀疑sftp Spark连接器存在Kerberos问题:纱线无法联系远程计算机...

欢迎您的帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

在您具有写访问权的位置添加临时位置,不必担心清理,因为在ftp完成之后,这些文件最终将被删除,

  $('.btnNext').click(function() {
    $('.nav-tabs .active').parent().next('li').find('a').trigger('click');
  });

  $('.btnPrevious').click(function() {
    $('.nav-tabs .active').parent().prev('li').find('a').trigger('click');
  });