LoginSignup
6
6

More than 5 years have passed since last update.

EMRサンドボックス

Amazon EMR Sandbox Applications

いままではPrestoをEMR上にインストールする場合は、
カスタムブートストラップを利用して、Java8をインストールしたり
Prestoのセットアップを行っていました

4.0からEMRサンドボックスが利用できるようになり
カスタムブートストラップを利用しなくてもセットアップできるようになり
さらに簡単にPrestoが触れます

現在3.x系awslabs/emr-bootstrap-actionsはそのまま利用しても動作しなそうです
インストールされるjava8のバージョン起因でエラーが発生すると思います

Setup

起動方法は2通りAwsConsole or AWSCLIのどちらかです
Consoleは直感的ですごくよくわかるのでCLIの方だけ

CLIによるクラスタ起動

AWS CLI Command Reference

start-emr-cluster
EMR_SETUPDIR=/path/to/config # 各設定が記載されたjsonファイル

# 旧クラスタ起動コマンド(例)
aws emr create-cluster \
    --release-label emr-4.2.0 \
    --name emr-presto-cluster \
    --instance-groups file://${EMR_SETUPDIR}/instance-setup.json \
    --use-default-roles \
    --no-auto-terminate \
    --visible-to-all-users \
    --applications      file://${EMR_SETUPDIR}/applications-setup.json \
    --ec2-attributes    file://${EMR_SETUPDIR}/ec2-attributes.json \
    --configurations    file://${EMR_SETUPDIR}/app-config.json

各種設定ファイル例

instance-setup.json
[
    {
        "Name" : "emr-master",
        "InstanceGroupType" : "MASTER",
        "InstanceCount" : 1,
        "InstanceType"  : "m2.xlarge",
        "BidPrice"      : "0.1"
    },
    {
        "Name" : "emr-core",
        "InstanceGroupType" : "CORE",
        "InstanceCount" : 2,
        "InstanceType"  : "m2.4xlarge",
        "BidPrice"      : "0.1"
    }
]
instance-setup.json
[
    {
        "Name": "Hadoop"
    },
    {
        "Name": "Hive"
    },
    {
        "Name": "Presto-Sandbox"
    }
]
ec2-attributes.json
{
    "SubnetId" : "subnet-xxxxxxxxx",
    "KeyName"  : "ssh-keyname"
}
app-config.json
[
  {
    "Classification": "hive-site",
    "Properties": {
        "javax.jdo.option.ConnectionUserName": "username",
        "javax.jdo.option.ConnectionPassword": "password",
        "javax.jdo.option.ConnectionURL"     : "jdbc:mysql://external-metastore/hive_metastore",
    }
  }
]

4.0以前のコマンドと大きな変更が以下の通り

AMIの選択方法の変更

  • 旧: --ami-version x.x.x
  • 新: --release-label emr-x.x.x 4.0以上のAMIの指定はversionじゃなくてrelease-labelで指定します

ApplicationsによるPrestoの選択

instance-setup.json のこの一文でインストールされます

 "Name": "Presto-Sandbox"

インストールされるバージョンは選択したAMIバージョンによって変わります

configurationsの追加

Configuring Applications

hiveのメタストアを外部で指定していた人は、
hive-site.xmlをブートストラップかStepでゴニョゴニョしてたと思いますが
configurationsで指定することで設定を書き換えてくれます

app-config.json
[
  {
    "Classification": "hive-site",
    "Properties": {
        "javax.jdo.option.ConnectionUserName": "user",
        "javax.jdo.option.ConnectionPassword": "password",
        "javax.jdo.option.ConnectionURL"     : "jdbc:mysql://metastore-mysql-host:3306/hive_metastore",
    }
  }
]

AMI3.x と 4.x の違いその他

詳しくはココ -> Differences Introduced in 4.x

まとめ

  • Sandboxのおかげでhive,Pigを選択するようにPrestoも選択可能になったよ
6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6