Как лучше всего запускать Hadoop на одной машине?

У меня есть доступ к компьютеру под управлением Linux с 20 ядрами, 92 ГБ ОЗУ и 100 ГБ на жестком диске. Я хотел бы использовать Hadoop для задания большого количества данных (более 1M слов, более 1B словосочетаний). Может ли псевдораспределенный режим или полностью распределенный режим наилучшим образом использовать мощность Hadoop на одном компьютере?

Для моего предполагаемого использования Hadoop, потери данных и необходимость повторного запуска задания из-за ошибки node не являются большими проблемами.

Этот проект с участием Контейнеры Linux использует полностью распределенный режим. В этой статье описывается псевдораспределенный режим; более подробную информацию можно найти здесь.

Ответ 1

Как я понимаю, у вас есть одна машина с 20 ядрами. В этом случае нет необходимости в виртуализации, потому что созданные вами виртуальные машины будут потреблять некоторые ресурсы из общих ресурсов. Лучшим вариантом является установка ОС Linux в ноутбуке, установка hadoop в псевдораспределенном режиме и настройка доступных ресурсов для размещения контейнеров.

Вам нужны ядра процессора, а также память для получения хорошей производительности. Так что 20 ядер не помогут вам. Вам также нужно хорошее количество физической памяти. Вы можете передать этот document для выделения памяти.

Основополагающим принципом хаопа является распределение вычислений и хранение для обработки больших данных экономически эффективным способом. Поэтому, если вы пытаетесь создать несколько машин на одной и той же родительской машине (небольших машинах) с помощью виртуализации, это не поможет вам, потому что множество ресурсов будет потребляться ОС отдельных машин. Вместо этого, если вы устанавливаете hadoop на машине и правильно настроили ресурсы для hadoop, задания будут выполняться в нескольких контейнерах (в зависимости от доступности и требований), и, следовательно, будет выполняться параллельная обработка. Таким образом, вы можете достичь максимальной производительности существующей машины.

Таким образом, лучший вариант - это настроить псевдораспределенный кластер и правильно распределить ресурсы. Псевдораспределенный режим - это режим, в котором все демоны работают на одной машине.

С конфигурацией оборудования, которую вы поделили, вы можете использовать приведенную ниже конфигурацию для своей настройки hadoop. Это может справиться с достаточной нагрузкой.

(yarn-site.xml)    yarn.nodemanager.resource.memory-mb  = 81920
(yarn-site.xml)    yarn.scheduler.minimum-allocation-mb = 1024
(yarn-site.xml)    yarn.scheduler.maximum-allocation-mb = 81920
(yarn-site.xml)    yarn.nodemanager.resource.cpu-vcores = 16
(yarn-site.xml)    yarn.scheduler.minimum-allocation-vcores = 1
(yarn-site.xml)    yarn.scheduler.increment-allocation-vcores = 1
(yarn-site.xml)    yarn.scheduler.maximum-allocation-vcores = 16
(mapred-site.xml)  mapreduce.map.memory.mb  = 4096
(mapred-site.xml)  mapreduce.reduce.memory.mb   = 8192
(mapred-site.xml)  mapreduce.map.java.opts  = 3072
(mapred-site.xml)  mapreduce.reduce.java.opts   = 6144

Ответ 2

Вы теряете все преимущества Hadoop, когда находитесь на одной машине. Да, вы можете использовать контейнеры или виртуальные машины, но нет необходимости. A одиночный автономный node экземпляр с MapReduce с 20 слотами карты/редуктора будет работать лучше, чем полностью распределенный кластер, работающий на одной машине.

ОБНОВЛЕНИЕ: использование псевдораспределенного режима может быть лучше при использовании всех ядер во время задания M/R. По-видимому, автономные работает в одном экземпляре java, который, вероятно, не идеален для вашего варианта использования.

Ответ 3

Лучший способ использования всех ядер - это Способ 1: использовать виртуализацию, если аппаратное обеспечение поддерживает (установить esxi или любой из гипервизоров), а также создавать экземпляры виртуальных машин VM или устанавливать облако openstack и создавать виртуальные машины, чтобы вы могли полностью использовать оборудование.
Метод 2:. Хотя это может быть достигнуто с помощью более простого метода установки ОС хоста на машине и установки VMware или Virtualbox, но так как есть два слоя ч/б аппаратного обеспечения, а производительность hadoop немного уменьшена по сравнению с методом 1.

после этого вы можете установить аромат hadoop, который вам нравится.

Всегда лучше использовать распределенный режим, потому что в псевдораспределенном режиме вероятность потери данных в случае сбоя системы как фактора репликации равна 1, тогда как в распределенном режиме коэффициент репликации по умолчанию равен 3. И так как в псевдораспределенном режиме каждый деамон вращается с одним потоком java, даже потеря в одном потоке может привести к повторному запуску всего задания MR.

Изменить: Рассматривая конфигурацию хранилища в 100 ГБ и почти равную память (при условии, что данные составляют менее 100 гб), вы можете использовать псевдокластер, и вы можете использовать преимущество обработки памяти с помощью Spark в качестве искры поддерживает mapreduce равноценные операции вместе с SQL, dataframes, mllib, graphX ​​(Python также приходит изначально), или если вы знаете, что R u может напрямую использовать R, используя искру 1.4 (как искра быстрее, чем hadoop)

Ответ 4

Я не думаю, что вы можете использовать реальные преимущества Hadoop, учитывая, что в вашем кластере есть только одна машина. На мой взгляд, более простой и лучшей альтернативой было бы следующее:

  • Пожалуйста, продолжайте с Pseudo-распределенным режимом и сохраните свои данные в Hadoop.

  • Используйте любую из базы данных памяти (Impala или Presto или Spark) поверх данных, хранящихся в hadoop.

  • Синтаксис Impala точно такой же, как улей, и вам не нужно делать никаких дополнительных изменений в ваших данных для запросов. В качестве альтернативы вы можете использовать Spark ML Lib для задач, связанных с машинным обучением.

Ответ 5

" полностью распределенный режим" - идеальный выбор, где можно в полной мере использовать инфраструктуру Hadoop.

Ответ 6

Перейдите к полнофункциональному кластеру hasoop mode на платформе vmware esxi, если ваше оборудование поддерживает. Кажется, это лучший способ использовать ваши ресурсы.