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

Presto on Amazon EMR 注意事项

运行 Presto on Amazon EMR 时应注意以下限制。

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)。在早期版本的 Amazon EMR 中,唯一的配置选项是 PrestoS3FileSystem。

您可以使用安全配置为 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。要解决此问题,请使用 presto-connector-hive 配置分类将 hive.bucket-execution 属性设置为 false,如以下示例所示。

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