1.MapReduce定義されました
MapReduceのプログラミングフレームワークは、分散コンピューティングプログラムは、コアフレームワークは、ユーザデータのHadoop分析アプリケーションに基づいて開発されています。
MapReduceのコア機能は、Hadoopクラスタ上で同時に実行し、ビジネスロジックと完全な分散コンピューティングプログラムにデフォルトのコンポーネントが付属して、ユーザーが書いたコードを統合することです。
2.MapReduce長所と短所
2.1利点
2.1.1簡単にプログラムへ
これは、いくつかのインターフェイスを実装するのは簡単です、あなたが分散プログラムを完了することができ、このプログラムが実行されている分散型低コストのPCの多数のマシンに配布することができ、あなたが分散プログラムを書くと言うことです、簡単なシリアルプログラムで記述されたがまったく同じですの;ので、この機能のはMapReduceのプログラミングは非常に人気となっています
2.1.2良いスケーラビリティ
お使いのコンピューティングリソースを満たすことができない場合、あなたは単にマシンを増やすことによって、その計算能力を拡張することができます。
2.1.3高フォールトトレランス。
MapReduceのは、もともとプログラムは高い耐障害性を有することを必要とする安価なPCマシン上に展開することができるように設計され、吊りは、それが別のノード上で実行されている上にコンピューティングタスクに転送されることができるような機械、このタスクは失敗しませんが、このプロセスは、人間の介入を必要とせず、完全に完成した内部Hadoopのです。
マスデータPBおよび上記2.1.4オフライン処理
サーバークラスタは、データ処理能力を提供し、同時作業の数千人を達成することができます。
2.2の欠点
2.2.1リアルタイムシステムが得意ではありません
ないとしてMySQLへのMapReduce、ミリ秒または秒ステージ内の結果を返します。
2.2.2ない良好な流動計算。
その設計は、MapReduceのデータソースは静的である必要があり判断備えているため、これは、計算動的が、入力データ・セットのMapReduceがない動的変化静的で入力データストリーム。
2.2.3ないDAG(有向グラフ)で良いが算出されます
アプリケーション依存の複数の、前回の出力に入力のアプリケーション、この場合、MapReduceはないではないが、使用後、それぞれのMapReduceジョブの出力は、ディスクに書き込まれます。ディスクIOの多くの原因となる、パフォーマンスが得られことは非常に低いです。
3.MapReduceの核となるアイデア
3.1分散コンピューティングプログラムは、多くの場合、少なくとも2つの段階に分割する必要があります。
完全に並列に実行3.2 MapTask第一段階同時インスタンス、互いに独立。
3.3 reduceTask第二相同時インスタンス無関係が、そのデータは、すべての同時インスタンスの出力の位相に依存しているmaptask。
3.4のMapReduceプログラミングモデルは、1つのマップのみの相を含むとビジネスロジックは非常にユーザー負荷であれば、位相を減らすことができ、それができる唯一の複数のMapReduceプログラム、シリアル実行。
4.MapReduceプロセス
MapReduceの中に完全なプログラムは、プロセスの三つの例があり、ランタイム配布さ:
4.1 MrAppMaster:プログラムのスケジュールと状態の調整のプロセス全体を担当します。
4.2 MapTask:プロセスフローの全体のデータマップ相を担います。
4.3 ReduceTask:プロセス全体の責任のステージを処理したデータを減らします。
シーケンス一般的なデータ型
6.MapReduceプログラミング仕様
6.1マッパー段階
マッパー6.1.1ユーザー定義の親を継承します。
6.1.2マッパー入力データは、KVの形態です。
マップ内6.1.3マッパービジネスロジック(メソッド)
6.1.4マッパー出力データは、KVの形態です。
6.1.5地図()メソッドは、KVのそれぞれに対して一度呼び出されます。
6.2減速段階
彼らの親を継承する6.2.1ユーザ定義の減速;
6.2.2減速入力マッパー出力データ型の種類に対応したデータだけでなく、KV。
低減()メソッド内のロジックの6.2.3減速。
KのKVグループ呼の各セット方法6.2.4 reducetask同じプロセスが一度(減らします)。
6.3 Driver 阶段
6.3.1 用户自定义的mapper和reducer都要继承各自的父类;
6.3.2 整个程序需要一个Drvier来进行提交,提交的是一个描述了各种必要信息的JOB对象;