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