Считайте стандартный вывод из драйвераLogUrl через API пакетного режима livy - PullRequest
2 голосов
/ 08 января 2020

У Livy есть конечная точка пакетного журнала: GET /batches/{batchId}/log, указано в Как извлекать журналы клиента заданий Spark, отправленные с использованием Apache POST-метод Livy с использованием AirFlow

Я могу сказать, что эти журналы являются журналами livy и не журналами драйвера зажигания . У меня есть оператор print в задании pyspark, который печатает в стандартный вывод журнала драйверов.

Я могу найти URL-адрес журнала драйвера через конечную точку описания пакета https://livy.incubator.apache.org/docs/latest/rest-api.html#batch: перейдя по URL-адресу json response['appInfo']['driverLogUrl'] и щелкнув по журналам

* json URL-адрес ответа выглядит следующим образом: http://ip-some-ip.emr.masternode:8042/node/containerlogs/container_1578061839438_0019_01_000001/livy/, и я могу перейти на страницу html с добавленным листом URL: stdout/?start=-4096, чтобы просмотреть журналы ...

На самом деле, я могу получить только Страница HTML стандартного вывода: существует ли в этом менеджере ресурсов yarn/emr/hadoop версия, аналогичная API JSON этого стандартного вывода (и, предпочтительно, также stderr)? В противном случае может livy каким-либо образом получить эти журналы драйверов ?

Или это проблема, потому что я использую режим cluster вместо client. Когда я пытаюсь использовать режим client, я не могу использовать python3 и PYSPARK_PYTHON, что может быть связано с другим вопросом, но если я могу получить стандартный вывод драйвера, используя другой deployMode, тогда это тоже будет работать.

Если это имеет значение, я запускаю кластер с EMR

1 Ответ

0 голосов
/ 10 января 2020

Вы можете получить все журналы, включая stdout, stderr и диагностику пряжи, по GET /batches/{batchId}. (как вы можете видеть в конечной точке пакетного журнала)

Вот примеры кода:

# self.job is batch object returned by `POST /batches`
job_response = requests.get(self.job, headers=self.headers).json()
self.job_status = job_response['state']

print(f"Job status: {self.job_status}")

for log in job_response['log']:
    print(log)

Печатные журналы похожи на это (обратите внимание, что это журналы заданий Spark, а не livy журналы):

20/01/10 05:28:57 INFO Client: Application report for application_1578623516978_0024 (state: ACCEPTED)
20/01/10 05:28:58 INFO Client: Application report for application_1578623516978_0024 (state: ACCEPTED)
20/01/10 05:28:59 INFO Client: Application report for application_1578623516978_0024 (state: RUNNING)
20/01/10 05:28:59 INFO Client: 
     client token: N/A
     diagnostics: N/A
     ApplicationMaster host: 10.2.100.6
     ApplicationMaster RPC port: -1
     queue: default
     start time: 1578634135032
     final status: UNDEFINED
     tracking URL: http://ip-10-2-100-176.ap-northeast-2.compute.internal:20888/proxy/application_1578623516978_0024/
     user: livy
20/01/10 05:28:59 INFO YarnClientSchedulerBackend: Application application_1578623516978_0024 has started running.
20/01/10 05:28:59 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 38087.
20/01/10 05:28:59 INFO NettyBlockTransferService: Server created on ip-10-2-100-176.ap-northeast-2.compute.internal:38087
20/01/10 05:28:59 INFO BlockManager: Using org.apache.spark.storage.RandomBlockReplicationPolicy for block replication policy
20/01/10 05:28:59 INFO BlockManagerMaster: Registering BlockManager BlockManagerId(driver, ip-10-2-100-176.ap-northeast-2.compute.internal, 38087, None)
20/01/10 05:28:59 INFO BlockManagerMasterEndpoint: Registering block manager ip-10-2-100-176.ap-northeast-2.compute.internal:38087 with 5.4 GB RAM, BlockManagerId(driver, ip-10-2-100-176.ap-northeast-2.compute.internal, 38087, None)
20/01/10 05:28:59 INFO BlockManagerMaster: Registered BlockManager BlockManagerId(driver, ip-10-2-100-176.ap-northeast-2.compute.internal, 38087, None)
20/01/10 05:28:59 INFO BlockManager: external shuffle service port = 7337
20/01/10 05:28:59 INFO BlockManager: Initialized BlockManager: BlockManagerId(driver, ip-10-2-100-176.ap-northeast-2.compute.internal, 38087, None)
20/01/10 05:28:59 INFO YarnClientSchedulerBackend: Add WebUI Filter. org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter, Map(PROXY_HOSTS -> ip-10-2-100-176.ap-northeast-2.compute.internal, PROXY_URI_BASES -> http://ip-10-2-100-176.ap-northeast-2.compute.internal:20888/proxy/application_1578623516978_0024), /proxy/application_1578623516978_0024
20/01/10 05:28:59 INFO JettyUtils: Adding filter org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter to /jobs, /jobs/json, /jobs/job, /jobs/job/json, /stages, /stages/json, /stages/stage, /stages/stage/json, /stages/pool, /stages/pool/json, /storage, /storage/json, /storage/rdd, /storage/rdd/json, /environment, /environment/json, /executors, /executors/json, /executors/threadDump, /executors/threadDump/json, /static, /, /api, /jobs/job/kill, /stages/stage/kill.
20/01/10 05:28:59 INFO JettyUtils: Adding filter org.apache.hadoop.yarn.server.webproxy.amfilter.AmIpFilter to /metrics/json.
20/01/10 05:28:59 INFO YarnSchedulerBackend$YarnSchedulerEndpoint: ApplicationMaster registered as NettyRpcEndpointRef(spark-client://YarnAM)
20/01/10 05:28:59 INFO EventLoggingListener: Logging events to hdfs:/var/log/spark/apps/application_1578623516978_0024
20/01/10 05:28:59 INFO YarnClientSchedulerBackend: SchedulerBackend is ready for scheduling beginning after reached minRegisteredResourcesRatio: 0.0
20/01/10 05:28:59 INFO SharedState: loading hive config file: file:/etc/spark/conf.dist/hive-site.xml
...

Пожалуйста, проверьте Ливийские документы для REST API для получения дополнительной информации.

...