как решает улей - прочитаны байты HDFS - PullRequest
0 голосов
/ 01 сентября 2018

Я записываю данные в таблицу в Hive из другой таблицы Hive размером 6,29 ГБ (размер блока: 128 МБ), используя Yarn в качестве менеджера ресурсов и Tez в качестве механизма выполнения. Настройки пряжи есть.

 yarn.nodemanager.resource.memory-mb=8192
 yarn.scheduler.minimum-allocation-mb=1024
 yarn.scheduler.maximum-allocation-mb=8192

После завершения запроса на вставку в журналах для одного контейнера пряжи отображается следующая информация

{ 
 counterGroupName:org.apache.tez.common.counters.FileSystemCounter,
 counterGroupDisplayName:File System Counters, 
 counters:[{ counterName:HDFS_BYTES_READ, counterValue:536887296},
 { counterName:HDFS_BYTES_WRITTEN, counterValue:107265498 }, 
 { counterName:HDFS_READ_OPS, counterValue:7 }, 
 { counterName:HDFS_WRITE_OPS, counterValue:3 } ] 
}
{
counterGroupName:org.apache.tez.common.counters.TaskCounter,
counters:[{counterName:GC_TIME_MILLIS,counterValue:5450}, 
{counterName:CPU_MILLISECONDS,counterValue:97670}, 
{counterName:PHYSICAL_MEMORY_BYTES,counterValue:166723584}, 
{counterName:VIRTUAL_MEMORY_BYTES,counterValue:1968496640}, 
{counterName:COMMITTED_HEAP_BYTES,counterValue:166723584}, 
{counterName:INPUT_RECORDS_PROCESSED,counterValue:1736321}, 
{counterName:INPUT_SPLIT_LENGTH_BYTES,counterValue:536870912}]
}

Я не уверен, как Hive решает, сколько данных считывается из hdfs,

1) как было решено прочитать 537 МБ для одного контейнера?

2) размер блока исходной таблицы составляет 128 МБ, можно предположить (4 * 128 = 512 МБ), а HDFS_READ_OPS будет 4, но HDFS_READ_OPS = 7?

Physical memory used = 167 MB 
Virtual memory used = 1969 MB
HDFS_BYTES_READ = 537 MB
...