Загрузить keytab из HDFS

Я хочу использовать Oozie с Java Action, который должен использовать Kerberos. У меня есть мой keytab в HDFS. Как я могу сказать, что файл находится в HDFS?

 Configuration conf = new Configuration();
 conf.set("hadoop.security.authentication", "Kerberos");     
 UserGroupInformation.setConfiguration(conf);
 UserGroupInformation.loginUserFromKeytab(kerberosPrincipal, kerberosKeytab);

Я пытался с пути, как hdfs://xxxx:8020/tmp/myKeytab.keytab и я поставил conf.set("fs.defaultFS", "hdfs://server:8020"); также, но это не работает.

1 ответ

Токены делегирования Hadoop работают только для YARN и HDFS и истекают через 7 дней. Для всех других сервисов - особенно HBase (через ZooKeeper), HiveServer2 (напрямую или через ZooKeeper), Hive Metastore (внутри Hive CLI) - вам необходимо пройти аутентификацию напрямую. Для долго работающих сервисов вам необходимо периодически проходить аутентификацию, чтобы обновить маркер делегирования (если вы используете Slider, он делает это автоматически для вас)

Вариант 1: попросить Оози сгенерировать соответствующий <credential> для вашего действия. Я хотел бы, чтобы это действительно работало из коробки и / или чтобы это было лучше задокументировано - Улей работает как шарм; не так с HBase; Я никогда не пробовал Hive2, поэтому я не уверен.

Вариант 2: попросите Oozie загрузить ваш пользовательский файл keytab из HDFS (вы позаботились об ограничении доступа к этому keytab, не так ли?) В CWD вашего контейнера Launcher с помощью <file> затем создайте свои учетные данные самостоятельно.

С действием Java это будет вариант 2.

Другие вопросы по тегам