Хобрук: Ваш путь к мастерству в программировании

Kinit со Spark при подключении к Hive

Я пытаюсь подключиться к Hive (кластер hadoop имеет аутентификацию kerberos) из Spark, который является автономным.

Может ли кто-нибудь дать мне знать, как сделать kinit в программе spark, которую я мог бы подключить к улью?

ОБНОВЛЕНИЕ: мой Spark находится в кластере, отличном от кластера Hadoop.


Ответы:


1

Предполагая, что у вас открыта искровая оболочка, и вы не хотите выходить, а затем повторно кините, вы можете сделать что-то вроде этого:

import java.lang.ProcessBuilder
import java.io.PrintWriter

//resets your kerberos login
val p1 = Runtime.getRuntime.exec("kdestroy")
p1.waitFor
//executes kinit, 
val p = Runtime.getRuntime.exec("kinit")
val stdin = p.getOutputStream
val pw =new PrintWriter(stdin)
//val pwd = get_password() //get_password() is a function to get your password from a file, or wherever
pw.println(pwd) // you could put your password here , but plain text passwords are generally frowned upon
pw.close
p.waitFor
01.05.2017
  • Поскольку Hive использует библиотеку аутентификации Hadoop, вы также можете использовать одну строку Scala: org.apache.hadoop.security.UserGroupInformation.loginUserFromKeytab("[email protected]", "/some/path/to/the.donald.keytab") 02.05.2017
  • То же самое, если Spark находится в кластере Diff? 02.05.2017
  • Весь смысл Kerberos заключается в аутентификации удаленного клиента, поэтому вам нужна конфигурация Kerberos, указывающая на KDC, используемый Hadoop, конфигурация Hadoop, указывающая на кластер, и клиент Hadoop (файлы JAR + собственные библиотеки). Плюс канонические DNS-имена для узлов кластера. При этом вы можете запускать Spark из любого места. В том числе из Windows, но это сложнее из-за отсутствия официальных нативных библиотек. 03.05.2017

  • 2

    вы должны запустить команду kinit перед запуском spark-shell или отправить приложение spark (spark-submit). Другой вариант — получить билет kerberos с помощью keytab и запустить программу spark следующим образом.

    bash -c "kinit -kt /path/to/key/mykey.keytab [email protected]; spark-shell"
    

    С уважением,

    01.05.2017
  • Как мне это сделать, если искра находится на блоке дифференциала. 02.05.2017
  • Новые материалы

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

    Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
    каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

    Как настроить Selenium в проекте Angular
    Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

    Аргументы прогрессивного улучшения почти всегда упускают суть
    В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

    Введение в Джанго Фреймворк
    Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..