Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

Hadoop - OSC2010 Tokyo/Spring

7.079 Aufrufe

Veröffentlicht am

"Hadoop - OSC2010 Tokyo/Spring "

Veröffentlicht in: Technologie, Bildung
  • Als Erste(r) kommentieren

Hadoop - OSC2010 Tokyo/Spring

  1. 1. Hadoop入門 オープンソースで作るGoogleのような分散処理基盤 2010年2月27日 山下 真一 shin1.ym あっと gmail OSC 2010 Tokyo/Spring
  2. 2. アジェンダ Hadoopの基礎知識 どのあたりがGoogleのようなのか? Hadoopの使い方 どう使うのか? Hadoopを簡単に・・・ 手軽に使いたい! Hadoopのポイント 注意点とか応用とか 2 OSC 2010 Tokyo/Spring
  3. 3. Hadoopの基礎知識 OSC 2010 Tokyo/Spring
  4. 4. Hadoopとは? Googleの分散処理システムのOSS版 GFS HDFS (Hadoop Distributed File System) MapReduce MapReduce Framework http://hadoop.apache.org/common/ Apache Projectで開発中 Javaで記述 Yahoo!版 Apache 2.0 ライセンス リリース最新版0.20.2, 開発版0.21~ Cloudera版 4 OSC 2010 Tokyo/Spring
  5. 5. Hadoopを使っているところ Yahoo! Facebook Last.fm Amazon Veoh IBM VISA JP Morgan Chase 楽天 Baidu NTTデータ はてな China Mobile 5 OSC 2010 Tokyo/Spring
  6. 6. Hadoopの特長 何日経っても終わらない バッチ処理 ・・・・・・・・ たくさんのデータ 短時間で終わらせられる! ・・・・・・・・ 6 OSC 2010 Tokyo/Spring
  7. 7. Hadoopの特長 色々なデータ スケーラビリティ コモディティなサーバ 7 OSC 2010 Tokyo/Spring
  8. 8. Hadoopの主な使い方 集計 ABC, 100点 ZZZ, 50点 XYZ, 90点 抽出 その他には・・・ 2月27日発売のゲーム ・○×ファンタジー 変換 ・クイズ☆?! ・▲□サッカー1X 分散ストレージ 分析 8 OSC 2010 Tokyo/Spring
  9. 9. Hadoopの不向きなこと 少量データの扱い方 0'80'' ・・・ ×10000000 1KB リアルタイム処理 データの追記 × OSC 2010 Tokyo/Spring
  10. 10. Hadoopの構成 Pig Hive ZooKeeper Sawzall Chubby MapReduce HBase MapReduce BigTable HDFS GFS Hadoop Google メインプロジェクト サブプロジェクト 10 OSC 2010 Tokyo/Spring
  11. 11. HDFSイメージ 巨大なストレージ ファイル格納や取り出し HDFS Hadoopクライアント DataNode NameNode 11 OSC 2010 Tokyo/Spring
  12. 12. HDFSの構成 DataNode ブロック ① ① ③ ② 状態監視 管理 Heartbeat ② ① ② メタ情報 管理 ③ ① ② ① NameNode (MASTER) ② ① ③ ① 3 1 2 ① ① ② ファイル ブロック Hadoopクライアント DataNode (HDFS上で保持) (SLAVE) 12 OSC 2010 Tokyo/Spring
  13. 13. HDFSの異常時 × × DataNode ブロック ① ① ③ ② 状態監視 × ×× 管理 × × ② ① ② メタ情報 管理 ③ ① ② ① ② NameNode ② ① ③ ① ② HDFS停止 HDFS破壊 ① ① ① ② NameNode=単一障害点 レプリケーションの発生 DataNode DataNode=単体で故障しても大丈夫 13 OSC 2010 Tokyo/Spring
  14. 14. MapReduceの流れ This is a pen. <Pen,1> I played tennis. <Tennis,1> ・・・ <This,1> <Pen: [1, 1, 1]> ・・・ <This: [1, 1]> Map <Pen, 3> Reduce <This, 2> ・・・ Map Reduce Shuffle ・・・ Map Keyで集約 <Key, Value>の形でデータを管理 14 OSC 2010 Tokyo/Spring
  15. 15. HadoopでのMapReduceイメージ 巨大なストレージ 処理 MapReduceジョブの実行 HDFS 処理 Hadoopクライアント TaskTracker JobTracker 15 OSC 2010 Tokyo/Spring
  16. 16. MapReduceの構成 MapReduceジョブ TaskTracker Map Map Reduce 管理 状態監視 タスク ① ① ③ ② 管理 Heartbeat JobTracker M R R (MASTER) R M M M NameNode M R MapReduceジョブ M R R TaskTracker タスク実行待ち Hadoopクライアント (SLAVE) タスク実行中 16 OSC 2010 Tokyo/Spring タスク実行(競争)中
  17. 17. MapReduce(TaskTracker)異常時 Map MapReduce JobTracker Heartbeat ① ① ③ ② (MASTER) M R R R M M M NameNode M R ×× MapReduceジョブ T R R TaskTracker タスク再割り当て Hadoopクライアント 17 OSC 2010 Tokyo/Spring
  18. 18. MapReduce(JobTracker)異常時 × × MapReduceジョブ × TaskTracker Map MapReduce 管理 状態監視 タスク ① ① ③ ② 管理 M M R JobTracker R M M R MapReduceジョブ・・・失敗 M R M R R TaskTracker Hadoopクライアント 18 OSC 2010 Tokyo/Spring
  19. 19. Hadoopの使い方 OSC 2010 Tokyo/Spring
  20. 20. Hadoopの動作条件 Linux JavaTM 1.6 Hadoop Windows + (Sun) + Core = (Cygwin) 試しに “localhost”上にNameNodeとDataNodeを起動させる方法 1. ダウンロードしたHadoopパッケージを展開、配置 2. 設定ファイルの確認 (./conf/core-site.xml, ./conf/hdfs-site.xml, ./conf/hadoop-env.sh) 3. NameNodeのフォーマット (./bin/hadoop namenode -format) 4. NameNode起動 (./bin/hadoop-daemon.sh start namenode) 5. DataNode起動 (./bin/hadoop-daemon.sh start datanode) 20 OSC 2010 Tokyo/Spring
  21. 21. 手軽にHadoopを使ってみたい方へ その1 Cloudera Hadoop Training VM http://www.cloudera.com/developers/downloads/virtual-machine/ その2 Amazon Elastic MapReduce http://aws.amazon.com/elasticmapreduce/ その3 Sun Grid Engine http://www.sun.com/software/sge/ 21 OSC 2010 Tokyo/Spring
  22. 22. Hadoop操作方法 コマンドラインによる操作 HDFS ファイル投入(put) ファイル取り出し(get) ファイル操作(cp, mv, rm) 権限操作(chmod, chown) ディレクトリ操作(mkdir, rmr) ファイルシステムチェック(fsck) など MapReduce ジョブ投入 ジョブ優先度設定 ジョブリスト ジョブ停止 など 22 OSC 2010 Tokyo/Spring
  23. 23. Hadoopの状態確認 Webインタフェースから状況を確認可能 HDFS http://[NameNode Address]:50070/ HDFS上のファイル情報 HDFS状態(容量、使用量、DataNodeの数や状態) MapReduce http://[JobTracker Address]:50030/ ジョブ実行状況の確認 ジョブ実行履歴・分析 23 OSC 2010 Tokyo/Spring
  24. 24. Hadoopでの MapReduceアプリケーション作成 MapReduceジョブ定義クラス 入力・出力ファイルのパス、ジョブ名、ジョブ各種設定 データ型クラス 処理内で扱うデータ型の定義 入力フォーマットクラス 入力フォーマッタの定義 Mapクラス Map処理の定義 Partitonerクラス Shuffle処理への定義 Groupingクラス Shuffle処理への定義 Reduceクラス Reduce処理の定義 出力フォーマットクラス 出力フォーマッタの定義 24 OSC 2010 Tokyo/Spring
  25. 25. MapReduceジョブのデモ Hadoop付属のMapReduceサンプルを実行 WordCount PiEstimator ファイル内の モンテカルロ法での円周率計算 単語を抽出・集計 TeraSort Grep データの並び替え データ抽出 25 OSC 2010 Tokyo/Spring
  26. 26. WordCountのソースコード public c la s s WordCount { public s tatic c la s s TokenizerMapper e x te nds Mapper<Object, Text, Text, IntWritable>{ public s tatic void main(String[] args) throw s Exception { Configuration conf = ne w Configuration(); private fina l s ta tic IntWritable one = ne w IntWritable(1); String[] otherArgs = private Text word = ne w Text();     ne w GenericOptionsParser(conf, args).getRemainingArgs(); public void map(Object key, Text value, Context context if (otherArgs.length != 2) { ) throw s IOException, InterruptedException { System.err.println("Usage: wordcount <in> <out>"); StringTokenizer itr = ne w System.exit(2); StringTokenizer(value.toString()); } w hile (itr.hasMoreTokens()) { Job job = ne w Job(conf, "word count"); word.set(itr.nextToken()); job.setJarByClass(WordCount.c la s s ); job.setMapperClass(TokenizerMapper.c la s s ); Map context.write(word, one); } job.setCombinerClass(IntSumReducer.c la s s ); } job.setReducerClass(IntSumReducer.c la s s ); } job.setOutputKeyClass(Text.c la s s ); public s tatic c la s s IntSumReducer job.setOutputValueClass(IntWritable.c la s s ); e x te nds Reducer<Text,IntWritable,Text,IntWritable> { FileInputFormat.addInputP ath(job, ne w Path(otherArgs[0])); private IntWritable result = ne w IntWritable(); FileOutputFormat.setO utputP ath(job, ne w Path(otherArgs[1])); System.exit(job.waitForCompletion(true ) ? 0 : 1); public void reduce(Text key, Iterable<IntWritable> values, } Context context } int sum = 0; ) throw s IOException, InterruptedException { Job for (IntWritable val : values) { sum += val.get(); } result.set(sum); Reduce 約50行 context.write(key, result); 26 } } OSC 2010 Tokyo/Spring
  27. 27. Hadoopを簡単に使うために OSC 2010 Tokyo/Spring
  28. 28. HadoopのMapReduceの特徴 Javaによる記述 記述量は10数行~数百行 Javaわかんない、、、 好きな言語で記述したい、、、 Perl Python Hadoop Streaming Ruby Shell Script Map用、Reduce用のスクリプトやコマンドで実現 28 OSC 2010 Tokyo/Spring
  29. 29. MapReduceを意識しないツール MapReduceラッパ的なツールをあります! Pig Pig Latin を記述することでMapReduceを実行 Yahoo! 内では30%~の処理はPigで実行 Hive どちらも数行程度で HiveQLと呼ばれるSQLに似た言語で MapReduceを実行 MapReduceを実行できる! Facebook 内では大半の処理をHiveで実行 29 OSC 2010 Tokyo/Spring
  30. 30. PigやHiveの良い点 MapReduceの実装を意識しなくても良い! JOINとか、、、 コーディング知識とか、、、 最適なジョブ実行計画を作成 個別関数の組み込み 足りない機能は容易に追加可能 思い立ったら即実行! 30 OSC 2010 Tokyo/Spring
  31. 31. WordCountをPigで書いたら、、、 Rawdata = LOAD '/tmp/' USING PigStorage(',') AS (row:chararray); Words = FOREACH Rawdata GENERATE FLATTEN (TOKENIZE((chararray)$0)); Grouped = GROUP Words BY $0; Counts = FOREACH Grouped GENERATE COUNT(Words), group; Ordered = ORDER Counts by $0 DESC; STORE Ordered INTO 'pig-wordcount'; 6行でWordCountを実現!!! 31 OSC 2010 Tokyo/Spring
  32. 32. Hadoopの注意点 OSC 2010 Tokyo/Spring
  33. 33. 注意点その1:ログ とにかくログがたくさん出ます! MapReduceジョブ、、、 NameNode JobTracker ブロック情報、HDFS操作、、、 DataNode TaskTracker Taskの進捗状況、、、 実行したTaskごとに出力 MapTask ReduceTask 実行したTaskごとに出力 ログ格納領域はHadoopとは別に用意したほうがいいでしょう 33 Chukwa OSC 2010 Tokyo/Spring
  34. 34. 注意点その2:メモリ 案外メモリも消費します! NameNode JobTracker 1ファイル≒200Byte、、、 入力データ、Task情報 TaskTracker 1つのTaskにつき200MB(デフォルト) MapTask ReduceTask 34 OSC 2010 Tokyo/Spring
  35. 35. その他に、、、 OSC 2010 Tokyo/Spring
  36. 36. その他のHadoop関連パッケージ Cascading Sqoop MapReduce処理支援 SQL to Hadoop Hadoop Spring Framework Spring Frameworkとの組み合わせ HadoopDB RDBMSとのハイブリット 少量データ、追記 HBase Mountable HDFS 分散Key-Valueストア HDFSをファイルシステム(ext3など)に マウント HyperTable 36 OSC 2010 Tokyo/Spring
  37. 37. Hadoopユーザ会 待望のHadoopユーザ会が 発足しました! http://groups.google.co.jp/group/hadoop-jp 37 OSC 2010 Tokyo/Spring
  38. 38. まとめ ● Hadoop: OSSで構築するGoogleのような処理基盤 HDFS MapReduce ● 大規模なデータを簡単な記述で処理できる Javaでも数十行、PigやHiveならもっと簡単に! ● いろんなデータを”とりあえず”分析しましょう! 38 OSC 2010 Tokyo/Spring

×