bash - 如何从 Kubernetes 访问 Spark shell?
问题描述
我使用helm chart在 GCE 中将 Spark 部署到 Kubernetes。根据 values.yaml 中的默认配置,Spark 被部署到 path /opt/spark
。我已经通过运行检查 Spark 是否已成功部署kubectl --namespace=my-namespace get pods -l "release=spark"
。有 1 个 master 和 3 个 worker 在运行。
但是,当我尝试通过spark-submit --version
从 Google 云控制台执行来检查 Spark 版本时,它返回了-bash: spark-submit: command not found
.
我已导航到该/opt
目录,但该/spark
文件夹已丢失。我应该怎么做才能打开 Spark shell 终端并执行 Spark 命令?
解决方案
您可以通过检查服务来验证
kubectl get services -n <namespace>
您可以端口转发特定服务并尝试在本地运行以检查
kubectl port-forward svc/<service name> <external port>:<internal port or spark running port>
在本地,您可以尝试运行 spark 终端,它将连接到在 GCE 实例上运行的 spark。
如果您查看 helm chart 文档,还有 UI 选项,您也可以通过端口转发访问 UI
在 pod 内通过 SSH 访问
Kubectl exec -it <spark pod name> -- /bin/bash
在这里你可以直接运行 spark 命令。spark-submit --version
访问用户界面
如果您在 helm chart 中启用了 UI,则通过端口转发访问 UI。
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>
访问外壳
如果想通过 LB IP & port 连接
./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>
推荐阅读
- lisp - 使用不同搜索的“5-Puzzle”通用 LISP
- python - 使用python识别图像中的白色大圆圈
- python-3.x - 我需要关于 cog_command_error 的帮助
- reactjs - 切换主题的 ReactJs 自定义钩子
- sql - 如何允许 sql athentication 在 asp.net mvc 中运行 ssis 包
- google-app-engine - 与 Google Cloud App Engine 的初始连接缓慢
- python - 如何用装饰器绕过python函数定义?
- python - 我如何在 python 中使用 sllenium 转到谷歌的下一页
- mysql - 子查询上的 MySQL LIKE
- c++ - C++程序,将常规文件转换为十六进制和二进制