1

レデューサー1のメモリーにファイルAを、レデューサー2のメモリーにファイルBを保持したい。これは、Hadoopで分散キャッシュテクノロジーを使用して可能ですか?または、これを達成する他の方法はありますか?

ありがとう

4

2 に答える 2

1

はい、ファイルがかなり小さい場合は、これらのファイルを分散キャッシュに設定できます。このリンクhttp://developer.yahoo.com/hadoop/tutorial/module5.html#auxdataに従ってください。それはあなたに役立つかもしれません。

そして、コードのこの部分を考えると、どのファイルをどのレデューサーで処理するか次第です。

Path [] cacheFiles = DistributedCache.getLocalCacheFiles(conf);
      if (null != cacheFiles && cacheFiles.length > 0) {
        for (Path cachePath : cacheFiles) {
          if (cachePath.getName().equals(stopwordCacheName)) {
            loadStopWords(cachePath);
            break;
          }
        }

それが役立つかどうかを確認してください

于 2012-09-24T02:23:39.070 に答える
0

問題 (および Hadoop の根本的な問題) は、タスク トラッカーがタスクごとに新しい JVM プロセスを起動し、メモリ内キャッシュの利点を無効にすることです。タスク トラッカーを同じ VM で実行するように構成できますが、多くの Hadoop 内部で System.exit() を使用し、非常に多くの Hadoop ジョブも使用されています。このような構成は無意味です。

GridGain クラスターを Hadoop クラスターと一緒に共同展開し、同じ物理ホスト (GridGain と Hadoop のタスク トラッカー JVM) 上の 2 つの JVM 間のクイック ループバック接続を介してメモリ内キャッシュに GridGain を使用できます。これは、いくつかのクライアントによって行われます。 .

于 2012-09-24T03:59:10.800 に答える