本文共 2091 字,大约阅读时间需要 6 分钟。
使用k8s搭建spark集群
这几天尝试在k8s中搭建spark集群,踩了一些坑,跟大 家分享一下。
Spark的组件介绍可参考官方文档
大数据生态圈简介可参考这篇文章
基于k8s官方示例
具体参考github k8s
FAQ
镜像拉取问题
该方法需要访问gcr.io下载镜像(国内一般需要vpn),需要注意的是gcr.io/google_containers/spark:1.5.2_v1镜像不能使用index.tenxcloud.com/google_containers/spark替换,替换后拉取镜像时会出现“docker: filesystem layer verification failed”错误。
可将zeppelin-controller.yaml使用的镜像修改为index.tenxcloud.com/google_containers/zeppelin:v0.5.6_v1
webui service使用问题
文档中的kubectl proxy –port=8001指令只能监听127.0.0.1的代理请求,不适用于测试环境和虚拟机环境,因为使用的ip地址不是127.0.0.1。
此时使用kubectl proxy –port=8001 –address=\
pyspark示例运行错误
示例中的数据源存在问题,可使用本地文件运行,例如“sc.textFile(“/opt/spark/licenses/*”).map(lambda s: len(s.split())).sum()”
Zeppelin webui使用问题
同样只能通过localhost或127.0.0.1访问,可以通过将zeppelin service类型配置为NodePort。参考spark-20160427.zip中的zeppelin-service.yaml。
使用方法为:
使用zeppelin-service.yaml创建zeppelin service,可通过spec.ports.nodePort指定端口,不指定时为端口随机。
使用kubectl describe svc zeppelin|grep NodePort指令查看端口。
在浏览器中访问任意节点ip:NodePort访问zeppelin webui。
点击“Create new note”,输入Note Name。
在新页面中执行以下内容:
%pyspark
print sc.textFile("/opt/spark/licenses/*").map(lambda s: len(s.split())).sum()
该示例会统计zeppelin本地/opt/spark/licenses/目录下的所有文件的单词数量,几秒后会看到执行结果。
基于tenxcloud镜像库搭建
需要根据k8s源码中的examples/spark/下的yaml文件搭建,将所有yaml文件复制到工作目录下。
修改spark-master-controller.yaml和spark-worker-controller.yaml:
* spec.template.spec.containers.command均修改为“/start.sh”
* spec.template.spec.containers.images分别修改为index.tenxcloud.com/google_containers/spark-master:1.5.2_v1和index.tenxcloud.com/google_containers/spark-worker:1.5.2_v1
zeppelin-controller.yaml使用的镜像修改为index.tenxcloud.com/google_containers/zeppelin:v0.5.6_v1
修改完成后,按k8s官方示例的步骤启动即可。
简易的spark-driver
由于zeppelin镜像非常大,拉取会消耗很多时间。可以使用下面的spark-driver.yaml创建一个简易的spark-driver:
kind: ReplicationController
apiVersion: v1
metadata:
name: spark-driver
spec:
replicas: 1
selector:
component: spark-driver
template:
metadata:
labels:
component: spark-driver
spec:
containers:
- name: spark-driver
image: index.tenxcloud.com/google_containers/spark-driver:1.5.2_v1
resources:
requests:
cpu: 100m
创建后,使用kubectl exec <spark-driver-podname> -it pyspark即可访问。
本文转自CSDN-
转载地址:http://dcosl.baihongyu.com/