キャッシュローカル機能で使用する SSH 認証キー設定
DFS では、キャッシュローカル MapReduce 機能を利用した MapReduce ジョブを実行する場合、Hadoop クラスタの各ノードからファイルキャッシュ情報を取得します。
その際、MapReduce ジョブ実行ユーザによる、ジョブ起動ノードからリモートノードへのリモートコマンド実行(デフォルトでは SSH を使用)により情報を取得するため、あらかじめリモートコマンド実行を可能にしておく必要があります。
キャッシュローカル機能を使用するかどうかは、pdfs.fs.local.cache.location プロパティで設定します。デフォルトは "true"(有効)です。
なお、pdfs.fs.local.cache.location プロパティを "false" (無効)に設定した場合は、以下の作業は不要です。
例
bdppuser1 というユーザで、DFS のマウントディレクトリが /mnt/pdfs の場合
全ノードで共用しているため、DFS をマウントしているいずれかのノードで、以下を bdppuser1 で実行します。
$ cd ~ $ ssh-keygen -t rsa -N "" -f id_hadoop $ echo -n "command=\"/opt/FJSVpdfs/sbin/pdfscachelocal.sh\",no-pty,no-port-forwarding,no-X11-forwarding " > authorized_keys $ cat id_hadoop.pub >> authorized_keys $ hadoop fs -mkdir .pdfs $ hadoop fs -chmod 700 .pdfs $ hadoop fs -moveFromLocal id_hadoop id_hadoop.pub authorized_keys .pdfs/ $ hadoop fs -chmod 600 .pdfs/id_hadoop .pdfs/authorized_keys $ hadoop fs -chmod 644 .pdfs/id_hadoop.pub
上記では、authorized_keys ファイルに以下のようなエントリーが設定されます。
$ hadoop fs -cat .pdfs/authorized_keys "command=/opt/pdfs/sbin/pdfscachelocal.sh",no-pty,no-port-forwarding,no-X11-forwarding ssh-rsa 公開キー bdppuser1@自ノード名
全 Slave ノードおよび開発実行環境サーバでユーザ bdppuser1 のホームディレクトリの .ssh/authorized_keys に反映します。
以下を bdppuser1 で実行します。
$ xargs -ti ssh {} "umask 0077; mkdir -p .ssh; cat /mnt/pdfs/hadoop/user/bdppuser1/.pdfs/authorized_keys >> .ssh/authorized_keys" < /etc/hadoop/slaves $ ssh develop "umask 0077; mkdir -p .ssh; cat /mnt/pdfs/hadoop/user/bdppuser1/.pdfs/authorized_keys >> .ssh/authorized_keys"
以下のようにリモート実行することで確認できます。
$ echo /dummy | ssh -o IdentityFile=/mnt/pdfs/hadoop/user/bdppuser1/.pdfs/id_hadoop -o StrictHostKeyChecking=no -o BatchMode=no 他ノード名 /opt/FJSVpdfs/sbin/pdfscachelocal.sh 2 (*)
(*) 通常は "2" と出力されます。
MapReduceジョブユーザ認証キーの設定
「キャッシュローカル機能で使用する SSH 認証キー設定」を実施した場合は、ここでの作業は不要です。
DFS 独自の MapReduce ジョブユーザ認証において認証キー確認を行うため、あらかじめ認証キーファイルを作成しておく必要があります。ジョブユーザ認証を使用するかどうかは、pdfs-site.xml ファイルの pdfs.security.authorization プロパティで設定します。デフォルトは "false"(無効)です。
なお、pdfs.security.authorization を "false"(無効)に設定した場合は、以下の作業は不要です。
pdfs.security.authorization プロパティについては、「pdfs-site.xmlファイル」を参照してください。
例
bdppuser1 というユーザで、DFS のマウントディレクトリが /mnt/pdfs の場合
全ノードで共用しているため、DFS をマウントしているいずれかのノードで、以下を bdppuser1 で実行します。
$ cd ~ $ cat > id_hadoop 任意のキーワード文字列
ctrl-d $ hadoop fs -mkdir .pdfs $ hadoop fs -chmod 700 .pdfs $ hadoop fs -moveFromLocal id_hadoop .pdfs/ $ hadoop fs -chmod 600 .pdfs/id_hadoop