Программа Spark, принимающая конфигурации hadoop из неопределенного места - PullRequest
0 голосов
/ 29 апреля 2018

У меня есть несколько тестовых случаев, таких как чтение / запись файла в HDFS, которые я хочу автоматизировать с помощью Scala и запустить с помощью maven. Я взял конфигурационные файлы Hadoop тестовой среды и поместил их в каталог ресурсов моего проекта maven. Проект также работает на желаемом кластере из любого кластера, с которого я запускаю проект.

Одна вещь, которую я не получаю, это то, как Spark берет конфигурации Hadoop из каталога ресурсов, даже если я не указал это нигде в проекте. Ниже приведен фрагмент кода проекта.

def getSparkContext(hadoopConfiguration: Configuration): SparkContext ={
    val conf = new SparkConf().setAppName("SparkTest").setMaster("local")     
    val hdfsCoreSitePath = new Path("/etc/hadoop/conf/core-site.xml","core-site.xml")
    val hdfsHDFSSitePath = new Path("/etc/hadoop/conf/hdfs-site.xml","hdfs-site.xml")
    val hdfsYarnSitePath = new Path("/etc/hadoop/conf/yarn-site.xml","yarn-site.xml")
    val hdfsMapredSitePath = new Path("/etc/hadoop/conf/mapred-site.xml","mapred-site.xml")
    hadoopConfiguration.addResource(hdfsCoreSitePath)
    hadoopConfiguration.addResource(hdfsHDFSSitePath)
    hadoopConfiguration.addResource(hdfsYarnSitePath)
    hadoopConfiguration.addResource(hdfsMapredSitePath)
    hadoopConfiguration.set("hadoop.security.authentication", "Kerberos")
    UserGroupInformation.setConfiguration(hadoopConfiguration)
    UserGroupInformation.loginUserFromKeytab("alice", "/etc/security/keytab/alice.keytab")
    println("-----------------Logged-in via keytab---------------------")
    FileSystem.get(hadoopConfiguration)
    val sc=new SparkContext(conf)
    return sc
  }
@Test
def testCase(): Unit = {
    var hadoopConfiguration: Configuration = new Configuration()
    val sc=getSparkContext(hadoopConfiguration)
    //rest of the code
    //...
    //...
  }

Здесь я использовал hadoopconfiguration объект, но я нигде не указываю это для sparkContext, так как это будет запускать тесты на кластере, который я использую для запуска проекта, а не в какой-то удаленной тестовой среде.

Если это не правильный путь? Может кто-нибудь объяснить, как я должен выполнить свой мотив запуска тестовых сценариев искры в тестовой среде из какого-то удаленного кластера?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...