Загрузить 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.