У нас есть запрос вставки, в котором мы пытаемся вставить данные в многораздельную таблицу путем чтения данных из однораздельной таблицы.
Запрос -
insert into db1.fact_table PARTITION(part_col1, part_col2)
( col1,
col2,
col3,
col4,
col5,
col6,
.
.
.
.
.
.
.
col32
LOAD_DT,
part_col1,
Part_col2 )
select
col1,
col2,
col3,
col4,
col5,
col6,
.
.
.
.
.
.
.
col32,
part_col1,
Part_col2
from db1.main_table WHERE col1=0;
В таблице 34 столбца, количество записей в основной таблице зависит от размера входного файла, который мы получаем ежедневно.
и количество разделов (part_col1, part_col2), которые мы вставляем в каждый прогон, может варьироваться от 4000 до 5000
Некоторое время этот запрос завершается с ошибкой ниже.
2019-04-28 13: 23: 31,715 Этап-1 = 95%, уменьшение = 0%, кумулятивно
ЦП 177220,23 с 2019-04-28 13:24:25,989 Карта этапа 1 = 100%, сокращение
= 0%, совокупный процессор 163577,82 сек. MapReduce Общее совокупное время ЦП: 1 день 21 час 26 минут 17 секунд 820 мсек. Завершенное задание =
job_1556004136988_155295 с ошибками Ошибка при получении задания
отладочная информация ... Проверка идентификатора задачи:
task_1556004136988_155295_m_000003 (и более) с работы
job_1556004136988_155295 Проверка идентификатора задачи:
task_1556004136988_155295_m_000004 (и более) с работы
job_1556004136988_155295 Задача с наибольшим количеством сбоев (4):
----- идентификатор задачи: task_1556004136988_155295_m_000000
----- Диагностические сообщения для этой задачи: Исключение из запуска контейнера. Идентификатор контейнера:
container_e81_1556004136988_155295_01_000015 Код выхода: стек 255
trace: ExitCodeException exitCode = 255:
в org.apache.hadoop.util.Shell.runCommand (Shell.java:563)
в org.apache.hadoop.util.Shell.run (Shell.java:460)
в org.apache.hadoop.util.Shell $ ShellCommandExecutor.execute (Shell.java:748)
в org.apache.hadoop.yarn.server.nodemanager.LinuxContainerExecutor.launchContainer (LinuxContainerExecutor.java:305)
в org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call (ContainerLaunch.java:356)
в org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call (ContainerLaunch.java:88)
в java.util.concurrent.FutureTask.run (FutureTask.java:266)
в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149)
в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624)
at java.lang.Thread.run (Thread.java:748) Вывод оболочки: main: предоставлена команда 1 main: пользователь является bldadmin main:
запрашиваемый пользователь пряжи - bldadmin Контейнер завершен с ненулевым значением
код выхода 255 FAILED: ошибка выполнения, код возврата 2 из
org.apache.hadoop.hive.ql.exec.mr.MapRedTask MapReduce Задания запущены:
Этап-Этап-1: Карта: 10 Совокупный процессор: 163577,82 сек. Чтение MAPRFS:
0 MAPRFS Запись: 0 FAIL Общее потраченное время MapReduce: 1 день 21 час
26 минут 17 секунд 820 мсек
Текущие свойства улья.
Использование Tez Engine -
set hive.execution.engine=tez;
set hive.tez.container.size=3072;
set hive.tez.java.opts=-Xmx1640m;
set hive.vectorized.execution.enabled=false;
set hive.vectorized.execution.reduce.enabled=false;
set hive.enforce.bucketing=true;
set hive.exec.parallel=true;
set hive.auto.convert.join=false;
set hive.enforce.bucketmapjoin=true;
set hive.optimize.bucketmapjoin.sortedmerge=true;
set hive.optimize.bucketmapjoin=true;
set hive.exec.tmp.maprfsvolume=false;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.dynamic.partition=true;
set hive.stats.fetch.partition.stats=true;
set hive.support.concurrency=true;
set hive.exec.max.dynamic.partitions=999999999;
set hive.enforce.bucketing=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
set hive.compactor.initiator.on=true;
На основании информации, полученной от других команд, мы изменили двигатель на mr и присвоили ему значение -
set hive.execution.engine=mr;
set hive.auto.convert.join=false;
set mapreduce.map.memory.mb=16384;
set mapreduce.map.java.opts=-Xmx14745m;
set mapreduce.reduce.memory.mb=16384;
set mapreduce.reduce.java.opts=-Xmx14745m;
С этими свойствами запрос завершается без ошибок несколько раз.
Как я могу отладить эту проблему и есть ли какие-либо свойства улья, которые мы можем установить, чтобы мы не получили эти проблемы в будущем.