Низкая производительность запросов Hive в AWS Elastic MapReduce

У меня возникла странная проблема, и уверяю вас, я много гуглил.

Я использую набор кластеров AWS Elastic MapReduce, и у меня есть таблица Hive с примерно 16 разделами. Они созданы из emr-s3distcp (поскольку в исходной корзине s3 находится около 216 КБ файлов), с параметром --groupBy и ограничением, установленным на 64 МБ (в данном случае размер блока DFS), и это просто текстовые файлы с объект json в каждой строке, используя JSON SerDe.

Когда я запускаю этот скрипт, он занимает много времени, а затем сдается из-за некоторых подключений IPC.

Первоначально нагрузка от s3distcp к HDFS была настолько высока, что я принял некоторые меры (читай: изменение размера машин с большей емкостью, затем установка разрешений dfs на 3-кратную репликацию, поскольку это небольшой кластер, а размер блока установлен на 64 МБ). ). Это сработало, и количество недореплицированных блоков стало равным нулю (по умолчанию для менее 3 блоков в EMR установлено 2, но я изменил их на 3).

Просмотр /mnt/var/log/apps/hive_081.log дает несколько таких строк:

2013-05-12 09:56:12,120 DEBUG org.apache.hadoop.ipc.Client (Client.java:<init>(222)) - The ping interval is60000ms.
2013-05-12 09:56:12,120 DEBUG org.apache.hadoop.ipc.Client (Client.java:<init>(265)) - Use SIMPLE authentication for protocol ClientProtocol
2013-05-12 09:56:12,120 DEBUG org.apache.hadoop.ipc.Client (Client.java:setupIOstreams(551)) - Connecting to /10.17.17.243:9000
2013-05-12 09:56:12,121 DEBUG org.apache.hadoop.ipc.Client (Client.java:sendParam(769)) - IPC Client (47) connection to /10.17.17.243:9000 from hadoop sending #14
2013-05-12 09:56:12,121 DEBUG org.apache.hadoop.ipc.Client (Client.java:run(742)) - IPC Client (47) connection to /10.17.17.243:9000 from hadoop: starting, having connections 2
2013-05-12 09:56:12,125 DEBUG org.apache.hadoop.ipc.Client (Client.java:receiveResponse(804)) - IPC Client (47) connection to /10.17.17.243:9000 from hadoop got value #14
2013-05-12 09:56:12,126 DEBUG org.apache.hadoop.ipc.RPC (RPC.java:invoke(228)) - Call: getFileInfo 6
2013-05-12 09:56:21,523 INFO  org.apache.hadoop.ipc.Client (Client.java:handleConnectionFailure(663)) - Retrying connect to server: domU-12-31-39-10-81-2A.compute-1.internal/10.198.130.216:9000. Already tried 6 time(s).
2013-05-12 09:56:22,122 DEBUG org.apache.hadoop.ipc.Client (Client.java:close(876)) - IPC Client (47) connection to /10.17.17.243:9000 from hadoop: closed
2013-05-12 09:56:22,122 DEBUG org.apache.hadoop.ipc.Client (Client.java:run(752)) - IPC Client (47) connection to /10.17.17.243:9000 from hadoop: stopped, remaining connections 1
2013-05-12 09:56:42,544 INFO  org.apache.hadoop.ipc.Client (Client.java:handleConnectionFailure(663)) - Retrying connect to server: domU-12-31-39-10-81-2A.compute-1.internal/10.198.130.216:9000. Already tried 7 time(s).

И так далее до тех пор, пока один из клиентов не достигнет лимита.

Что нужно, чтобы исправить это в Hive под Elastic MapReduce?

Спасибо


person aldrinleal    schedule 12.05.2013    source источник


Ответы (1)


Через некоторое время я заметил: неправильного IP-адреса даже не было в моем кластере, так что это было застрявшее хранилище метаданных улья. Я исправил это:

CREATE TABLE whatever_2 LIKE whatever LOCATION <hdfs_location>;

ALTER TABLE whetever_2 RECOVER PARTITIONS;

Надеюсь, поможет.

person aldrinleal    schedule 12.05.2013