問題タブ [distributed-cache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
hadoop - Hadoop 分散キャッシュ: ファイルが見つからない例外
MapReduce に K-means を実装しようとしています。初期重心ファイルを分散キャッシュにアップロードしました
ドライバークラスで
私のマッパークラスでは
$HADOOP_HOME/logs/ の出力は
私がする時
何が問題なのですか?
eclipse - configure() は、Hadoop クラスターでの実行時には呼び出されませんが、Eclipse では呼び出すことができます。DistributedCache FIleNotFoundException
私のプログラムは DistributedCache を使用してファイルをキャッシュします
ファイルを取得します
プログラム全体を実行して、Eclipse で正しい結果を得ることができます。しかし、Hadoop クラスターで実行すると、この部分が呼び出されないことがわかりました。なぜこれが起こるのですか?構成で何かを設定する必要がありますか?
java - TreeSet を Hadoop DistributedCache に保存する
Hadoop の map-reduce ジョブで使用するためTreeSet
にを に保存しようとしています。DistributedCache
これまでのところ、HDFS から にファイルを追加するための次の方法がありますDistributedCache
。
DistributedCache に追加するこのファイルに (このクラスで既に作成した) TreeSet を効率的に追加するにはどうすればよいですか? Javaのネイティブシリアライゼーションを使用して、これを何らかの方法でファイルにシリアライズする必要がありますか?
TreeSet は、map-reduce ジョブを開始するメイン クラスで一度構築されることに注意してください。TreeSet が変更されることはありません。すべてのマッパーがこの TreeSet に読み取り専用でアクセスできるようにし、何度も再構築する必要がないようにしたいだけです。
hadoop - 分散キャッシュに保存されていないファイル
DistributedCache を使用しています。ただし、コードの実行後、キャッシュにはファイルがありません。他の同様の質問を参照しましたが、回答で問題が解決しません。
以下のコードを見つけてください。
これはnullを与えます..
したがって、マッパー内で同じことを指定すると、null も返されます。あなたの提案を教えてください。
ありがとう
hadoop - hadoop DistributedCache が null を返す
Hadoop DistributedCache を使用していますが、いくつか問題が発生しました。私の Hadoop は疑似分散モードです。
ここから、疑似分散モードで DistributedCache.getLocalCache(xx) を使用してキャッシュされたファイルを取得することがわかります。
まず、ファイルを DistributedCache に入れます。
その後、マッパー setup() で取得しますが、DistributedCache.getLocalCache
null を返します。キャッシュされたファイルを介して表示できます
System.out.println("Cache: "+context.getConfiguration().get("mapred.cache.files"));
そしてそれは印刷されます:
hdfs://localhost:8022/user/administrator/myfile
ここに私の疑似コードがあります:
タイプセッティングが下手でごめんなさい。誰か助けてください....
ところで、私は使用してURIを取得できます
URI[] uris = DistributedCache.getCacheFiles(context
.getConfiguration());
uris の戻り値: hdfs://localhost:8022/user/administrator/myfile
uriから読み込もうとすると、ファイルが見つからないという例外でエラーが発生します。
hadoop - Hadoop - 分散キャッシュ内の大きなファイル
分散キャッシュを介してすべてのマッパーで共有しようとしている 4 GB のファイルがあります。しかし、マップ タスクの試行の開始に大幅な遅延が見られます。具体的には、(job.waitForCompletion() を介して) ジョブを送信してから最初のマップが開始されるまでの間に大幅な遅延があります。
DistributedCache に大きなファイルがある場合の副作用について知りたいです。分散キャッシュ上のファイルは何回レプリケートされますか? クラスタ内のノード数はこれに影響しますか?
(私のクラスターには、各マシンが 10 近くのマップ スロットをホストできる非常に強力なマシンで実行されている約 13 のノードがあります。)
ありがとう
caching - spring memcached アノテーションに関する singlecache、multicache、assigncache の違い
私は Simple Spring Memcached を理解しようとしていますが、以下に記載されていることに固執しています。
違いは何ですか:
- @ReadThroughSingleCache、@ReadThroughMultiCache、および @ReadThroughAssignCache
- @UpdateSingleCache、@UpdateMultiCache、および @UpdateAssignCache
- @InvalidateSingleCache、@InvalidateMultiCache、および @InvalidateAssignCache
また、更新はどのように機能しますか。特定のキーを使用して名前空間を更新すると、同じ名前空間内で同じキーを使用してすべての read*cache メソッドが実行されますか。はいの場合、複数のサーバー アプリケーションで機能します。
たとえば、特定のシナリオでは、ユーザーのポイント (何か) がキャッシュされます アプリケーション 1
別のアプリケーション (バックグラウンド スケジューラの可能性があります) からの別のシナリオでは、次のメソッドが呼び出されます: アプリケーション 2
私の質問は、namespace("userPoints") が最初に 50 ポイントとして userId("1234") のキャッシュ エントリを持っていて、更新メソッドが ("1234",100) で呼び出された場合、キャッシュはどのようにしてそのロジックを知るのでしょうか? 「1234」のエントリは、100 ポイントで更新する必要があります。
戻り値を使用して古い値で更新する必要があります(戻り値の型を変更する必要があります)。または、更新が「ライトスルー」の場合は、読み取りメソッドを db ルックアップの直接ロジックで呼び出してから更新する必要があります。キャッシュ...しかし、アプリケーション2はアプリケーション1に更新をどのように通知しますか。
hadoop - Hadoop 分散キャッシュ内のファイルを再利用する
分散キャッシュが Hadoop でどのように機能するかを誰かが説明できるかどうか疑問に思っています。ジョブを何度も実行していますが、実行するたびに、各ノードのローカル分散キャッシュ フォルダーのサイズが大きくなっていることに気付きました。
複数のジョブが分散キャッシュ内の同じファイルを再利用する方法はありますか? それとも、分散キャッシュは個々のジョブの存続期間中のみ有効ですか?
私が混乱している理由は、Hadoop のドキュメントに「DistributedCache はキャッシュ ファイルの変更タイムスタンプを追跡する」と記載されているため、タイム スタンプが変更されていない場合は、再キャッシュまたは再キャッシュする必要はないと思われるからです。 -ファイルをノードにコピーします。
以下を使用して、分散キャッシュにファイルを正常に追加しています。