EMRを使うとき、以下の点が不便だと感じたので、設定しました。
- スレーブにSSHできない
- しばらくプロンプトをほうっておくとタイムアウトしてしまう
- YARNのResource ManagerなどのWebUIのためのポートフォワード用に別でsshを実行するのが面倒
- 毎回ssh -i keypair.pem ・・・ hadoop@***のようにキーペアとユーザを指定するのが面倒
以下のようにSSHの設定を行いました。
SSHエージェントの登録
localhost$ ssh-add ~/.ssh/keypair.pem
SSHconfigの設定
localhost$ touch ~/.ssh/config
localhost$ chmod 644 ~/.ssh/config
~/.ssh/configの中に以下の内容を記述する
ServerAliveInterval 300
TCPKeepAlive yes
Host *.compute.amazonaws.com
IdentityFile ~/.ssh/keypair.pem
User hadoop
DynamicForward 8157
ForwardAgent yes
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
設定後は、以下でEMRへ接続できる。
マスターノードへの接続
localhost$ ssh ec2-XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com
マスターノードからスレーブノード(コアノード)へのSSHアクセス
emr-master$ hadoop dfsadmin -report |grep ^Name |cut -f2 -d: |cut -f2 -d' '
10.187.XX.XX <- slaveのIPアドレス
10.167.YY.YY
emr-master$ ssh hadoop@10.187.XX.XX
皆さんのEMRのインテグレーションが楽になりますように\(^o^)/