Я пытаюсь развернуть искровое приложение в кластеризованный кластер, который контролируется YARN. Версия Spark 1.5.0-cdh5.5.2.«Токенция делегирования может быть выпущена только с кеберосом или веб-аутентификацией» при перезапуске контекста искра после простоя
Я столкнулся с странным исключением, когда останавливал SparkContext после более чем 10 секунд бездействия и инициализации нового.
Я попытался сделать что-то похожее на то, что сделал разработчик this, и явно указал адрес hads namenode, но это не помогло.
Что более сбивает с толку, что все работает нормально, если я вообще не перезагружаю SparkContext или не перезагружаю его менее чем за 10 секунд после того, как последняя команда была выполнена в этом искровом контексте.
Как я могу это исправить?
Здесь минимизировано случай, когда проблема встретилась:
package demo;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
public class App
{
public static void main(String[] args) throws Exception {
SparkConf sparkConf = new SparkConf();
sparkConf.setAppName("demo");
sparkConf.set("spark.yarn.access.namenodes", "hdfs://hdp:8020");
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
int waiting_time = 10;
System.out.println("Waiting time: " + Integer.toString(waiting_time));
Thread.sleep(waiting_time * 1000);
jsc.stop();
jsc = new JavaSparkContext(sparkConf); // "Delegation token ..." exception here
}
}
Стек след, когда возникает исключение:https://gist.github.com/anonymous/18e15010010069b119aa0934d6f42726
искровым подать команду:
spark-submit --principal [email protected] --keytab mp.keytab --master yarn-client --class demo.App demo.jar
похоже, что это исключение не является основной причиной. попробуйте проверить журналы NameNode, чтобы узнать, что является реальной проблемой. – AdamSkywalker
Я провел некоторое расследование и выяснил, что во время построения SparkContext вызывается имяNode.getDelegationToken, даже если токен делегирования уже представлен в списке токенов текущего зарегистрированного пользователя в объекте класса UserGroupInforation , Проблема не возникает, когда время ожидания до создания нового контекста составляет менее 10 секунд, так как соединение rpc с namenode просто не сбрасывается из-за свойства ipc.client.connection.maxidletime. –
Является ли это ошибкой или я не могу использовать SparkContext таким образом? –