Googleのネクサスでmapreduceを正常に実行したことがあると聞いたことがあります。アンドロイド上で完全にクラスタ化されたmapreduceを実行するパフォーマンスに関する情報はありません。携帯端末でmapreduceを実行中
私は実際にマップされていないデータをクラスタ化されていない比較的少量のデータで自分の携帯電話で実行したいのですが、それは本当にハープを使う価値がありますか?削除されたバージョンはどこにでもありますか?任意の選択肢?
Googleのネクサスでmapreduceを正常に実行したことがあると聞いたことがあります。アンドロイド上で完全にクラスタ化されたmapreduceを実行するパフォーマンスに関する情報はありません。携帯端末でmapreduceを実行中
私は実際にマップされていないデータをクラスタ化されていない比較的少量のデータで自分の携帯電話で実行したいのですが、それは本当にハープを使う価値がありますか?削除されたバージョンはどこにでもありますか?任意の選択肢?
map reduceのようなプロセスを使用することの全ポイントは、複数のコンピュータ間でワークロードを分割することです。同時に、現在のコンピュータでは同時実行が不可能になります。複数のAndroidデバイスを連携させる計画がない場合、hadoopのようなものを使う必要はほとんどありません。
デバイス上のすべてのデータを読み込むことができる場合(これはあなたができることです)。パラレルでアルゴリズムを実行するのに最も近いのは、複数のスレッドを使用してデータを分割することです。並列プログラミングのメリットを得るために、マップを減らすスタイルのプログラミングを行う必要はなく、単にプロデューサ/コンシューマモデルとしてアルゴリズムを開発する方が簡単かもしれません。しかし、もしあなたがただそれを持っていなければ、それをやる方法があります。
2つのBlockingQueues(インキューとアウトキュー)とファイル(プロデューサ)からデータを読み込むスレッドから始めます。インキューから読み取り、アウトキューに書き込むスレッドプールを作成します。各スレッドは、入力の1つ(すなわち、コンシューマ)の計算を行い、その結果をアウトキューにポストして、プロデューサが結果を受け取るようにする。インキューとアウトキューを1回通過すると、マップ削減プロセスの半分が実行されます。これは一般にプロデューサ/コンシューマと呼ばれます。あなたはそのスタイルのアーキテクチャだけで多くを行うことができます。
完全なmap-reduceを実行する場合は、プロセスを繰り返して、reduceステップを並行して実行します。プロデューサーは、キーを使用してすべての結果をマップステップから収集し、バックアウトをインキューにフィードします。各コンシューマはreduceステップを実行し、その結果をout-queueにポストします。ここでプロデューサは最終ソートを実行し、結果をUIに提示します。
したがって生産のための完全な状態遷移は次のようになります
消費者の状態遷移は次のようになります。
アンドロイドのヴィオラマップを減らすスタイルフレームワーク。