Amazon Elastic MapReduceの使い方─Hadoopより手軽にはじめる大規模計算

第6回 bootstrapを設定するには

この記事を読むのに必要な時間:およそ 3 分

Amazon Elastic Mapreduce(EMR)では,起動時にHadoopのオプションなどを設定できるbootstrapというものが用意されています。うまく利用すれば,細かくHadoopのチューニングをしたり,Jobが起動する前に前処理を行ったりすることができます。

今回は,Webコンソール,Amazon Elastic MapReduce Ruby Client,Java SDKのそれぞれでbootstrapを設定する方法をご紹介します。

Webコンソールでbootstrapを設定するには

まずWebコンソールを使用して設定する方法を見ていきましょう。Webコンソールからは「Job作成」画面の「BOOTSTRAP ACTIONS」で設定します。この画面で「Configure your Bootstrap Actions」を選択しましょう。図1のような画面になります。

図1 ⁠Configure your Bootstrap Actions」を選択

図1 「Configure your Bootstrap Actions」を選択

まずは,Action Typeでアクションのタイプを設定します。デフォルトとして以下のものが標準で設定されています。

  • Configure Hadoop
  • Configure Daemons
  • Run If
  • Custom Action

「Amazon S3 Location」にbootstrapの実体のS3パスを指定します。⁠Optional Arguments」はbootstapの実体ファイルに渡すパラメータです。

Configure Hadoop

名前のとおり,Hadoopのコンフィグに対して設定するbootstrapです。デフォルトでは以下のようにバッファのI/Oサイズを指定するようになっているのがわかると思います。

io.file.buffer.size=65536

この値は,実際にはHadoop設定ファイルのcore-site.xmlに記述するものです。ここでパラメータとして渡すものは,基本的にHadoopの以下の3つのファイルです。

  • core-site.xml
  • hdfs-site.xml
  • mapred-site.xml

Configure Daemons

これも名前のとおりデーモン(JobTracker/NameNodeなど)に対して設定するbootstrapです。デフォルトでは,以下のようにネームノードに対してガベージコレクション時間とスループット時間の比率を制御するオプションが設定されています。

-XX:GCTimeRatio=19

ここでパラメータとして渡すものはHadoopのhadoop-env.shで指定するものです。

Run If

Hadoop関連に限らず,何かしらの処理を実行したい場合に使用します。デフォルトでは以下のように起動したインスタンスがHadoopのマスターだった場合にその旨を表示するオプションが設定されています。

  • instance.isMaster=true echo Running on master node

デフォルトで設定されている上記3つのスクリプトは,スクリプトファイルとしてRuby,Bashで記述されています。ファイルはS3上に存在するので,ダウンロードして,どういう処理を行っているのか確認してみるのも良いでしょう。

Custom Action

自分でbootstrapのスクリプトを作成した時に選択します。

以上から,⁠Custom Action」を選択し,S3上にチューニング,前処理などを記述したスクリプトファイルを設置しておけば,細かいチューニングがEMRの起動時に行えることがわかると思います。

bootstrapでサポートされているスクリプトは以下の4つです。

  • Ruby
  • Python
  • Perl
  • bash

また,⁠Add another Bootstrap Action」をクリックすることでbootstrapをさらに追加することもできます。

bootstrapを設定してEMRを起動すると,⁠Job詳細」「Bootstrap Actions」タブ図2に設定したbootstrapが表示されます。指定したものがbootstrapとして設定されているか確認してみてください。

図2 ⁠Bootstrap Actions」に設定したbootstrapが表示される

図2 「Bootstrap Actions」に設定したbootstrapが表示される

著者プロフィール

小林隆(こばやしりゅう)

クラウド,Hadoopを使ったMapReduce,NoSQL(主にCassandra)を使った開発を行っている。CassndraのGUIをオープンソースで公開。

bloghttp://beter-max.blogspot.com/

URLhttp://twitter.com/ryu_kobayashi/

コメント

コメントの記入