Я пытаюсь проверить memsql-spark-connector, и для этого я создал кластер MemSQL одного узла на AWS (https://docs.memsql.com/docs/quick-start-with-amazon-webservices).Удаленный доступ к листовому узлу при использовании memsql-spark-connector
На моем ноутбуке я хочу запустить приложение искры в локальном режиме. Это приложение должно просто создать 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 [email protected]% |
+--------------------------------------------------------------------------------------------------------------------------------+
| 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?).
Любая помощь оценена!
UPDATE: Просто пытался подключиться локально на сервере и по-прежнему не работает:
[email protected]:~$ memsql -P 3307 -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Password я обеспечиваю правильно, на AWS это экземпляр ID, так что очень трудно сделать ошибку.
Это означает, что это не сработает, даже если бы у меня был исполнитель Spark в том же экземпляре с листовым узлом. Похоже, что что-то не так с моей настройкой, но я фактически не менял никаких настроек, все по умолчанию.
Являются ли узел-хозяин и листовой узел использовать одни и те же учетные данные? Есть ли способ настроить их для листа отдельно?
Он подходит. Я не могу даже локально подключиться к 'memsql -P 3307 -u root -p', предоставляя тот же пароль, который я использую везде (на AWS это идентификатор экземпляра, поэтому очень сложно сделать ошибку). Предполагается ли, что главный узел и листовой узел используют одни и те же учетные данные? –
Да, это означает, что пользователь/пароль, который вы пытаетесь использовать, неверен на этом узле. Обратите внимание, что каждый узел имеет свои собственные независимые учетные данные, поэтому ваш главный и листовой узлы в этом случае, по-видимому, имеют разные пароли. –
ОК, я понял. Пароль для листового узла пуст. По-видимому, при установке с AWS Marketplace пароль root по умолчанию изменяется для главного узла, но не для листового узла. Странно, но это то, что есть. Спасибо за помощь! –