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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

亚马逊 EMR 上的 Presto 注意事项

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

普雷斯托命令行可执行文件

在亚马逊 EMR 中,PrestoDB 和 PrestoSQL 都使用相同的命令行可执行文件,presto-cli,如以下示例所示。

presto-cli --catalog hive

某些 Presto 部署属性不可配置

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

文件 可配置

log.properties

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

PrestoSQL:在 Amazon EMR 版本 6.1.0 及更高版本中可配置。使用 prestosql-log 配置分类。

config.properties

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

PrestoSQL:在 Amazon EMR 版本 6.1.0 及更高版本中可配置。使用 prestosql-config 配置分类。

hive.properties

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

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

node.properties

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

PrestoSQL:在 Amazon EMR 版本 6.1.0 及更高版本中可配置。使用 prestosql-node 配置分类。

jvm.config

不可配置。

安装 PrestoDB 和 PrestoSQL

应用程序名称 Presto 继续用于在群集上安装 PrestoDB。要在群集上安装 PrestoSQL,请使用应用程序名称 PrestoSQL。

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

如果您使用亚马逊 EMR 版本 6.1.0 及更高版本安装 Presto(PrestoDB),则亚马逊 EMR 使用 PrestoDB 0.232 版本。如果您改为安装 PrestoSQL,则亚马逊 EMR 将使用 PrestoSQL 版本 338。

EMRFS 和 PrestoS3FileSystem 配置

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

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

注意

在使用亚马逊 EMR 5.12.0 版本查询 Amazon S3 中的基础数据时,配置问题可能会导致 Presto 错误。这是因为 Presto 无法从emrfs-site.xml。作为解决方法,创建emrfsSubdirectoryusr/lib/presto/plugin/hive-hadoop2/,创建一个符号链接usr/lib/presto/plugin/hive-hadoop2/emrfs添加到现有的/usr/share/aws/emr/emrfs/conf/emrfs-site.xml文件,然后重新启动 Presto-Service 进程(sudo presto-server stop跟随sudo presto-server start)。

您可以覆盖 EMRFS 默认值而改用 PrestoS3FileSystem。若要执行此操作,请使用presto-connector-hive要设置的配置分类hive.s3-file-system-typePRESTO如以下示例所示。有关更多信息,请参阅 配置应用程序

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

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

最终用户模拟的默认设置

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

普雷斯托网页界面的默认端口

默认情况下,Amazon EMR 将 Presto 协调器上的 Presto Web 界面配置为使用端口 8889(用于 PrestoDB Web 界面)。您可以使用presto-config配置分类,以将http-server.http.port属性。有关更多信息,请参阅 。Config 属性中的部署 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" } } ]