Отрывок из GitBook "Сводка и Керберос: безумие за воротами" Стивом Лафраном, глава Секреты низкого уровня
Ведение журнала библиотеки JVM
Вы можете включить низкоуровневое ведение журнала Kerberos
-Dsun.security.krb5.debug=true
Это не выходит через Log4J, иливедение журнала java.util;это просто выходит на консоль. Что несколько неудобно - но имейте в виду, что они регистрируются на очень низком уровне системы. И это как минимум лог. Если вы окажетесь на этом уровне, у вас проблемы. Имейте это в виду.
Если вы хотите отлаживать то, что происходит в SPNEGO, другое системное свойство позволяет вам включить это:
-Dsun.security.spnego.debug=true
Вы можете запросить оба из них вHADOOP_OPTS
переменная окружения
export HADOOP_OPTS="-Dsun.security.krb5.debug=true -Dsun.security.spnego.debug=true"
Отладка JAAS на стороне Hadoop
Установите для переменной env HADOOP_JAAS_DEBUG
значение true, и UGI установит флаг "debug" для любого JAASфайлы, которые он создает.
Вы можете сделать это на клиенте, прежде чем вводить команду hadoop, hdfs или yarn, и установить ее в сценарии среды службы YARN, чтобы включить его там.
export HADOOP_JAAS_DEBUG=true
В следующей команде Hadoop вы увидите след типа (.........)
Предостережение: свойства Java, начинающиеся с sun.security.
, применяются к среде выполнения Sun / Oracle Java, а также к среде выполнения OpenJDK и ее вариантам. Но не для IBM Java и т. Д.
Выдержка из документации
Java 8 в
Устранение неполадок безопасности Если вы хотите контролировать безопасный доступ, вы можете установить системное свойство java.security.debug
.
(.......) Разделяйте несколько опций запятыми.
При конкретном устранении неполадок Kerberos я лично использую эту комбинацию:
-Djava.security.debug=gssloginconfig,configfile,configparser,logincontext
Выдержка из Oracle
Замечания к выпуску JDK 9 раздел
инструменты / средство запуска JDK9 поддерживает новую переменную среды JDK_JAVA_OPTIONS
для добавления параметров к параметрам, указанным в командной строке. Новая переменная среды имеет несколько преимуществ по сравнению с устаревшей / неподдерживаемой переменной среды _JAVA_OPTIONS
, включая возможность включения параметров запуска Java (...)
Эти две переменные envочень грязный (и крайне сложный для обнаружения) способ внедрения системных свойств Java без их появления в командной строке.
Что это значит для вас? Что ж, вам нужно искать несколько реквизитов системы Java и переменных среды, которые могут быть установлены
- для переменных env: глобально (ср.
/etc/profile.d/*.sh
) или на уровне аккаунта (ср. ~/.bashrc
и друзья), либо внутри «включаемых файлов» Hadoop, либо непосредственно внутри сценария оболочки, который запускает задание Spark - для системных подпрограмм: в любой переменной shell-or-env, которая впоследствии будет разработана в сценарии оболочки(...) или любой env var, выбранный Java при запуске, или в файлах конфигурации YARN (при использовании Spark-on-YARN) , или непосредственно в командной строке Java
Удачи.
Лично я бы запустил фиктивную работу Spark, которая просто сбрасывает все переменные env и реквизиты системы Java;затем осмотрите дамп, чтобы определить, что искать;затем выполните перебор find ... -exec grep ...
в файловой системе Linux (повторите при необходимости) .