Можно ли запустить Hadoop в псевдо-распределенном режиме без HDFS?

Я изучаю варианты запуска приложения hadoop в локальной системе.

Как и во многих приложениях, первые несколько выпусков должны работать на одном узле, если мы можем использовать все доступные ядра ЦП (да, это связано с этот вопрос). Текущее ограничение заключается в том, что в наших производственных системах используется Java 1.5, и поэтому мы привязаны к Hadoop 0.18.3 в качестве последней версии (см. этот вопрос). Поэтому, к сожалению, мы пока не можем использовать эту новую функцию.

Первый вариант - просто запустить hadoop в псевдораспределенном режиме. По сути: создать полный кластер hadoop, в котором все работает ровно на 1 узле.

«Обратной стороной» этой формы является то, что она также использует полноценную HDFS. Это означает, что для обработки входных данных они сначала должны быть «загружены» в DFS ... который хранится локально. Таким образом, это требует дополнительного времени передачи как входных, так и выходных данных и требует дополнительного дискового пространства. Я бы хотел избежать того и другого, пока мы остаемся на конфигурации с одним узлом.

Итак, я подумал: можно ли переопределить параметр "fs.hdfs.impl" и изменить его с "org.apache.hadoop.dfs.DistributedFileSystem" на (например) "org.apache.hadoop.fs.LocalFileSystem" ?

Если это работает, «локальный» кластер hadoop (который может состоять ТОЛЬКО из ОДНОГО узла) может использовать существующие файлы без каких-либо дополнительных требований к хранилищу и может запускаться быстрее, поскольку нет необходимости загружать файлы. Я бы ожидал, что у меня все еще будет трекер заданий и задач, а также, возможно, именной узел для управления всем этим.

Кто-нибудь пробовал это раньше? Может ли это сработать или эта идея слишком далека от предполагаемого использования?

Или есть лучший способ получить тот же эффект: псевдораспределенная работа без HDFS?

Спасибо за понимание.


РЕДАКТИРОВАТЬ 2:

Это конфигурация, которую я создал для hadoop 0.18.3 conf / hadoop-site.xml, используя ответ, предоставленный bajafresh4life.

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
    <name>fs.default.name</name>
    <value>file:///</value>
  </property>

  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:33301</value>
  </property>

  <property>
    <name>mapred.job.tracker.http.address</name>
    <value>localhost:33302</value>
    <description>
    The job tracker http server address and port the server will listen on.
    If the port is 0 then the server will start on a free port.
    </description>
  </property>

  <property>
    <name>mapred.task.tracker.http.address</name>
    <value>localhost:33303</value>
    <description>
    The task tracker http server address and port.
    If the port is 0 then the server will start on a free port.
    </description>
  </property>

</configuration>

person Niels Basjes    schedule 23.08.2010    source источник


Ответы (1)


Да, это возможно, хотя я использую 0.19.2. Я не слишком знаком с 0.18.3, но уверен, что это не должно иметь значения.

Просто убедитесь, что для fs.default.name установлено значение по умолчанию (это file:///), а для mapred.job.tracker установлено значение, указывающее на то, где размещен ваш трекер вакансий. Затем запустите свои демоны с помощью bin / start-mapred.sh. Вам не нужно запускать namenode или datanodes. На этом этапе вы сможете запускать задания map / reduce, используя bin/hadoop jar ...

Мы использовали эту конфигурацию для запуска Hadoop в небольшом кластере машин с помощью устройства NetApp, смонтированного через NFS.

person bajafresh4life    schedule 23.08.2010
comment
Да спасибо. Это прекрасно работает. Я отправлю свою конфигурацию после того, как проведу дополнительное тестирование. - person Niels Basjes; 23.08.2010