Можно ли запустить Hadoop в режиме псевдораспределения без HDFS? - PullRequest
8 голосов
/ 23 августа 2010

Я изучаю варианты запуска приложения 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>

1 Ответ

6 голосов
/ 23 августа 2010

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

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

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

...