Можно ли запустить 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>
8
задан Community 23 May 2017 в 11:53
поделиться

1 ответ

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

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

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

6
ответ дан 5 December 2019 в 22:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: