presto无法识别aws凭据(iam和密钥)?

tjrkku2a  于 2021-06-28  发布在  Hive
关注(0)|答案(3)|浏览(480)

我试图在一个aws ec2示例上设置presto,以便可以对存储在s3中的文件运行查询。我知道你可以/应该使用电子病历,但我只限于ec2。我已经为我的metastore创建了一个derby数据库,在bucket上设置了hdfs,并且能够使用hive查询s3中的数据文件。在hive cli中,我可以运行 SELECT * FROM testpresto; (testpresto是我的表名),它正确地显示了我的s3txt文件的所有内容。我将presto连接到hive metastore,因此我的表通过 SHOW TABLES; 以及 DESCRIBE testpresto; .
但是,当我跑的时候 SELECT * FROM testpresto; 查询超时,出现以下错误。
查询20170109\u 165917\u 00007\u 7pyam失败:无法执行http请求:连接到${my\u bucket}.s3-us-west-1.amazonaws。com:443 [${my\u bucket}.s3-us-west-1.amazonaws.com/54.231.237.24]失败:连接超时
当我试图通过presto cli示例化一个新的模式时,我得到了一个更具描述性的错误。
查询20170109\u 175329\u 00016\u 7pyam失败:java.lang.illegalargumentexception:aws access key id和secret access key必须分别指定为s3 url的用户名或密码,或者通过设置fs.s3.awsaccesskeyid或fs.s3.awssecretaccesskey属性(分别)来指定。
不幸的是,我所做的一切都不能解决这个错误。从我在网上读到的内容来看,似乎在presto配置中添加一个资源引用( catalog/hive.properties )通过

hive.config.resources=/usr/local/hadoop/etc/hadoop/core-site.xml,/usr/local/hadoop/etc/hadoop/hdfs-site.xml

或者直接通过 hive.s3.aws-access-key 以及 hive.s3.aws-secret-key 应该使presto能够从s3读取数据。我也试过用 hive.s3.use-instance-credentials=true (无论是否设置密钥配置)使用iam角色,但都会产生相同的错误。我还缺少其他的设置吗?我不明白为什么Hive可以查询,但普雷斯托不是。

zlhcx6iw

zlhcx6iw1#

启动ec2示例时,您有机会为其分配iam角色。iam角色必须在启动时分配。一旦启动示例,就不能为其分配角色或更改其角色。
我认为您应该创建一个iam角色,该角色具有对s3 bucket所需的访问权限,然后启动一个新的ec2示例并为其分配该角色。一旦创建了这个示例,ssh就会进入并运行 aws s3 ls 查看示例也可以访问哪些存储桶。如果您正确配置了角色,它应该能够列出您的bucket。从那以后,普雷斯托应该开始工作了。

kknvjkwl

kknvjkwl2#

我用s3和hive metastore测试了presto s3a:// 访问s3的模式。既然您有了与s3对话的hive,剩下的应该很简单:
您可以分配一个iam角色,该角色允许ec2示例与s3通信。在presto 0.157中,这是开箱即用的 hive.s3.use-instance-credentials 的配置属性 hive 连接器默认为 true 或者,您可以在配置单元连接器的配置文件中设置以下内容(通常 catalog/hive.properties ): hive.s3.use-instance-credentials = false hive.s3.aws-access-key = ... hive.s3.aws-secret-key = ... 因为我知道您测试了这些选项,但它们对您不起作用,所以您仍然可以尝试:
重新尝试
尝试 s3a 架构,如果你还没有
升级,如果你远远落后于最新版本,或尝试完全相同的版本,为我工作( 0.157.1-t.1 )
确保没有网络级配置阻止从presto机器进行s3访问
确保iam角色真的授予您s3访问权限(或者使用显式密钥作为临时解决方法)

hlswsv35

hlswsv353#

如果您使用的是emr,那么您使用的是amazons3客户机,而不是asf代码。这意味着s3a中的代码(例如,凭证提供者链)将不在那里。忽略对hadoop-*jiras或文档的任何引用http://hadoop.apache.org. 对不起的

相关问题