Flink на ПРЯЖАХ (ниже): часто задаваемые вопросы и устранение идею

Автор: Ян Тао (риск далеко)

Автономное развертывание и поддержка независимой Flink ПРЯЖА, Kubernetes, Mesos и другие модели развертывания кластера, где применение ПРЯЖА кластерная модель развертывания в Китае становится все более и более широко. Flink Flink на ПРЯЖИ сообщества запустит интерпретацию приложений из серии статей, разделенная на верхний и нижние два. Часть модели планирования совместно используемый ресурс на основе реконструированы FLIP-6 Введение Флинка по применению ПРЯЖИ, чтобы начать весь процесс, этот документ будет основываться на обратной связи сообщества толпы, клиента и FLiNK Кластер ответить на часто задаваемые вопросы, обмениваться идеями, связанные с устранения неполадок.

Клиент часто задаваемые вопросы и советы по устранению неполадок

▼ Информация исключение поданная заявка консоли: Не удалось создать программу из JAR-файла.

Смешение вопроса о крупных, зачастую вызвано не указать файл JAR работает проблему, но исключение возникает во время субмита, необходимости дальнейшего исследования на основе данных журнала. Наиболее распространенной причиной этого является не полагаться на JAR файл Hadoop в CLASSPATH, не могут найти зависимые классы (например: ClassNotFoundException: org.apache.hadoop.yarn.exceptions.YarnException) вызывает клиент нагрузки начального класса (FlinkYarnSessionCli) не удалось.

** ▼ Flink о том , как подавать заявки , когда ПРЯЖА ПРЯЖА связаны с конкретным кластером?
**

Flink на ПРЯЖИ клиентов, как правило, необходимо настроить HADOOP_CONF_DIR и HADOOP_CLASSPATH переменных две сред, чтобы клиент может быть загружен в конфигурации и зависимости файл JAR Hadoop. Примеры (существующего Hadoop среда развертывания переменная HADOOP_HOME указанного каталога):

export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HADOOP_CLASSPATH=`${HADOOP_HOME}/bin/hadoop classpath`

▼ Клиентский журнал, где, как настроить?

Клиентские журналы обычно лог файлов Flink в папке каталога развертывания: $ {FLINK_HOME} / Журнал / Flink - $ {USER} -client-.log, с использованием конфигурации log4j: $ {} FLINK_HOME /conf/log4j-cli.properties.

Некоторые клиент среда является более сложной, трудно найти расположение журнала и конфигурацию, вы можете настроить следующие переменные среды открытия журнала DEBUG log4j, отслеживание инициализации log4j и детальный процесс загрузки: экспорт JVM_ARGS = «- Dlog4j.debug = истина»

▼ клиент проблемы идеи по устранению неполадок

При входе клиента не может обнаружить должным образом, вы можете изменить файл конфигурации log4j уровня протокола повторно запустить после DEBUG INFO изменилось, чтобы увидеть, если там журналы DEBUG для устранения неполадок. Для некоторых вопросов нет журнала или неполной информации, может потребоваться для выполнения отладки на уровень коды, изменять исходный код для повторной упаковки альтернативного способа слишком громоздок, рекомендуются использовать Java Байтмен инъекции байткода инструмента (Пожалуйста, обратитесь к подробному описанию синтаксиса: Байтмен документ), пример использования:

(1) написать отладчик сценариев, например, как печать Флинка класс Клиент фактически используется, следующий сценарий указывает на то, что печать его значение возвращается, когда функция выходит CliFrontend # getActiveCustomCommandLine;

RULE test
CLASS org.apache.flink.client.cli.CliFrontend
METHOD getActiveCustomCommandLine
AT EXIT
IF TRUE
DO traceln("------->CliFrontend#getActiveCustomCommandLine return: "+$!);
ENDRULE

(2) установки переменных окружения, используя Байтмен javaagent:

export BYTEMAN_HOME=/path/to/byte-home
export TRACE_SCRIPT=/path/to/script
export JVM_ARGS="-javaagent:${BYTEMAN_HOME}/lib/byteman.jar=script:${TRACE_SCRIPT}"

(3) Выполните команду тест бен / Flink запустить -m пряжу-кластер -p 1 ./examples/streaming/WordCount.jar, содержание вывода консоли:

-------> CliFrontend # getActiveCustomCommandLine возвращение: org.apache.flink.yarn.cli.FlinkYarnSessionCli@25ce9dc4

FLiNK кластера часто задаваемые вопросы и устранение неполадок идеи

▼ пользовательского приложения рамка JAR пакетов и конфликты версий

Проблема обычно бросает NoSuchMethodError / ClassNotFoundException / IncompatibleClassChangeError и другие отклонения, чтобы решить эту проблему:

**
1. Сначала нужно полагаться Согласно найти библиотеки классов исключений *, то вы можете выполнить МВНА зависимости в проекте: дерево в виде древовидной структуры , показывая всю цепочку зависимостей, а затем найти конфликт из зависимых библиотек, вы можете также увеличить параметры , которые будут отображаться -Dincludes формат пакета [идентификатор_группы]: [артефакта]: [тип]: [версия], соответствующий сервис, множество разделенных запятыми, например: MVN зависимость: дерево -Dincludes = мощность , javaassist;

2. Найдите пакет необходимо учитывать как пакет ряд конфликтов, простое решение заключается в использовании исключения, чтобы исключить зависимость переходит от своей зависимости над проектом, но некоторые сценарии требуют сосуществования нескольких версий, различных версий различных компонентов в зависимости от него рассмотреть использование Maven Shade плагин, чтобы решить, пожалуйста, обратитесь к Maven Shade плагин.

▼ зависимый библиотека JAR несколько версий о том, как определить конкретный источник, когда определенные типы пакетов сосуществовать?

Существует те же зависимости от многих приложений для запуска нескольких версий пакета JAR CLASSPATH, в результате фактического использования версии с соответствующим порядка загрузки, часто требуется определить источник класса JAR при поиске неисправностей, поддержка Flink к параметрам конфигурации виртуальной машины Java JM / процесса TM, Таким образом, печать может быть загружен с помощью следующих трех классов и их элемента конфигурации источника (.out войти выход), в зависимости от того, какой из можно выбрать:

env.java.opts=-verbose:class   //配置JobManager&TaskManager
env.java.opts.jobmanager=-verbose:class //配置JobManager env.java.opts.taskmanager=-verbose:class //配置TaskManager

Как заполнить журнал просмотра приложения ▼ Flink?

Flink приложения работает JM / журналы TM можно просмотреть на WebUI, но обычно требуется сочетание полного анализа журнала, чтобы взглянуть на проблему при поиске неисправностей, так что вам нужно знать, чтобы сохранить журнал механизм ПРЯЖИ, журнал ПРЯЖА на контейнерном месте, чтобы сохранить состояние приложения с о:

1. Если приложение не закончено, журналы контейнеры будут оставаться на узле , на котором он работает, даже если операция завершена Container все еще можно найти в каталоге , в котором узел конфигурации: $ {yarn.nodemanager.log-каталоги} // , вы также можете получить доступ непосредственно из WebUI: HTTP: /// узел / containerlogs //

2. Если приложение было завершено, и кластер с поддержкой коллекции журнала (yarn.log-агрегация включить = истина), то, как правило, в конце приложения (вы можете также настроить добавочные загрузки) NM Все журналы будут загружены в распределенной памяти (как правило, является HDFS) и удалить локальный файл, мы можем увидеть все приложения из командной журналы по нити пряжи бревен -applicationId -appOwner, вы можете также добавить элемент параметра -containerId -nodeAddress для просмотра журнала контейнера, можно также получить непосредственно распределенный каталог хранения: $ {yarn.nodemanager.remote-приложение лог-реж} / $ {пользователь} / $ {yarn.nodemanager.remote-приложение лог-реж-суффикс} /

▼ FLiNK ресурсов приложения идеи по устранению неполадок распределения

Если приложение не может начать Flink достичь нормального состояния RUNNING, вы можете изолировать его, выполнив следующие действия:

1. Необходимость проверки текущего состояния приложения, в соответствии с описанием процесса запуска, мы знаем:

  • Прогресс в области применения информации сохраняются при NEW_SAVING состояние, если мы будем продолжать в этом состоянии необходимо проверить состояние службы хранения RM (обычно Zookeeper кластер) нормально;
  • Если в отправленном состоянии, это может занять много времени работы происходит внутри замка RM-записи провести некоторые из событий, приводящих к накоплению, в соответствии с необходимостью дальнейшего позиционирования бревна ПРЯЖА кластера;
  • Если состояние будет принято, АМЫ необходимо проверить, является ли нормальным, переходит к шагу 2;
  • Если у вас есть состояние RUNNING, но не все ресурсы, чтобы получить результат в задании не может функционировать должным образом, перейдите к шагу 3;

2. Проверьте AM нормально, вы можете показать интерфейс приложения из ПРЯЖИ ( : HTTP /// Cluster / App / () ПРЯЖА приложение или API REST : /// WS / v1 / Cluster / Apps / HTTP просматривать диагностическую информацию), на основе ключа проблема Причина слова четкой информации и решения:

-. Предел AM ресурсов в очереди превысила из-за до потолка очереди AM имеющихся ресурсов, то есть очереди AM используемых ресурсов и АМ новая сумма ресурсов приложений превышает AM верхний предел очереди ресурсов, вы можете настроить очередь AM CI процент имеющихся ресурсов : yarn.scheduler.capacity..maximum-ам-ресурсы процент.

- предел AM ресурсов пользователя превышена из-за достижения приложение принадлежит пользователю потолка имеющихся ресурсов в AM очереди, то есть приложение принадлежит пользователям используют ресурсы и АМА новой сумма приложения ресурсов за пределами применения принадлежит пользователю в AM очереди в очереди. AM верхнего предел ресурсов, доступных для пользователя может быть соответствующее увеличение доли АМ ресурсов, чтобы решить эту проблему, соответствующие элементы конфигурации: yarn.scheduler.capacity..user-предел-фактор и yarn.scheduler.capacity..minimum-пользователь предел проценты.

- AM контейнер запускается, ожидая AM контейнер Регистрации с РМОМ примерно потому, что был запущен AM, но не завершена внутренняя инициализации, может ZK время ожидания соединения и другие вопросы, конкретные причины, необходимо войти расследование AM, в зависимости от конкретной задачи решить.

-. Приложение Активированный, ожидая ресурсов, которые будут назначены для информации приложения AM AM указывает на проверку прошло, планировщик ждет задания, то планировщик ресурсов проверяет необходимый уровень, переходит к шагу 4.

3. Убедитесь, что приложение имеет неудовлетворенный запрос ресурса НИТИ: Нажмите эту проблему из списка приложений страницы идентификатора приложения для входа на странице приложения, а затем нажмите кнопку Применить экземпляр список идентификаторов ниже, чтобы ввести страницу примеров приложений, чтобы увидеть, если общая сумма невыплаченных ресурсы просят список ресурсов В ожидании Если нет, то описание ПРЯЖА было выделено, процесс проверяет выход, поворот проверить AM, если это так, что планировщик назначен не завершен, переходит к этапу 4;

4. Планировщик выделяет устранение неисправностей, ПРЯЖА-9050 поддерживает REST API или с помощью автоматических диагностических прикладных задач, будет выпущены в Hadoop3.3.0 на WebUI, предыдущая версия следствия остается сделать вручную:

  • Проверьте кластер или ресурс очереди, очереди планировщика оставляет вид дерева страниц расширенной информации Вид ресурса: Эффективное Макс ресурсов, используемых ресурсов: (1) Проверьте кластер, в котором ресурсы или ресурсы или ее материнской очереди, если очередь попавшее ресурсов; (2) Проверьте листья ли подход очереди размер ресурса или достичь верхнего предела;
  • Проверка фрагментации ресурсов: и отношение (1) Используется для проверки ресурса кластера зарезервированных ресурсов и общий объем ресурсов, при приближении полных ресурсов кластера (например, более чем на 90%), может быть мусора распределение ресурсов на скорости приложения медленнее влияют, потому что большинство машин не имеют ресурсов, и машина будет неадекватными ресурсами для достижения резерва, зарезервированные ресурсами после того, как определенное количество ресурсов может привести к большинству машин заблокировано, последующее назначение может замедлить; (2) осмотр распределение Н.М. имеющихся ресурсов, даже если использование ресурса кластера не является высоким, это также может быть из-за различных размерами каждого распределения ресурсов, вызванное, например, ресурсы памяти на узле ближе к 1/2 полным с оставшимися больше ресурсов процессора, 1/2 CPU на узле ресурсы остальных близок с полными ресурсами памяти больше значения ресурсных измерений в ресурсе конфигурации приложения является слишком большим, может также привести к не относится к ресурсам;
  • Проверьте высокоприоритетных приложения частые проблем применения и вопросы немедленного освобождение ресурсов, эта ситуация заставит планировщик занят удовлетворить запросы ресурсов приложения и участие в другие приложения;
  • Проверьте контейнер не удалось запустить или просто начать автоматически разделит случай, вы можете просмотреть контейнер журнала (включая локализацию журнал, журналы запуска и т.д.), ПРЯЖА журнал NM или войти ПРЯЖА расследование RM.

▼ TaskManager启动异常:
org.apache.hadoop.yarn.exceptions.YarnException: Несанкционированный запрос на запуск контейнера. Этот маркер истек. текущее время ... нашел ...

Когда исключение Flink AM запуск приложения просрочен маркер контейнерной ПРЯЖА NM бросить, как правило, потому Flink AM после долгого времени с момента получения этой Container ПРЯЖА RM (более Container действительного времени, по умолчанию 10 минут, Контейнер был освобожден) запустить его, прежде чем идти дальше, потому что внутренний серийный Flink запускается после приема контейнеров ресурсов ПРЯЖИ RM возвращаемых.

Когда большое количество Container будет запущенно и распределенное хранение файлов, такие как HDFS более низкая производительность (до начала конфигурации для загрузки TaskManager) запроса запуска Контейнера легко накапливается внутри, FLiNK-13184 по этому вопросу был оптимизирован, один в начале, прежде чем это повышает эффективность проверок, чтобы избежать бессмысленного процесса загрузки конфигурации, вторым является асинхронной многопоточной оптимизацией, быстрой загрузкой.

▼ FAILOVER异常1:
java.util.concurrent.TimeoutException: запрос выделения Слот тайм - аут для ...

Аномальный является TaskManager применение ресурсов не может быть выделены правильно, вы можете нажать проблему распределения Flink ресурсов приложения устранение неполадок идеи шаг 4 для устранения этой проблемы.

▼ FAILOVER异常2:
java.util.concurrent.TimeoutException: сердцебиению TaskManager с идентификатором истекло.

TaskManager является прямой причиной аномального тайм-аута сердечных сокращений, могут быть другие причины:

  • Процесс завершился, сам по себе может быть ошибка, или под воздействием механизма захватить на ПРЯЖИ RM или NM, нуждается в дальнейшем прослеживается TaskManager войти или ПРЯЖИ РМ журнал / Н.М.;
  • Процесс все еще работает, проблемы кластера сети, вызванные утраченным контактом, время соединения на их собственном выходе, JobManager после исключения отказоустойчивого самовосстановления (повторно использовать ресурсы и начать новую TaskManager);
  • Процесс ГЙ занимает слишком много времени, это может быть утечка памяти или память, вызванная нерациональным распределением ресурсов, необходимость дальнейшего локализовать конкретные причины, основанные на анализе журнала или памяти.

▼ отказоустойчивого异常3:
java.lang.Exception: Контейнер выпущен на потерянном узле

Аномальный Контейнер является узлом, где прогон отмечен ПРЯЖЕЙ кластер утрачивается, все Container на узле будет ПРЯЖА RM высвобождения активного и уведомить AM, JobManager отказоустойчивое получат свое собственное восстановление (повторно применять и начать новые ресурсы после этого исключения TaskManager), левый процесс TaskManager может бросить курить самостоятельно после тайм-аута.

▼ Flink кластерные идеи трудно устранения неисправностей

Во-первых, в соответствии с JobManager / TaskManager позиционировании анализа журнала, полный лог обратитесь к разделу «Как завершить представление приложения журнала Flink», если вы хотите получить информацию DEBUG, вам необходимо изменить настройки log4j JobManager / TaskManager от ($ {FLINK_HOME} /conf/log4j.properties) после повторного пробега для процесса все еще работает, то рекомендуется использовать Java байткод инструмент Байтмен, связанный с проблеск состояния внутренних процессов, подробное описание смотрите: Как я могу установить агент в работающей программу?

справочный материал

Зеленые текстовые шрифты являются частью скачки, подробной справочной информации, см по ссылке ниже:

Байтмен Документы

Maven Plugin Shade

НИТИ-9050

FLiNK-13184

Как я могу установить агент в программу Запуск?

Flink на ПРЯЖИ, по двум статьям Флинка по применению ПРЯЖИ, чтобы начать весь процесс, чтобы разобраться, и клиент, и часто задаваемые вопросы Flink Кластер содержит идеи по устранению неполадок для вашей справки, надежда на практике применения быть в состоянии помочь вам ,


▼ Apache Flink рекомендация сообщества ▼

Apache Flink и больших полей данных главное событие Flink Forward Asia 2019 открыл тяжелую повестку дня Генеральной Ассамблеи возбуждающий на линии, чтобы узнать больше информации Flink Forward Asia 2019, см:

https://developer.aliyun.com/special/ffa2019

Первые Apache FLiNK Geeks вызов супертяжелом открытой, сосредоточив внимание на машинном обучении и оптимизации производительности являются две горячей область, так что вы получите 400000 бонуса добавляются к проблеме, пожалуйста, нажмите:

https://tianchi.aliyun.com/markets/tianchi/flink2019 

 

Автор: Бас жить

Оригинальная ссылка: https://yq.aliyun.com/articles/719703?utm_content=g_1000079636 

Эта статья Yunqi сообщество оригинальное содержание не может быть воспроизведена без разрешения.

рекомендация

отwww.cnblogs.com/bokeyuanxiao/p/11672167.html