wey
22
地址这样的格式是对的 “127.0.0.1:9559,127.0.0.1:9560”
meta的域名格式需要spark 2.6.2 以上才支持(最近才fix 了不支持域名形式的问题)
如果是 docker-compose,需要让 spark 运行在 容器网络内,最好用 容器跑 spark 指定相同的容器网络:
这是我的一个例子:
docker run --name spark-master --network nebula-docker-compose_nebula-net \
-h spark-master -e ENABLE_INIT_DAEMON=false -d \
-v nebula-algorithm/:/root \
bde2020/spark-master:2.4.5-hadoop2.7
1 个赞
wey
23
请问 spark 运行在容器网络 nebula-net 么?
可能是无法访问metaclient(spark 客户端读是扫 storage,用途和其他客户端不同-读写都是graphd,spark-connector 读数据需要 metaclient 和 storageclient),因为写路径只需要 graphD、graphclient,而默认不在容器网络里,默认compose的配置下,只有 一个 graphD 外部可以连接
1 个赞
wey
25
,这个应该是关键,不过,看起来不是 Space 找不到,而是 getSpace 方法找不到。
我怀疑是把不是 meta 的 endpoint 填到了 metaD client addess 里,因为不是 metaD,所以这个 thrift RPC function 不存在。
@chenpeng
wey
27
这样不行的,因为只要读数据,spark connector 就需要访问 storaged 和 metad,而且,最棘手的问题在于,storageD 的地址是从 metaD 获取的,不是手动指定的,所以在容器内部按照 compose 默认配置,获取的 地址是 storaged0:9779 这样的,外部的 spark 没法访问
详细信息我在这个视频里有提及。 新手玩转 Nebula vol. 12: 如何在 K8s 部署的集群里连接 Nebula Spark Connector & Nebula.Algorithm_哔哩哔哩_bilibili
方案:
- 不使用 docker ,用 rpm/deb部署neblua
- 修改 compose 配置,让 storage/meta 的地址内外部同时外部可访问
- 把spark 跑在容器里,在一个容器网络(最容易)
1 个赞
system
关闭
28
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。