Оператор ORDER BY в Hive on Tez создает исключение OOM - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь использовать ORDER BY, чтобы найти самый ранний момент записи в мою таблицу в Hive.Это утверждение выглядит следующим образом:

SELECT latitude, longitude, timeiss
FROM iss
ORDER BY timeiss
LIMIT 10;

Это дает мне сообщение об ошибке, которое выглядит следующим образом:

https://i.imgur.com/cgIiSKh.png

Просто чтобы показать вам, как выбрать SELECTОператор работает без ORDER BY:

https://i.imgur.com/k6RwAd4.png

latitude    longitude   timeiss
-26.6542    -96.9894    2018-11-28 10:13:42
-39.6293    -80.6984    2018-11-28 10:18:45

Я получил почти такую ​​же ошибку при попытке

SELECT MIN(timeiss)
FROM iss

timeiss является строкой между прочим.

Вот полное сообщение об ошибке в виде текста

java.sql.SQLException: Ошибка при обработке оператора: FAILED: Ошибка выполнения, код возврата 2 из org.apache.hadoop.hive.ql.exec.tez.TezTask.Ошибка вершины, vertexName = Карта 1, vertexId = vertex_1541164145004_0025_1_00, диагностика = [Задача не выполнена, taskId = task_1541164145004_0025_1_00_000000, диагностика = [TaskAttempt 0 не выполнен, информация = [Ошибка: ошибка при выполнении задачи: java.lang.jg: Пространство кучи Java в org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor (TezProcessor.java:159) в org.apache.hadoop.hive.ql.exec.tez.TezProcessor.run (TezProcessor.java: 139) в org.apache.tez.runtime.LogicalIOProcessorRuntimeTask.run (LogicalIOProcessorRuntimeTask.java:347) в org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCalkz.tj.tj1. orj.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable $ 1.run (TezTaskRunner.java:185) в java.security.AccessController.doPrivileged (собственный метод) в javax.security.auth.Subject.java4: SubAsв org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1724) в org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable.callInternal (TezTaskRunner.java:185) в org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable.callInternal (TezTaskRunner.java:181) в org.clac.java: 36) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPool(ThreadPoolExecutor.java:617) в java.lang.Thread.run (Thread.java:745) Вызывается: java.lang.OutOfMemoryError: Пространство кучи Java в java.nio.HeapByteBuffer. (HeapByteBuffer.java:57 at).nio.ByteBuffer.allocate (ByteBuffer.java:335) в org.apache.tez.runtime.library.common.sort.impl.PipelinedSorter. (PipelinedSorter.java:173) в org.apache.tez.runtime.library.common.sort.impl.PipelinedSorter. (PipelinedSorter.java:117) в org.apache.tez.runtime.library.output.OrderedPartitionedKVOutput.start (OrderedPartitionedKVOutput.java:142) в org.apache.hadoop.hive.l.exe..tez.MapRecordProcessor.init (MapRecordProcessor.java:138) в org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor (TezProcessor.java:149) ... еще 14, сбой TaskAttempt 1, информация = [ошибка: Ошибка во время выполнения задачи: java.lang.RuntimeException: java.lang.OutOfMemoryError: пространство кучи Java в org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor (TezProcessor.java:159) atg или.hadoop.hive.ql.exec.tez.TezProcessor.run (TezProcessor.java:139) в org.apache.tez.runtime.LogicalIOProcessorRuntimeTask.run (LogicalIOProcessorRuntimeTask.java:347) в org.kache.te.TezTaskRunner $ TaskRunnerCallable $ 1.run (TezTaskRunner.java:194) в org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable $ 1.run (метод TezTaskRunner.java:18).в javax.security.auth.Subject.doAs (Subject.java:422) в org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1724) в org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable.callInternal (TezTaskRunner.java:185) в org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable.callInternal (TezTaskRunner.java:1)в org.apache.tez.common.CallableWithNdc.call (CallableWithNdc.java:36) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.rjoWorker: 1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в java.lang.Thread.run (Thread.java:745) Причина: java.lang.OutOfMemoryError: пространство кучи Java вjava.nio.HeapByteBuffer. (HeapByteBuffer.java:57) в java.nio.ByteBuffer.allocate (ByteBuffer.java:335) в org.apache.tez.runtime.library.common.sort.impl.PipelinedSorter.Java: 173) в org.apache.tez.runtime.library.common.sort.impl.PipelinedSorter. (PipelinedSorter.java:117) в org.apache.tez.runtime.library.output.OrderedPartitionedKVOutput.start (OrderedPartitionedKVOut: 142) в org.apache.hadoop.hive.ql.exec.tez.MapRecordProcessor.init (MapRecordProcessor.java:138) в org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor (TeavaProcessor): 149) ... еще 14], TaskAttempt 2 не удалось, info = [Ошибка: ошибка при выполнении задачи: java.lang.RuntimeException: java.lang.OutOfMemoryError: пространство кучи Java в org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor (TezProcessor.java:159) в org.apache.hadoop.hive.ql.exec.tez.TezProcessor.run (TezProcessor.java:139) в org.apache.tez.runtime.LogicalIOProcessorRuntimeTask.run (LogicalIOProcessorRuntime)в org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable $ 1.run (TezTaskRunner.java:194) в org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallazTavasjt: java5.security.AccessController.doPrivileged (собственный метод) в javax.security.auth.Subject.doAs (Subject.java:422) в org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1724) в org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable.callInternal (TezTaskRunner.java:185) в org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable.callInternalR (тезava: 181) в org.apache.tez.common.CallableWithNdc.call (CallableWithNdc.java:36) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.ThreadPounExecutor(ThreadPoolExecutor.java:1142) в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в java.lang.Thread.run (Thread.java:745). Причина: java.lang.OutOfMemoryEr:Пространство кучи Java в java.nio.HeapByteBuffer. (HeapByteBuffer.java:57) в java.nio.ByteBuffer.allocate (ByteBuffer.java:335) в org.apache.tez.runtime.library.common.sort.impl.Porter. (PipelinedSorter.java:173) в org.apache.tez.runtime.library.common.sort.impl.PipelinedSorter. (PipelinedSorter.java:117) в org.apache.tez.runtime.library.output.OrderedPartitionedKVOutput.start(OrderedPartitionedKVOutput.java:142) в org.apache.hadoop.hive.ql.exec.tez.MapRecordProcessor.init (MapRecordProcessor.java:138) в org.apache.hadoop.hive.ql.exec.tez.TezProcessorRun(TezProcessor.java:149) ...Еще 14], TaskAttempt 3 не удалось, info = [Ошибка: ошибка при выполнении задачи: java.lang.RuntimeException: java.lang.OutOfMemoryError: пространство кучи Java в org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor (TezProcessor.java:159) по адресу org.apache.hadoop.hive.ql.exec.tez.TezProcessor.run (TezProcessor.java:139) по адресу org.apache.tez.runtime.LogicalIOProcessorRuntimeTask.347) по адресу org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable $ 1.run (TezTaskRunner.java:194) по адресу org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerRunas.Tune.Rallaz $в java.security.AccessController.doPrivileged (собственный метод) в javax.security.auth.Subject.doAs (Subject.java:422) в org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.java:1724) вorg.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable.callInternal (TezTaskRunner.java:185) в org.apache.tez.runtime.task.TezTaskRunner $ TaskRunnerCallable.ache.tj. org.jallIntez.common.CallableWithNdc.call (CallableWithNdc.java:36) в java.util.concurrent.FutureTask.run (FutureTask.java:266) в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPool: 11).util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:617) в java.lang.Thread.run (Thread.java:745) Причина: java.lang.OutOfMemoryError: Пространство кучи Java в java.nio.Heaper. (HeapByteBuffer.java:57) в java.nio.ByteBuffer.allocate (ByteBuffer.java:335) в org.apache.tez.runtime.library.common.sort.impl.PipelinedSorter. (PipelinedSorter.java:173) вorg.apache.tez.runtime.library.common.sort.impl.PipelinedSorter. (PipelinedSorter.java:117) в org.apache.tez.runtime.library.output.OrderedPartitionedKVOutput.start (OrderedPartitionedKVOutput.java:14)rg.apache.hadoop.hive.ql.exec.tez.MapRecordProcessor.init (MapRecordProcessor.java:138) в org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor (TezProcessor.java:149)... 14 подробнее]], Vertex не удалось из-за OWN_TASK_FAILURE, failedTasks: 1 killedTasks: 0, Vertex vertex_1541164145004_0025_1_00 [Карта 1] убит / не удалось из-за: OWN_TASK_FAILURE] Vertex убит, vertexName = Редуктор 2, vertexId = vertex_1541164145004_0025_1_01, диагностика =[Vertex получил Kill, находясь в состоянии RUNNING. Vertex не удалось выполнить из-за OTHER_VERTEX_FAILURE, failTasks: 0 killTasks: 1, Vertex vertex_1541164145004_0025_1_01 [Редуктор 2] уничтожен / не выполнен из-за: OTHER_VERTEX_FAILURE] из-за того, что DAG не удалось выполнить, не удалось.failedVertices: 1 killVertices: 1

1 Ответ

0 голосов
/ 17 декабря 2018

Вершина Map1 завершается с ошибкой OOM:

java.lang.RuntimeException: java.lang.OutOfMemoryError: пространство кучи Java в org.apache.hadoop.hive.ql.exec.tez.TezProcessor.initializeAndRunProcessor

Попробуйте увеличить контейнер Mapper и память JVM.

Примерно так:

set hive.tez.container.size=9216;
set hive.tez.java.opts=-Xmx6144m;

Но лучше проверить текущий размер кучи контейнера и Java иувеличить его соответственно.Прочитайте эту статью для получения более подробной информации: Демистификация настройки памяти Tez

...