Доступ к HBase на Amazon EMR с помощью Athena

#amazon-web-services #aws-lambda #hbase #amazon-emr

Вопрос:

Кому-нибудь удалось получить доступ к HBase, работающей в качестве службы в кластере Amazon EMR с Athena? Я пытаюсь установить соединение с экземпляром HBase, но лямбда (предоставляемая функцией 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 в этом случае это часть набора параметров dhcp VPC. Как лямбда, так и кластер EMR принадлежат одному и тому же VPC, поэтому оба имеют одинаковые параметры dhcp.
Очевидно, что lambda не может разрешить dns-имя.
Можете ли вы, пожалуйста, помочь мне, как я должен вводить dns-имена в лямбда-функцию? или есть какие-то другие решения?

PS. HBase в кластере EMR запущен и работает. И у меня есть еще одна функция лямбда — питона, которая успешно помещает данные в эту базу данных, но эта лямбда использует общий url-адрес EMR master public DNS, я могу предоставить его лямбда-функции Афины, т. Е. ec2-3-131-xx-xxx.us-восток-2.compute.amazonaws.com:16000:2181, но я предполагаю, что функция собирает внутренние DNS-имена от zookeeper или некоторых других служб на EMR…

Ответ №1:

Наконец, решение этой проблемы заключается в создании соответствующих dns-записей для каждого экземпляра ec2 кластера с необходимыми именами внутри службы Amazon Route53.