【问题标题】:Remote access to leaf node when using memsql-spark-connector使用 memsql-spark-connector 时远程访问叶节点
【发布时间】:2017-04-16 23:24:50
【问题描述】:

我正在尝试测试 memsql-spark-connector,为此我在 AWS (https://docs.memsql.com/docs/quick-start-with-amazon-webservices) 上创建了一个单节点 MemSQL 集群。

我想在我的笔记本电脑上以本地模式运行 Spark 应用程序。这个应用程序应该简单地为一个表创建Dataframe 并收集所有行。代码如下:

val conf = new SparkConf()
  .setAppName("Test App")
  .setMaster("local[*]")
  .set("memsql.host", "x.x.x.x")
  .set("memsql.port", "3306")
  .set("memsql.user", "root")
  .set("memsql.password", "1234")
  .set("memsql.defaultDatabase", "dataframes_test")

val sc = new SparkContext(conf)

val memsql = new MemSQLContext(sc)

val df = memsql.table("person")

df.collect().foreach(println(_))

x.x.x.x 是我的 AWS 实例的地址。

问题是虽然我可以从我的笔记本电脑连接到 MemSQL 服务器,memsql-spark-connector 尝试直接访问叶节点(即连接到端口 3307 而不是 3306)。发生这种情况时,我会收到以下错误:

java.sql.SQLException: Access denied for user 'root'@'108.208.196.149' (using password: YES)

root 用户实际上确实拥有所有权限:

memsql> show grants for 'root'@'%';
+--------------------------------------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                                              |
+--------------------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*A49656EC00D74D3524072F3452C1FBA7A1F3B561' WITH GRANT OPTION |
+--------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

是否可以向叶节点授予权限,以便与x.x.x.x:3307 的连接也成功?

我意识到这可能不是它的设计使用方式,但我想这样做只是为了测试。当一切都在一个 JVM 中时,调试起来很方便,我现在不想打扰 Spark 的安装。我可以在本地安装 MemSQL 来解决我的问题,但我无法在 Mac 上执行此操作(对吗,顺便说一句?)。

任何帮助表示赞赏!


更新:刚刚尝试在服务器上本地连接,仍然无法正常工作:

ubuntu@ip-x-x-x-x:~$ memsql -P 3307 -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我提供的密码是正确的,在 AWS 上它是一个实例 ID,所以很难出错。

这意味着即使我在与叶节点相同的实例上拥有 Spark 执行器,它也无法工作。感觉我的设置有问题,但实际上我没有更改任何设置,都是默认设置。

主节点和叶节点是否应该使用相同的凭据?有没有办法为叶子单独设置它们?

【问题讨论】:

    标签: apache-spark singlestore


    【解决方案1】:

    该错误意味着登录被拒绝,即用户名/密码不正确(不是用户没有足够的权限)。确保您在 spark 连接器中使用的密码与所有节点上的密码匹配。

    【讨论】:

    • 确实匹配。我什至无法在本地与memsql -P 3307 -u root -p 连接,提供我在任何地方使用的相同密码(在 AWS 上它是实例 ID,因此很难出错)。主节点和叶节点是否应该使用相同的凭据?
    • 是的,这意味着您尝试使用的用户/密码在该节点上是错误的。请注意,每个节点都有自己独立的凭据,因此在这种情况下,您的主节点和叶节点显然具有不同的密码。
    • 好的,我想通了。叶节点的密码为空。显然,从 AWS Marketplace 安装时,主节点的默认根密码已更改,但叶节点的默认根密码未更改。奇怪,但它就是这样。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多