ablog

不器用で落着きのない技術者のメモ

CloudFormation で EMR クラスター作成時に Presto の S3 Select Pushdown を有効化する

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:
  - Configuration
Amazon EMR クラスターの設定 - AWS CloudFormation