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