読書ノート-Hadoop実戦-5

2877 ワード

注:以前MapReduceプログラムを書いたことがありますので、HadoopとMapReduceのプログラムについていくつか知っています.今は「Hadoop実戦」という本を読んでいます.ここでは主に自分の役に立つ点をメモしています.本の中のすべてのポイントをカバーすることはできません.MapReduce入門を勉強したい方は、時間を無駄にしないように気をつけてください.
ここはいいと思ういくつかの入門文です.
http://www.cnblogs.com/forfuture1978/category/300670.html
http://blog.csdn.net/aidayei/article/details/6580277
http://www.cnblogs.com/mdyang/category/307547.html
http://www.cnblogs.com/wycg1984/category/238035.html
 -----------------------------------------------------------敵味方分割線------------------------------------
 
回帰テスト:古いコードを修正した後、新たなエラーがないようにテストを行います.変更前後の二つのプログラムの出力を比較して、違いを通して論理が正しいかどうかを確認します.比較プロセスは、diffツール(コマンド)を使用することができます.
一年生のJava授業の時、その先生はデータのタイプを話してから、選択しにくいなら、整形はよくintを選んで、浮動小数点は普通doubleを選んで、ここの本ではlong(longwritable)タイプを優先的に使うと言いました.hadoopが直面する環境は大規模なデータ処理ですから.これはまだ慣れていません.
hadoopは擬似分布モードにおいて、JavaプログラムのSystem.outとSystem.errが出力した内容はファイルstdoutとstderに保存されます.これらの情報はデバッグに使用できます.また、プログラムではReportクラスのset Status()方法(mapとreduce関数のいずれかにReportパラメータがあります)を使ってリアルタイム状態情報を転送することができます.
カウンタを使う:
プログラマは、作業中にカウンターを挿入して全体の運転を分析することができます.プログラムには異なるカウンタを定義し、それぞれの時間の発生回数を積算します.同じ作業からの全てのタスクの同じカウンターに対して、Hadoopは自動的に加算されます.
プログラムの例:
static enum CounterType { EVENT_A, EVENT_B}; public void map(K k, V v,OutputCollector<T1,T2> output,Report r){ if(testValueA(v)){ r.incrCounter(CounterType.EVENT_A, 1); } if(testValueB(v)){ r.incrCounter(CounterType.EVENT_B, 1); } }
 
典型的なアプリケーションは、異なる入力記録タイプ、特に悪い記録を追跡するために使用される.
悪いレコードをスキップ:
データに悪い記録があると、これらの悪い記録が作業の実行に影響を与えたくないので、悪い記録をスキップするように設定できます.skyipping機構はHadoop 0.19でサポートされています.この特性はデフォルトで閉じられています.この特性を開くと、Hadoopはタスクが2回失効した後にskypingモードに入り、スキップされた悪い記録をHFSに記録して、プログラマの後の分析に役立てる.skyippingの設定はSkipBadRecordが担当しています.
Isolation Runner:
Isolation Runnerツールは、プログラマが失敗したタスクを隔離し、同じノードで完全に同じ入力データで再実行することを可能にし、また、試聴器を追加して、実行情報を収集することができる.
推測実行:
Hadoopは、実行の遅いタスクに注目し、他のノードで同じタスクを並行して実行するように手配します.これらの並行して実行するタスクは、一つの完成があれば大丈夫です.