Удаленный доступ к конечному узлу при использовании memsql-spark-connector

Я пытаюсь протестировать https://github.com/memsql/memsql-spark-connector и для этого я создал кластер MemSQL с одним узлом на AWS ( 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 (верно, кстати?).

Любая помощь приветствуется!


ОБНОВЛЕНИЕ: Только что попытался подключиться локально на сервере и все еще не работает:

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 это идентификатор экземпляра, поэтому очень сложно ошибиться.

Это означает, что это не будет работать, даже если бы у меня был Spark executor в одном экземпляре с листовым узлом. Похоже, что-то не так с моей настройкой, но я на самом деле не изменил никаких настроек, все по умолчанию.

Предполагается, что главный узел и конечный узел используют одинаковые учетные данные? Есть ли способ настроить их для листа отдельно?

1 ответ

Эта ошибка означает, что вход в систему был отклонен, то есть неверное имя пользователя / пароль (не то, что у пользователя недостаточно прав). Убедитесь, что пароль, который вы используете в соединителе зажигания, совпадает с паролем на всех узлах.

Другие вопросы по тегам