ローカルシステムでHadoopアプリケーションを実行するためのオプションを検討しています。
多くのアプリケーションと同様に、利用可能なすべてのCPUコアを使用できる限り、最初のいくつかのリリースは単一ノードで実行できるはずです(はい、これはこの質問に関連しています)。現在の制限は、本番システムにはJava 1.5があるため、最新リリースとしてHadoop 0.18.3にバインドされていることです(この質問を参照してください)。そのため、残念ながら、この新機能はまだ使用できません。
最初のオプションは、単純にhadoopを疑似分散モードで実行することです。基本的に:すべてが正確に1つのノードで実行されている完全なHadoopクラスターを作成します。
このフォームの「欠点」は、本格的なHDFSも使用することです。これは、入力データを処理するために、これを最初にローカルに保存されているDFS...に「アップロード」する必要があることを意味します。したがって、これには入力データと出力データの両方の追加の転送時間がかかり、追加のディスク領域が使用されます。単一ノード構成のままでいる間は、これらの両方を避けたいと思います。
だから私は考えていました:「fs.hdfs.impl」設定をオーバーライドして、「org.apache.hadoop.dfs.DistributedFileSystem」から(たとえば)「org.apache.hadoop.fs.LocalFileSystem」に変更することは可能ですか? ?
これが機能する場合、「ローカル」Hadoopクラスター(1つのノードのみで構成できます)は、追加のストレージ要件なしで既存のファイルを使用でき、ファイルをアップロードする必要がないため、より迅速に起動できます。私はまだジョブとタスクトラッカー、そしておそらく全体を制御するためのネームノードを持っていることを期待しています。
誰かがこれを以前に試したことがありますか?それは機能しますか、それともこのアイデアは意図された用途から大きく外れていますか?
または、同じ効果を得るより良い方法があります:HDFSなしの疑似分散操作?
あなたの洞察に感謝します。
編集2:
これは、bajafresh4lifeによって提供された回答を使用してhadoop 0.18.3 conf/hadoop-site.xml用に作成した構成です。
<?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>