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によるクラスタ起動
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
各種設定ファイル例
[
{
"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"
}
]
[
{
"Name": "Hadoop"
},
{
"Name": "Hive"
},
{
"Name": "Presto-Sandbox"
}
]
{
"SubnetId" : "subnet-xxxxxxxxx",
"KeyName" : "ssh-keyname"
}
[
{
"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の追加
hiveのメタストアを外部で指定していた人は、
hive-site.xmlをブートストラップかStepでゴニョゴニョしてたと思いますが
configurationsで指定することで設定を書き換えてくれます
[
{
"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も選択可能になったよ