使用 Athena 访问 Amazon EMR 上的 HBase

Accessing HBase on Amazon EMR with Athena

有没有人设法访问 HBase 运行 作为 Amazon EMR 集群上的 Athena 服务? 我正在尝试建立与 HBase 实例的连接,但 lambda(由 Athena java 函数提供)失败并出现以下错误:

Failed to invoke lambda function due to 
com.amazonaws.services.lambda.invoke.LambdaFunctionException: org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=3, 
exceptions: Tue Aug 31 09:42:35 UTC 2021, 
RpcRetryingCaller{globalStartTime=1630402955107, pause=500, retries=3}, 
org.apache.hadoop.hbase.MasterNotRunningException: java.net.UnknownHostException: can 
not resolve ip-10-113-8-29.my.domain.com,16000,1630400215973 Tue Aug 31 09:42:35 
UTC 2021, RpcRetryingCaller{globalStartTime=1630402955107, pause=500, retries=3}

my.domain.com 在这种情况下是 VPC dhcp 选项集的一部分。 lambda 和 EMR 集群都属于同一个 VPC,因此它们具有相同的 dhcp 选项。 显然 lambda 无法解析 dns 名称。 你能帮我吗,我应该如何将 dns 名称注入 lambda 函数?或者还有其他解决方案吗?

PS。 EMR 集群上的 HBase 已启动并且 运行。我还有另一个 lambda - python 函数,它成功地将数据放入这个数据库,但是这个 lambda 使用共享的 EMR master public DNS url,我可以为 Athena 的 lambda 函数提供一个,即ec2-3-131-xx-xxx.us-east-2.compute.amazonaws.com:16000:2181,但我猜该函数从 zookeeper 或 EMR 上的一些其他服务收集内部 DNS 名称...

最后,该问题的解决方案是在 Amazon Route53 服务中使用必要的名称为每个集群 ec2 实例创建适当的 dns 记录。