Я использую 64 ГБ ОЗУ и 24-ядерную машину и выделил 32 ГБ для JVM. Я хотел запустить следующие процессы: -
7 Kafka Brokers
3 instance of zookeeper
Elastic Search
Cassandra
Spark
MongoDB
Mysql
Kafka Manager
Node.js
& запуск 4-5 приложений Spark на 5-6 исполнителе по 1 ГБ каждый симуляционно. Работа Spark:
1) 1 Spark job takes data from kafka and inserts into Cassandra
2) 1 Spark job takes data from another kafka topic and inserts into different Cassandra Table.
3) 2 Spark Job takes data from Cassandra, did some processing/analysis and writes data into their respective different cassandra table.
Итак, иногда мое приложение для вставки зависает. Кафка берет около 500 записей в секунду. По прошествии некоторого времени он начинает создавать пакеты в очереди, и ошибок нет, но время обработки на панели управления Spark постепенно увеличивается.
Я использовал TOP для проверки использования ЦП и обнаружил, что есть один процесс «0QrmJB», который использует 1500+% ЦП, а java - 200%.
Какие могут быть проблемы? Я не умею анализировать. Можно ли запускать все эти процессы на одной машине JVM? Спасибо,
Есть 1 процесс «0QrmJB», который занимает 1468% ЦП. есть идеи, что это значит?
Не могли бы вы отредактировать свой вопрос и включить весь вывод?
Да, я сделал.
Можете ли вы скопировать и вставить вывод для первых 5-6 записей?
Вы понимаете, что запуск всех брокеров на одной машине не дает никаких гарантий доступности? Если он выходит из строя, весь кластер отключен. В любом случае, похоже, что для одной машины слишком много процессов.
@MickaelMaison - Да, на самом деле эту архитектуру создал кто-то другой, и я просто разработчик, пишущий искровые задания, и мои задания зависали / зависали, и я не мог выяснить, что идет не так, поэтому хотел узнать, запущено ли слишком много процессов на одиночная машина хороша или нет. Спасибо, что поделились своим мнением.
I was unable to find out whats going wrong so wanted to know if running too many processes on single machine is good or not, с одной стороны, JVM по умолчанию будет использовать все ядра для сборщиков мусора, если вы запускаете кучу конкурирующих процессов Java, они, скорее всего, перегрузят вашу систему простыми сборщиками мусора, если они не настроены.





В качестве первого шага я бы предложил запустить
top, чтобы отслеживать потребление памяти каждым процессом. Теоретически вы запускаете много процессов, интенсивно использующих память (Kafka, Spark, Elastic Search и т. д.), И вам нужно будет либо использовать больше хостов (лучше с точки зрения высокой доступности), либо добавить больше памяти. Но, как я уже сказал, в качестве первого шага просто запуститеtopи посмотрите, как все пойдет.