2017-01-21 1 views
0

Мы искровые задания выполняются на dataproc кластере с пряжей - у нас также есть программа-оболочка в питона, которая делает постоянный опрос для статуса задания, и мы проводим мониторинг состояния рабочих мест из пряжи - как показано в следующем:статус пряжи от клиента dataproc - почему он всегда является объектом списка?

dataproc = discovery.build('dataproc', 'v1', credentials=credentials) 
job_id = '8873a82c-6201-48d4-8ad3-d8f236ef9c49' 
projectId='dev-111111' 
REGION = 'global' 

result = dataproc.projects().regions().jobs().get(projectId=projectId,region=REGION,jobId=job_id).execute() 

print result['yarnApplications'][0]['state'] 

Как предложил документ Google dataproc в here

«результат» выше, представляет собой объект JSON и внутри объекта JSON есть поле, называемое «yarnApplications», который является объектом список которых первый и единственный элемент содержит состояние задания, нас интересует.

Вопрос i s - почему этот объект «yarnApplications» всегда является объектом списка, даже если у нас есть только одна работа с пряжей? Мы видели ситуации, когда пряжа предпринимает несколько попыток запуска задания - будет ли поле «yarnApplications» содержать несколько элементов в этой ситуации?

Кроме того, гарантировано ли, что - если у нас есть только одна работа, работающая на пряжу, объект списка "yarnApplications" будет содержать только один элемент?

Мы понимаем, что это только бета-версия для клиента dataproc, но поскольку у нас есть производственная система, работающая на нем, так что я бы оценил любые предложения и предложения.

Благодаря

ответ

1

согласно Dataproc API job definition, работа содержит «коллекцию» из YarnApplications, и в целом это определение не может изменить его тип на основе содержимого во время выполнения. Например, интерфейс Java для Job.getYarnApplications()returns a java.util.List, независимо от того, имеет ли только список один элемент или ноль или многие.

Это определение API предназначено для размещения различных типов заданий, которые могут подавать несколько приложений YARN на каждое задание, например, Hive или Pig. В некоторых случаях jarfiles Hadoop также отправляют несколько заданий, например, если программа драйвера является программой Apache Crunch или вы запускаете Gridmix.

Вам действительно гарантировано, что если у вас есть только одно задание, выполняемое в YARN, то объект списка будет содержать только один элемент; приложения YARN в списке - это только те, которые созданы данным вызовом Job. Даже если вы запускаете несколько заданий Dataproc одновременно, каждый из которых отправляет разные одновременные приложения YARN, каждое задание будет содержать только определенное приложение (я) YARN, которое было представлено самим.

+0

Большое спасибо Деннису, оцените ваш комментарий. Один вопрос - вы упомянули, что «вам действительно гарантировано, что если у вас есть только одна работа, работающая в YARN ...» - это из документации где-нибудь или ваших наблюдений? Если это из документации, вы не разделяете ее, пожалуйста? Еще раз спасибо! –

+0

В ситуации, которую вы описали, где «пряжа делает несколько попыток», в YARN, которая остается под одним идентификатором приложения YARN, и в нем перечислены множественные попытки; «нити-приложения -list -appStates ALL» все равно будут возвращать только один идентификатор приложения для всех попыток. Поэтому Dataproc не обещает ничего особенного в том, чтобы всплывать только одно приложение YARN, когда работает только одно приложение; скорее, Dataproc отслеживает приложения YARN, используя теги jobid. Если сама программа драйвера повторяет выпуск приложений YARN, тогда Dataproc действительно отобразит несколько приложений в задании. –

+0

Документация на данный момент находится только внутри [Определение ресурса работы] (https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs#resource-job), но не углубляться о том, как повторы могут влиять на количество приложений YARN, перечисленных внутри задания; это поведение может различаться между разными двигателями.В конце концов, список приложений YARN компании Dataproc будет содержать аналогичное содержимое, как и «список приложений-пряди» в кластере, но отфильтрован по заданию, которое породило приложение (приложения). –