#jawsug Elastic MapReduceを使う前にやっとくと幸せになるかもしれない設定

Elastic MapReduceを使ってると何でもかんでもS3にアップロードさせられるので、いちいちManagementConsoleからアップロードするのは結構面倒です。ローカルにHadoopをインストールして、$HADOOP_HOME/conf/core-site.xmlに以下の設定を追加すると、HDFSのバックエンドにS3を使うことができて便利ですよ。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>fs.s3n.awsAccessKeyId</name>
        <value>[AWS_ACCESSKEY_ID]</value>
    </property>

    <property>
        <name>fs.s3n.awsSecretAccessKey</name>
        <value>[AWS_SECRET_ACCESSKEY]</value>
    </property>
</configuration>
使い方
$ # S3にファイルを置く場合
$ hadoop fs -put <S3に置きたいファイル> s3n://<バケット名>/<ファイルを置きたい場所>
$ # S3のファイルの内容を表示したい場合
$ hadoop fs -cat s3n://<バケット名>/<表示したいファイル>

具体的にはこんな感じで使えます。

$ # S3に置くファイルはこんな感じ
$ cat hogehoge.txt
hello
elastic
mapreduce
$ # 実際にS3に置いて内容を表示してみる
$ hadoop fs -put hogehoge.txt s3n://yourbucket/any/prefix/of/hogehoge.txt
$ hadoop fs -cat s3n://yourbucket/any/prefix/of/hogehoge.txt
hello
elastic
mapreduce

Hadoop界隈の人も、慣れ親しんだhadoopのコマンドが使えるので親和性が高いのでは無いでしょうか。