2016-12-02 13 views
0

memsql-火花コネクタを使用したとき、私は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はリーフノードに直接アクセスしようとします(つまり、3306の代わりにポート3307に接続します)。そして、これは私が次のエラーを取得する起こる:

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) 

パスワードは、インスタンスIDですAWS上で、正しいですので、非常に間違いをするのは難しい。

これは、私がリーフノードと同じインスタンス上でexecutorをスパークしていた場合でも、動作しないことを意味します。何かのような気分は私のセットアップに間違っていますが、実際には設定を変更していない、すべてデフォルトです。

は、マスターノードとリーフノードは、同じ資格情報を使用することになっていますか?別に葉のためにそれらを設定する方法はありますか?

答えて

0

というエラーがログインが拒否されたことを意味し、すなわち、不正なユーザ名/パスワード(ユーザーが十分な権限を持っていないではないということ)。スパークコネクタで使用しているパスワードがすべてのノードのパスワードと一致することを確認します。

+0

これは一致します。ローカルで 'memsql -P 3307 -u root -p'と接続することもできません。私はどこでも使用しているのと同じパスワードを提供しています(AWSではインスタンスIDなので、間違いを作るのは大変です)。マスターノードとリーフノードは同じ資格情報を使用することになっていますか? –

+1

これは、使用しようとしているユーザー/パスワードがそのノードで間違っていることを意味します。各ノードにはそれぞれ独立した資格がありますので、マスターノードとリーフノードには明らかに異なるパスワードが設定されています。 –

+0

OK、私はそれを理解しました。リーフノードのパスワードは空です。 AWS Marketplaceからインストールすると、デフォルトのルートパスワードはマスターノードでは変更されますが、リーフノードでは変更されません。不思議ですが、それはそれです。手伝ってくれてありがとう! –

関連する問題