Size: a a a

2019 December 07

ЕГ

Евгений Глотов in Data Engineers
Тут скорее в локальном параллелизме скрыта проблема, чем в спарковском, мне кажется
источник

ЕГ

Евгений Глотов in Data Engineers
Когда ещё не было стримов в джаве, занимался чем-то похожим, вроде всё было ровненько, как запрашивал
источник

R

Roman in Data Engineers
Евгений Глотов
Ещё есть у тредпулэкзекутора (который, если я ничего не путаю, скрыт под параллел стримами) параметр максимальной параллельности, может он по умолчанию равен числу ядер + 1
Тоже думал об этом. Создал в итоге параллелстрим в отдельном форк джоине, где явно задаю уровень параллелизма, равным 10.
источник

ЕГ

Евгений Глотов in Data Engineers
Roman
Тоже думал об этом. Создал в итоге параллелстрим в отдельном форк джоине, где явно задаю уровень параллелизма, равным 10.
Не помогло?
источник

R

Roman in Data Engineers
Евгений Глотов
Не помогло?
Ноуп. К сожалению, нет.
источник

ЕГ

Евгений Глотов in Data Engineers
Эх
источник

ЕГ

Евгений Глотов in Data Engineers
Больше идей нет, к сожалению)
источник

R

Roman in Data Engineers
Roman
Коллеги спарководоведы, нужен ваш совет:

Пытаюсь запустить параллельно чтение, трансформации и запись из 10 источников в рамках одной спарк сессии. Т.е. на драйвере подготавливаю мапу, где ключ это дата, а значение - это лист с путями а s3. Далее из мапы беру энтрисет из него делаю параллельный стрим. В этом стриме для каждой энтри я запускаю чтение из источника, трансформации и запись в приёмник.

Я ожидал, что в спарк ui я увижу 10 активных джобов, но на деле я вижу тоько 5. Т.е. Одновременно тоько 5 источников. На каждый источник по 20 оьраьотчиков. обрабатываются. Почему так? Есть ли какое - то ограничение на количество одновременно активных джобов?

Spark 2.4.3 emr 5.25.
На yarn Cluster.
Пишу на Java(но это вообще не должно влиять).

Ещё один вопросик - почему ярн может не выдавать доп ядра драйверу? Я выставлю --driver-core 4. В спарк ui, во вкладке Environment я вижу, что он подтянул этот конфиг, но в yarn resource Manager я вижу, что количество контейнеров равно количеству ядер, значит и у драйвера и экзекьютеров по 1 му ядра.

P.s. Сорян за опечатки, пишу с телефона, пальцы жирные.
Запустил на 500 источниках. В параллель стали обрабатываться  больше 5 источников. Упёрся в ресурсы кластера. При этом ничего не менял. Короче все заработало, как я и хотел.
источник

M

Mi in Data Engineers
Roman
Запустил на 500 источниках. В параллель стали обрабатываться  больше 5 источников. Упёрся в ресурсы кластера. При этом ничего не менял. Короче все заработало, как я и хотел.
А решили как-нибудь проблему с 1 ядро на 1 контейнер? Недавно просто похожим вопросом задавался
источник

R

Roman in Data Engineers
Mi
А решили как-нибудь проблему с 1 ядро на 1 контейнер? Недавно просто похожим вопросом задавался
Нет. Не получилось. Перепробовал несколько вариантов - без успешно.
Проверял конфиги ярна - вроде бы все норм.
При этом я точно знаю, что это можно сделать, потому что:
1) на более старых версиях спарка(но не в emr) я так делал
2) так в документации написано)

Есть подозрение, что дело в emr. Так как страничка с executors  в spark ui не открывается)
Если что использую emr 5.25.

А вы в emr видели подобную ошибку?
источник

R

Roman in Data Engineers
Тут писали ребята, что амазаон чета "наулучшали" в спарке в какой - то из последних версий emr. Возможно в этом дело.
источник

M

Mi in Data Engineers
Roman
Нет. Не получилось. Перепробовал несколько вариантов - без успешно.
Проверял конфиги ярна - вроде бы все норм.
При этом я точно знаю, что это можно сделать, потому что:
1) на более старых версиях спарка(но не в emr) я так делал
2) так в документации написано)

Есть подозрение, что дело в emr. Так как страничка с executors  в spark ui не открывается)
Если что использую emr 5.25.

А вы в emr видели подобную ошибку?
Ну executors у меня открывается, да по количеству одновременных тасков видно что что-то да параллелится, возможно просто yarn ui не отображает этого
источник

M

Mi in Data Engineers
Хотя при этом непонятно как ресурсы аллоцируются
источник

M

Mi in Data Engineers
Память считается как и должна, экзекуторов сильно больше чем в теории должно хватать ядер
источник

A

Alex in Data Engineers
А как ярн контейнеры связаны с количеством ядер в них? По идее самих контейнеров будет 1 драйвер + количество экзекуторов
источник

M

Mi in Data Engineers
Может там на самих экзекуторах псевдомногопоточность
источник

A

Alex in Data Engineers
НО на ярн ui обычно показывается attempt а не контейнеры
источник

R

Roman in Data Engineers
Alex
А как ярн контейнеры связаны с количеством ядер в них? По идее самих контейнеров будет 1 драйвер + количество экзекуторов
Ну в одном  контейнере может быть больше одного vcpu.
источник

A

Alex in Data Engineers
Поэтому вы там видите 1
источник

M

Mi in Data Engineers
Alex
А как ярн контейнеры связаны с количеством ядер в них? По идее самих контейнеров будет 1 драйвер + количество экзекуторов
В ярн юае ещё есть количество vcores, которое почему-то всегда втой ситуации равно количеству контейнеров
источник