CloudFormation で EMR クラスター(EMR リリース 5.18.0以降)作成時に Presto の S3 Select Pushdown を有効化する方法をメモ。
AWSTemplateFormatVersion: '2010-09-09' Description: Stack to create EMR Cluster. Parameters: InstanceType: Type: String (中略) Resources: cluster: Type: AWS::EMR::Cluster Properties: Configurations: - Classification: presto-connector-hive ConfigurationProperties: hive.s3select-pushdown.enabled: true hive.s3select-pushdown.max-connections: 500
EMR クラスター作成後にマスターノードに ssh でログインして設定を確認してみる。
$ cat /etc/presto/conf/catalog/hive.properties (中略) hive.s3select-pushdown.max-connections = 500 hive.s3select-pushdown.enabled = true
参考
EMR リリース 5.18.0 では、S3 Select を Hive および Presto と共にお使いいただけます。S3 Select では、アプリケーションは Amazon S3 に保存されたオブジェクトに含まれるデータのサブセットのみを取得できます。これにより、Hive および Presto のクエリ実行時に EMR クラスターに転送してプロセスされる必要のあるデータ量が減るため、パフォーマンスが向上します。これらの機能の詳細については、S3 Select with Hive および S3 Select with Presto のページをご覧ください。
Amazon EMR リリース 5.18.0 にて、Flink 1.6.0、Zeppelin 0.8.0、S3 Select と Hive および Presto の併用をサポート
Enabling S3 Select Pushdown With Presto
To enable S3 Select Pushdown for Presto on Amazon EMR, use the presto-connector-hive configuration classification to set hive.s3select-pushdown.enabled to true as shown in the example below. For more information, see Configuring Applications. The hive.s3select-pushdown.max-connections value must also be set. For most applications, the default setting of 500 should be adequate. For more information, see Understanding and tuning hive.s3select-pushdown.max-connections below.[ { "classification": "presto-connector-hive", "properties": { "hive.s3select-pushdown.enabled": "true", "hive.s3select-pushdown.max-connections": "500" } } ]Understanding and tuning hive.s3select-pushdown.max-connections
By default, Presto uses EMRFS as its file system. The setting fs.s3.maxConnections in the emrfs-site configuration classification specifies the maximum allowable client connections to Amazon S3 through EMRFS for Presto. By default, this is 500. S3 Select Pushdown bypasses EMRFS when accessing Amazon S3 for predicate operations. In this case, the value of hive.s3select-pushdown.max-connections determines the maximum number of client connections allowed for those operations from worker nodes. However, any requests to Amazon S3 that Presto initiates that are not pushed down—for example, GET operations—continue to be governed by the value of fs.s3.maxConnections.If your application experiences the error "Timeout waiting for connection from pool," increase the value of both hive.s3select-pushdown.max-connections and fs.s3.maxConnections.
Using S3 Select Pushdown with Presto to Improve Performance - Amazon EMR
Configurations は、AWS::EMR::Cluster リソースのプロパティで、Amazon EMR (Amazon EMR) クラスターのソフトウェア設定を指定します。設定の例については、Amazon EMR Release Guide の「Configuring Applications」を参照してください。
構文{ "Classification" : String, "ConfigurationProperties" : { 文字列: 文字列, ... }, "Configurations" : [ Configuration, ... ] }Classification: String ConfigurationProperties: 文字列: 文字列 Configurations: - ConfigurationAmazon EMR クラスターの設定 - AWS CloudFormation