2015-08-13 4 views
0

Нам сказали, что наилучшей практикой является разделение наших таблиц Hive на день вместо часа из-за стоимости памяти почасового разбиения на namenode. Но будет ли проблема с перемещением наших крупнейших таблиц (~ 40 ТБ в год) на почасовое разбиение?Какие проблемы вызывают часовое разделение в Hadoop?

Как я понимаю, каждый файл на Hadoop требует, чтобы метаданные для 6 объектов сохранялись в памяти namenode (1 файл + 1 блок) * 3репликации. Раздел - это просто каталог, и поэтому я считаю, что ежечасное разбиение будет увеличивать количество объектов в день от 1 до 24 или стоимость около 4 файлов (что кажется довольно крошечным, учитывая, насколько скоро вы будете получать почасовые выплаты).

Правильно ли я понимаю? Есть ли какие-то серьезные недостатки, которые мне не хватает? Я бы хотел изменить структуру каталогов из /path/to/file/2015/08/13/datafrom20150813T*.txt в/path/to/file/2015/08/13/15/datafrom20150813T15.

ответ

0

Переход с дня на час подразумевает увеличение количества объектов, отслеживаемых namenode, по отношению к этим таблицам, на 24. Если у вас сейчас 1 миллион блоков, у вас будет 24 миллиона блоков после изменения. NM должен хранить список всех блоков в памяти и составляет ~ 150 байт на блок, поэтому вы бежите против физического предела вашей ОЗУ NM.

Это сказано: RAM дешево. Если вы можете доказать, что ежечасное разбиение улучшает перфект, то идите на него и убедитесь, что ваш NM может справиться с этим.

+0

Почему количество объектов увеличивается на кратное 24? Количество базовых файлов не изменится. Например, если в каждом ежедневном каталоге было 240 файлов, то в каждом из 24-часовых каталогов теперь будет 10 файлов. В вашем примере я бы подумал, что количество объектов увеличится всего на 23, а не на 23 миллиона. – user1956609

+0

BTW, если производительность вы обеспокоены тем, что в первую очередь вы должны использовать эффективный формат хранения, ORC или паркет –

Смежные вопросы