2016-12-02 7 views
0

Я пытаюсь проверить 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 в том же экземпляре с листовым узлом. Похоже, что что-то не так с моей настройкой, но я фактически не менял никаких настроек, все по умолчанию.

Являются ли узел-хозяин и листовой узел использовать одни и те же учетные данные? Есть ли способ настроить их для листа отдельно?

ответ

0

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

+0

Он подходит. Я не могу даже локально подключиться к 'memsql -P 3307 -u root -p', предоставляя тот же пароль, который я использую везде (на AWS это идентификатор экземпляра, поэтому очень сложно сделать ошибку). Предполагается ли, что главный узел и листовой узел используют одни и те же учетные данные? –

+1

Да, это означает, что пользователь/пароль, который вы пытаетесь использовать, неверен на этом узле. Обратите внимание, что каждый узел имеет свои собственные независимые учетные данные, поэтому ваш главный и листовой узлы в этом случае, по-видимому, имеют разные пароли. –

+0

ОК, я понял. Пароль для листового узла пуст. По-видимому, при установке с AWS Marketplace пароль root по умолчанию изменяется для главного узла, но не для листового узла. Странно, но это то, что есть. Спасибо за помощь! –