无法使用 spark-shell 命令连接到 snappydata 存储

Unable to connect to snappydata store with spark-shell command

SnappyData v0.5

我的目标是从我的 SnappyData 安装的 /bin 目录启动 "spark-shell" 并针对我的 SnappyData 存储中的现有表发出 Scala 命令。

我和我的 SnappyData 存储、定位器和潜在客户在同一台​​主机上(是的,它们都是 运行)。

为此,我 运行 根据此处的文档执行此命令:

Connecting to a Cluster with spark-shell

~/snappydata/bin$ spark-shell --master local[*] --conf snappydata.store.locators=10.0.18.66:1527 --conf spark.ui.port=4041

我在尝试为我的商店创建 spark-shell 时遇到此错误:

[TRACE 2016/08/12 15:21:55.183 UTC GFXD:error:FabricServiceAPI tid=0x1] XJ040 error occurred while starting server : java.sql.SQLException(XJ040): Failed to start datab
ase 'snappydata', see the cause for details. java.sql.SQLException(XJ040): Failed to start database 'snappydata', see the cause for details. at com.pivotal.gemfirexd.internal.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:124) at com.pivotal.gemfirexd.internal.impl.jdbc.Util.newEmbedSQLException(Util.java:110) at com.pivotal.gemfirexd.internal.impl.jdbc.Util.newEmbedSQLException(Util.java:136) at com.pivotal.gemfirexd.internal.impl.jdbc.Util.generateCsSQLException(Util.java:245) at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection.bootDatabase(EmbedConnection.java:3380) at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection.(EmbedConnection.java:450) at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection30.(EmbedConnection30.java:94) at com.pivotal.gemfirexd.internal.impl.jdbc.EmbedConnection40.(EmbedConnection40.java:75) at com.pivotal.gemfirexd.internal.jdbc.Driver40.getNewEmbedConnection(Driver40.java:95) at com.pivotal.gemfirexd.internal.jdbc.InternalDriver.connect(InternalDriver.java:351) at com.pivotal.gemfirexd.internal.jdbc.InternalDriver.connect(InternalDriver.java:219) at com.pivotal.gemfirexd.internal.jdbc.InternalDriver.connect(InternalDriver.java:195) at com.pivotal.gemfirexd.internal.jdbc.AutoloadedDriver.connect(AutoloadedDriver.java:141) at com.pivotal.gemfirexd.internal.engine.fabricservice.FabricServiceImpl.startImpl(FabricServiceImpl.java:290) at com.pivotal.gemfirexd.internal.engine.fabricservice.FabricServerImpl.start(FabricServerImpl.java:60) at io.snappydata.impl.ServerImpl.start(ServerImpl.scala:32)

Caused by: com.gemstone.gemfire.GemFireConfigException: Unable to contact a Locator service (timeout=5000ms). Operation either timed out or Locator does not exist. Configured list of locators is "[dev-snappydata-1(null):1527]". at com.gemstone.gemfire.distributed.internal.membership.jgroup.GFJGBasicAdapter.getGemFireConfigException(GFJGBasicAdapter.java:533) at com.gemstone.org.jgroups.protocols.TCPGOSSIP.sendGetMembersRequest(TCPGOSSIP.java:212) at com.gemstone.org.jgroups.protocols.PingSender.run(PingSender.java:82) at java.lang.Thread.run(Thread.java:745)

嗯!我假设您正在从桌面尝试 Spark-shell 并连接到 AWS 中的集群? 不确定这是否会起作用,因为由 spark-shell 启动的本地 JVM 将尝试连接到不太可能起作用的 Snappydata 中的 p2p 集群。

另一方面,

Snappy-shell 仅使用 JDBC 客户端进行连接(因此会起作用)。

而且,无论如何,您不能使用定位器客户端端口 (1527)。参见 here

您可以尝试使用 snappydata.store.locators=10.0.18.66:10334 而不是 1527 作为端口吗?这不太可能奏效,但值得一试。

也许有一种方法可以打开所有端口并访问AWS上的这些节点。不过不推荐用于生产。

我很好奇 engg 团队的其他回复。 在此之前,您可能必须从网络(AWS 节点)内启动 spark-shell。