Мы искровые задания выполняются на 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, но поскольку у нас есть производственная система, работающая на нем, так что я бы оценил любые предложения и предложения.
Благодаря
Большое спасибо Деннису, оцените ваш комментарий. Один вопрос - вы упомянули, что «вам действительно гарантировано, что если у вас есть только одна работа, работающая в YARN ...» - это из документации где-нибудь или ваших наблюдений? Если это из документации, вы не разделяете ее, пожалуйста? Еще раз спасибо! –
В ситуации, которую вы описали, где «пряжа делает несколько попыток», в YARN, которая остается под одним идентификатором приложения YARN, и в нем перечислены множественные попытки; «нити-приложения -list -appStates ALL» все равно будут возвращать только один идентификатор приложения для всех попыток. Поэтому Dataproc не обещает ничего особенного в том, чтобы всплывать только одно приложение YARN, когда работает только одно приложение; скорее, Dataproc отслеживает приложения YARN, используя теги jobid. Если сама программа драйвера повторяет выпуск приложений YARN, тогда Dataproc действительно отобразит несколько приложений в задании. –
Документация на данный момент находится только внутри [Определение ресурса работы] (https://cloud.google.com/dataproc/docs/reference/rest/v1/projects.regions.jobs#resource-job), но не углубляться о том, как повторы могут влиять на количество приложений YARN, перечисленных внутри задания; это поведение может различаться между разными двигателями.В конце концов, список приложений YARN компании Dataproc будет содержать аналогичное содержимое, как и «список приложений-пряди» в кластере, но отфильтрован по заданию, которое породило приложение (приложения). –