Amazon EMR 上的 Presto 注意事项 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon EMR 上的 Presto 注意事项

在 Amazon EMR 上运行 Presto 时,请考虑以下区别和限制。

Presto 命令行可执行文件

在 Amazon EMR 中,PrestoDB 和 Trino 均使用相同的命令行可执行文件 presto-cli,如以下示例所示。

presto-cli --catalog hive

有些 Presto 部署属性不可配置

根据您使用的 Amazon EMR 的版本,某些 Presto 部署配置可能不可用。有关这些属性的更多信息,请参阅 Presto 文档中的部署 Presto。下表显示了 Presto properties 文件的配置状态。

文件 可配置

log.properties

PrestoDB:在 Amazon EMR 发行版 4.0.0 及更高版本中可配置。使用 presto-log 配置分类。

Trino (PrestoSQL):在 Amazon EMR 发行版 6.1.0 及更高版本中可配置。使用 prestosql-logtrino-log 配置分类。

config.properties

PrestoDB:在 Amazon EMR 发行版 4.0.0 及更高版本中可配置。使用 presto-config 配置分类。

Trino (PrestoSQL):在 Amazon EMR 发行版 6.1.0 及更高版本中可配置。使用 prestosql-configtrino-config 配置分类。

hive.properties

PrestoDB:在 Amazon EMR 发行版 4.1.0 及更高版本中可配置。使用 presto-connector-hive 配置分类。

Trino (PrestoSQL):在 Amazon EMR 发行版 6.1.0 及更高版本中可配置。使用 prestosql-connector-hivetrino-connector-hive 配置分类。

node.properties

PrestoDB:在 Amazon EMR 发行版 5.6.0 及更高版本中可配置。使用 presto-node 配置分类。

Trino (PrestoSQL):在 Amazon EMR 发行版 6.1.0 及更高版本中可配置。使用 prestosql-nodetrino-node 配置分类。

jvm.config

不可配置。

安装 PrestoDB 和 Trino

应用程序名称 Presto 继续用于在集群上安装 PrestoDB。要在集群上安装 Trino,请使用应用程序名称 Trino(或 Amazon EMR 早期版本的 PrestoSQL)。

您可以安装 PrestoDB 或 Trino,但不能在同一个集群上同时安装两者。如果在尝试创建集群时同时指定了 PrestoDB 和 Trino,则会发生验证错误,而且集群创建请求失败。

EMRFS 和 PrestoS3FileSystem 配置

使用 Amazon EMR 发行版 5.12.0 及更高版本,PrestoDB 可以使用 EMRFS,这是默认配置。EMRFS 也是 Amazon EMR 版本 6.1.0 及更高版本中的默认文件系统或 Trino (PrestoSQL)。有关更多信息,请参阅《Amazon EMR 管理指南》中的使用 EMR 文件系统(EMRFS)。使用早期的发行版,PrestoS3FileSystem 是唯一选项。

使用 EMRFS 具有其自己的优势。您可以使用安全配置为 Amazon S3 中的 EMRFS 数据设置加密。您还可以使用 IAM 角色处理 EMRFS 对 Amazon S3 的请求。有关更多信息,请参阅《Amazon EMR 管理指南》中的了解加密选项为处理 EMRFS 对 Amazon S3 的请求配置 IAM 角色

注意

使用 Amazon EMR 发行版 5.12.0 查询 Amazon S3 中的基础数据时,配置问题可能会导致 Presto 错误。这是因为 Presto 无法从 emrfs-site.xml 提取配置分类值。解决方法:在 usr/lib/presto/plugin/hive-hadoop2/ 下创建一个 emrfs 子目录,在 usr/lib/presto/plugin/hive-hadoop2/emrfs 中创建一个到现有 /usr/share/aws/emr/emrfs/conf/emrfs-site.xml 文件的符号链接,然后重新启动 presto-server 进程(sudo presto-server stop,然后是 sudo presto-server start)。

您可以覆盖 EMRFS 默认值并改用 PrestoS3FileSystem。为此,请使用 presto-connector-hive 配置分类将 hive.s3-file-system-type 设置为 PRESTO,如以下示例所示。有关更多信息,请参阅配置应用程序

[ { "Classification": "presto-connector-hive", "Properties": { "hive.s3-file-system-type": "PRESTO" } } ]

如果您使用的是 PrestoS3FileSystem,请使用 Trino 的 presto-connector-hive 配置分类或 trino-connector-hive 来配置 PrestoS3FileSystem 属性。有关可用属性的更多信息,请参阅 Presto 文档的“Hive 连接器”部分中的 Amazon S3 配置。这些设置不适用于 EMRFS。

终端用户模拟的默认设置

默认情况下,Amazon EMR 5.12.0 版及更高版本支持用于访问 HDFS 的终端用户模拟。有关更多信息,请参阅 Presto 文档中的终端用户模拟。您可以使用 presto-config 配置分类将 hive.hdfs.impersonation.enabled 属性设置为 false 来更改此设置。

Presto Web 界面的默认端口

默认情况下,Amazon EMR 将 Presto 协调器上的 Presto Web 界面配置为使用端口 8889(针对 PrestoDB 和 Trino)。您可以使用 presto-config 配置分类设置 http-server.http.port 属性来更改端口。有关更多信息,请参阅 Presto 文档的部署 Presto 部分中的配置属性

某些版本中的 Hive 存储桶执行问题

Presto 发行版 152.3 存在一个与 Hive 存储桶执行有关的问题,此问题在某些情况下可能会显著降低 Presto 的查询性能。此版本包含在 Amazon EMR 发行版 5.0.3、5.1.0 和 5.2.0 中。为此,请使用 presto-connector-hive 配置分类将 hive.bucket-execution 属性设置为 false,如以下示例所示。

[ { "Classification": "presto-connector-hive", "Properties": { "hive.bucket-execution": "false" } } ]