使用memsql-spark-connector时远程访问叶节点

时间:2016-12-02 05:49:23

标签: apache-spark memsql

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

在我的笔记本电脑上,我想在本地模式下运行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上这样做(这是对的,BTW?)。

任何帮助表示赞赏!

更新:刚刚尝试在服务器上进行本地连接但仍然无效:

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执行器,它也无法工作。感觉像我的设置有问题,但我实际上没有更改任何设置,都是默认设置。

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

1 个答案:

答案 0 :(得分:0)

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