Amazon EMR
Amazon EMR 版本指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Presto

使用 Presto 作为大型数据源的快速 SQL 查询引擎。有关更多信息,请参阅 Presto 网站

适用于此版本 Amazon EMR 的 Presto 版本信息

应用程序 Amazon EMR 发行版标签 随此应用程序安装的组件

Presto 0.166

emr-5.4.0

emrfs、emr-goodies、hadoop-client、hadoop-hdfs-datanode、hadoop-hdfs-library、hadoop-hdfs-namenode、hadoop-kms-server、hadoop-yarn-nodemanager、hadoop-yarn-resourcemanager、hive-client、hcatalog-server、mysql-server、presto-coordinator、presto-worker

Amazon EMR 上的 Presto 的限制和已知问题

  • 无法使用配置 API 直接配置特定的 Presto 属性或与 Presto 有关的属性。您可以配置 log.propertiesconfig.properties。但是,无法配置以下属性:

    • node.properties (configurable in Amazon EMR version 5.6.0 and later)

    • jvm.config

    有关这些配置文件的更多信息,请参阅 Presto 文档

  • Presto 未配置为使用 EMRFS。相反,它会使用 PrestoS3FileSystem。

  • 可使用端口 8889 访问 Presto 协调器上的 Presto Web 界面。

将 Presto 与 AWS Glue Data Catalog结合使用

使用 Amazon EMR 发行版 5.10.0 及更高版本,您可以指定 AWS Glue Data Catalog作为 Presto 的默认 Hive 元存储。在使用 AWS Management Console或者使用 AWS CLI 或 Amazon EMR API 的 presto-connector-hive 配置分类创建群集时,可以指定此选项。有关更多信息,请参阅 配置应用程序

使用控制台指定 AWS Glue Data Catalog作为默认 Hive 元存储

  1. Open the Amazon EMR console at https://console.amazonaws.cn/elasticmapreduce/.

  2. Choose Create cluster, Go to advanced options.

  3. Software Configuration 下,选择版本 emr-5.10-0 或更高版本并选择 Presto

  4. 选择 Use for Presto table metadata,选择 Next,然后完成适合您的应用程序的群集的其他设置。

使用 CLI 或 API 指定 AWS Glue Data Catalog作为默认 Hive 元存储

  • hive.metastore.glue.datacatalog.enabled 属性设置为 true,如以下 JSON 示例所示。

    [ { "Classification": "presto-connector-hive", "Properties": { "hive.metastore.glue.datacatalog.enabled": "true" } } ]

(可选) 您可以在主节点上的 /etc/presto/conf/catalog/hive.properties 文件中手动设置 hive.metastore.glue.datacatalog.enabled=true。如果使用此方法,请确保在属性文件中设置了 hive.table-statistics-enabled=false,因为 Data Catalog不支持 Hive 表和分区统计数据。如果您更改长时间运行的群集上的值来切换元存储,则必须重启主节点上的 Presto 服务器 (sudo restart presto-server)。

不受支持的配置、函数和已知问题

下面列出的限制在使用 AWS Glue Data Catalog作为元数据仓时适用:

  • 不支持在 AWS Glue 中重命名表。

  • 不支持包含引号和撇号的分区值,例如 PARTITION (owner="Doe's").

  • 不支持表和分区统计数据

  • 不支持使用 Hive 授权

添加数据库连接器

在集群启动时,您可以使用配置分类添加 JDBC 连接器。有关连接器的更多信息,请参阅 https://prestodb.io/docs/current/connector.html

这些分类命名如下:

  • presto-connector-blackhole

  • presto-connector-cassandra

  • presto-connector-hive

  • presto-connector-jmx

  • presto-connector-kafka

  • presto-connector-localfile

  • presto-connector-mongodb

  • presto-connector-mysql

  • presto-connector-postgresql

  • presto-connector-raptor

  • presto-connector-redis

  • presto-connector-tpch

例 使用 PostgreSQL JDBC 配置集群

要启动已安装和配置 PostgreSQL 连接器的群集,请创建包含以下内容的文件 myConfig.json

[ { "Classification": "presto-connector-postgresql", "Properties": { "connection-url": "jdbc:postgresql://example.net:5432/database", "connection-user": "MYUSER", "connection-password": "MYPASS" }, "Configurations": [] } ]

使用下面的命令创建群集:

aws emr create-cluster --name PrestoConnector --release-label emr-5.4.0 --instance-type m3.xlarge \ --instance-count 2 --applications Name=Hadoop Name=Hive Name=Pig Name=Presto \ --use-default-roles --no-auto-terminate --ec2-attributes KeyName=myKey \ --log-uri s3://my-bucket/logs --enable-debugging \ --configurations file://./myConfig.json

对 Presto 使用 LDAP 身份验证

Amazon EMR 版本 5.5.0 及更高版本支持对 Presto 使用轻型目录访问协议 (LDAP) 身份验证。要使用 LDAP,您必须为 Presto 协调器启用 HTTPS 访问 (在主节点上的 config.properties 中设置 http-server.https.enabled=true)。有关配置详细信息,请参阅 Presto 文档中的 LDAP 身份验证

为节点之间的内部通信启用 SSL/TLS

使用 Amazon EMR 版本 5.6.0 及更高版本,您可以通过使用安全配置以启用传输中加密,从而在 Presto 节点之间启用 SSL/TLS 安全通信。有关更多信息,请参阅使用安全配置指定 Amazon EMR 加密选项。内部 HTTPS 的默认端口是 8446。用于内部通信的端口必须与用于对 Presto 协调器进行 HTTPS 访问的端口相同。Presto config.properties 文件中的 http-server.https.port=port_num 参数指定端口。

启用传输中加密时,Amazon EMR 对 Presto 执行以下操作:

  • 在整个 Presto 集群中分发您指定进行传输中加密的项目。有关加密项目的更多信息,请参阅为传输中数据加密提供证书

  • 按如下所示修改 Presto 的 config.properties 文件:

    • 在核心和任务节点上设置 http-server.http.enabled=false,它将禁用 HTTP 而支持 HTTPS。

    • 设置 http-server.https.*internal-communication.https.* 和其他值以启用 HTTPS 并指定实施详细信息,包括 LDAP 参数 (如果已启用并配置 LDAP)。