Как получить доступ к Spark Shell из Kubernetes? - PullRequest
1 голос
/ 13 февраля 2020

Я использовал таблицу управления для развертывания Spark в Кубернетес в GCE. В соответствии с конфигурацией по умолчанию в values.yaml Spark развертывается по пути /opt/spark. Я проверил, что Spark успешно развернут, запустив kubectl --namespace=my-namespace get pods -l "release=spark". Работает 1 мастер и 3 рабочих.

Однако, когда я попытался проверить версию Spark, выполнив spark-submit --version из облачной консоли Google, он вернул -bash: spark-submit: command not found.

Я перешел в каталог /opt, а папка /spark отсутствует. Что я должен сделать, чтобы иметь возможность открыть Терминал оболочки Spark и выполнить команды Spark?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2020

Вы можете проверить, проверив службу

kubectl get services -n <namespace>

, вы можете перенаправить определенную службу и попробовать запустить локально для проверки

kubectl port-forward svc/<service name> <external port>:<internal port or spark running port>

Локально вы можете попробовать запустить искровой терминал, он будет подключен к искровому запуску на экземпляре GCE.

Если вы проверите документ карты рулевого управления, есть также варианты для пользовательского интерфейса, вы также можете сделать то же самое для доступа к пользовательскому интерфейсу через порт. вперед

Доступ через S SH внутри модуля

Kubectl exec -it <spark pod name> -- /bin/bash

Здесь вы можете напрямую запускать команды зажигания. spark-submit --version

Доступ к пользовательскому интерфейсу

Доступ к пользовательскому интерфейсу через переадресацию портов, если вы включили пользовательский интерфейс в таблице управления.

kubectl port-forward svc/<spark service name> <external port>:<internal port or spark running port>

Внешний балансировщик нагрузки

Эта конкретная диаграмма руля также создает External Load balancer, вы также можете получить External IP, используя

Kubectl get svc -n <namespace>

Access Shell

Если хотите подключиться через LB IP и порт

./bin/spark-shell --conf spark.cassandra.connection.host=<Load balancer IP> spark.cassandra-connection.native.port=<Port>

Создание соединения с использованием перенаправления портов

kubectl port-forward svc/<spark service name> <external(local) port>:<internal port or spark running port>

./bin/spark-shell --conf spark.cassandra.connection.host=localhost spark.cassandra-connection.native.port=<local Port>
1 голос
/ 13 февраля 2020

Один из способов - войти в pod, а затем запустить команды Spark

  1. Список модулей kubectl --namespace=my-namespace get pods -l "release=spark"

  2. Теперь войдите в pod, используя следующую команду: kubectl exec -it <pod-id> /bin/bash

  3. Теперь вы должны находиться внутри модуля и можете запускать команды зажигания spark-submit --version

Ref: https://kubernetes.io/docs/tasks/debug-application-cluster/get-shell-running-container/#getting -a-shell-to-a-container

Надеюсь, это поможет.

...