0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Как известно, запускать Spark в Kubernetes можно уже, начиная с версии 2.3, которая была выпущена в 2018 году. При этом до недавнего времени эта возможность была, скажем так, универсальной. Теперь все изменилось.</p>
1
<p>Как известно, запускать Spark в Kubernetes можно уже, начиная с версии 2.3, которая была выпущена в 2018 году. При этом до недавнего времени эта возможность была, скажем так, универсальной. Теперь все изменилось.</p>
2
<p>Произошло это с выходом версии<strong>Spark 3.1.1</strong>, где эту возможность наконец-то довели до<em>production-ready</em>. Что это значит на практике? Да хотя бы то, что Spark теперь абсолютно готов к запуску в Kubernetes. Сделать это можно двумя способами.</p>
2
<p>Произошло это с выходом версии<strong>Spark 3.1.1</strong>, где эту возможность наконец-то довели до<em>production-ready</em>. Что это значит на практике? Да хотя бы то, что Spark теперь абсолютно готов к запуску в Kubernetes. Сделать это можно двумя способами.</p>
3
<h2>Способ № раз</h2>
3
<h2>Способ № раз</h2>
4
<p>Это<strong>Spark-submit</strong>, он же Spark-Native путь. Применяя spark-submit, вы задаете, как и обычно, все параметры, причем в роли менеджера ресурсов указываете Kubernetes. В результате в момент spark-submit внутри Kuber’а создастся под, причем на нем сначала будет размещен Driver. Потом этот Driver напрямую взаимодействует с API Kubernetes и создает Executor по указанным вами параметрам. При этом сам по себе Kubernetes не будет "знать и понимать", что внутри него функционирует именно Spark, - для Kubernetes это будет всего лишь очередное приложение. Как то так.</p>
4
<p>Это<strong>Spark-submit</strong>, он же Spark-Native путь. Применяя spark-submit, вы задаете, как и обычно, все параметры, причем в роли менеджера ресурсов указываете Kubernetes. В результате в момент spark-submit внутри Kuber’а создастся под, причем на нем сначала будет размещен Driver. Потом этот Driver напрямую взаимодействует с API Kubernetes и создает Executor по указанным вами параметрам. При этом сам по себе Kubernetes не будет "знать и понимать", что внутри него функционирует именно Spark, - для Kubernetes это будет всего лишь очередное приложение. Как то так.</p>
5
<h2>Способ № два</h2>
5
<h2>Способ № два</h2>
6
<p><strong>Kubernetes Operator for Spark</strong>, представляющий собой Kubernetes-Native путь. В данном случае Kubernetes уже "понимает", что внутри функционирует Spark. Мало того, при такой реализации вы получите более удобный доступ: - к логам; - статусу приложения; - текущему состоянию Job.</p>
6
<p><strong>Kubernetes Operator for Spark</strong>, представляющий собой Kubernetes-Native путь. В данном случае Kubernetes уже "понимает", что внутри функционирует Spark. Мало того, при такой реализации вы получите более удобный доступ: - к логам; - статусу приложения; - текущему состоянию Job.</p>
7
<p>Пожалуй, второй способ - это то, что стоит порекомендовать в первую очередь, уж простите за каламбур.</p>
7
<p>Пожалуй, второй способ - это то, что стоит порекомендовать в первую очередь, уж простите за каламбур.</p>
8
<p><em>По материалам https://mcs.mail.ru/blog/.</em></p>
8
<p><em>По материалам https://mcs.mail.ru/blog/.</em></p>
9
9