続・ものぐさな人の味方・Amazon Elastic MapReduce

ものぐさな人の味方・Amazon Elastic MapReduceの続き。今回はApache Pigを動かす、の巻。各種前提は前回と同じ。

AEMインスタンス起動

$ elastic-mapreduce --create --name PIG --alive --num-instances 4 --instance-type m1.small --log-uri s3://<your bucket here>/logs  --hadoop-version 0.20 --pig-interactive

→Job識別子が返されるのでどこかにコピペしておこう。
※--pig-interactiveオプションをつけると、AEMインスタンス起動後にPigがインストールされる。

AEMインスタンスにログイン

$ elastic-mapreduce --jobflow ジョブ識別子 --ssh

--------------------------------------------------------------------------------

Welcome to Amazon Elastic MapReduce running Hadoop and Debian/Lenny.
 
Hadoop is installed in /home/hadoop. Log files are in /mnt/var/log/hadoop. Check
/mnt/var/log/hadoop/steps for diagnosing step failures.

The Hadoop UI can be accessed via the following commands: 

  JobTracker    lynx http://localhost:9100/
  NameNode      lynx http://localhost:9101/
 
--------------------------------------------------------------------------------
$ 

→これでHadoop環境にはいれた。あとはHadoop本にあることは一通りできる。終わったら--terminateオプションをつけてインスタンスを終了させることを忘れないように。

どうなっているのか?

$ elastic-mapreduce --jobflow <ジョブ識別子> --describe
{
  "JobFlows": [
    {
      "LogUri": "s3n:\/\/bucket\/logs\/",
      "Name": "PIG",
      "BootstrapActions": [],
      "ExecutionStatusDetail": {
        "EndDateTime": 1280444292.0,
        "CreationDateTime": 1280437375.0,
        "LastStateChangeReason": "Terminated by user request",
        "State": "TERMINATED",
        "StartDateTime": 1280437644.0,
        "ReadyDateTime": 1280437644.0
      },
      "Steps": [
        {
          "StepConfig": {
            "ActionOnFailure": "TERMINATE_JOB_FLOW",
            "Name": "Setup Pig",
            "HadoopJarStep": {
              "MainClass": null,
              "Jar": "s3:\/\/us-east-1.elasticmapreduce\/libs\/script-runner\/script-runner.jar",
              "Args": [
                "s3:\/\/us-east-1.elasticmapreduce\/libs\/pig\/pig-script",
                "--base-path",
                "s3:\/\/us-east-1.elasticmapreduce\/libs\/pig\/",
                "--install-pig"
              ],
              "Properties": []
            }
          },
          "ExecutionStatusDetail": {
            "EndDateTime": 1280437671.0,
            "CreationDateTime": 1280437375.0,
            "LastStateChangeReason": null,
            "State": "COMPLETED",
            "StartDateTime": 1280437638.0
          }
        }
      ],
      "JobFlowId": "j-XXYYXXYYXX",
      "Instances": {
        "Ec2KeyName": "key",
        "InstanceCount": 4,
        "Placement": {
          "AvailabilityZone": "us-east-1c"
        },
        "KeepJobFlowAliveWhenNoSteps": true,
        "SlaveInstanceType": "m1.small",
        "MasterInstanceType": "m1.small",
        "MasterPublicDnsName": "ec2-114.compute-1.amazonaws.com",
        "MasterInstanceId": "i-6430e",
        "InstanceGroups": null,
        "HadoopVersion": "0.20"
      }
    }
  ]
}

→終了したAEMインスタンスの起動設定を見ることができる。上のJSON出力の"Steps"配下にある"Setup Pig"という部分だ。これを参考にすれば、Amazonが提供するHadoopインスタンスに好みの環境を追加することができる。運用に必要なモジュールを落とし込んでおく、とかね。