• Save
Hadoop - OSC2010 Tokyo/Spring
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
8,136
On Slideshare
8,034
From Embeds
102
Number of Embeds
5

Actions

Shares
Downloads
0
Comments
0
Likes
20

Embeds 102

http://www.slideshare.net 90
http://www.linkedin.com 6
http://webcache.googleusercontent.com 4
http://static.slidesharecdn.com 1
https://www.linkedin.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Hadoop入門 オープンソースで作るGoogleのような分散処理基盤 2010年2月27日 山下 真一 shin1.ym あっと gmail OSC 2010 Tokyo/Spring
  • 2. アジェンダ Hadoopの基礎知識 どのあたりがGoogleのようなのか? Hadoopの使い方 どう使うのか? Hadoopを簡単に・・・ 手軽に使いたい! Hadoopのポイント 注意点とか応用とか 2 OSC 2010 Tokyo/Spring
  • 3. Hadoopの基礎知識 OSC 2010 Tokyo/Spring
  • 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. Hadoopを使っているところ Yahoo! Facebook Last.fm Amazon Veoh IBM VISA JP Morgan Chase 楽天 Baidu NTTデータ はてな China Mobile 5 OSC 2010 Tokyo/Spring
  • 6. Hadoopの特長 何日経っても終わらない バッチ処理 ・・・・・・・・ たくさんのデータ 短時間で終わらせられる! ・・・・・・・・ 6 OSC 2010 Tokyo/Spring
  • 7. Hadoopの特長 色々なデータ スケーラビリティ コモディティなサーバ 7 OSC 2010 Tokyo/Spring
  • 8. Hadoopの主な使い方 集計 ABC, 100点 ZZZ, 50点 XYZ, 90点 抽出 その他には・・・ 2月27日発売のゲーム ・○×ファンタジー 変換 ・クイズ☆?! ・▲□サッカー1X 分散ストレージ 分析 8 OSC 2010 Tokyo/Spring
  • 9. Hadoopの不向きなこと 少量データの扱い方 0'80'' ・・・ ×10000000 1KB リアルタイム処理 データの追記 × OSC 2010 Tokyo/Spring
  • 10. Hadoopの構成 Pig Hive ZooKeeper Sawzall Chubby MapReduce HBase MapReduce BigTable HDFS GFS Hadoop Google メインプロジェクト サブプロジェクト 10 OSC 2010 Tokyo/Spring
  • 11. HDFSイメージ 巨大なストレージ ファイル格納や取り出し HDFS Hadoopクライアント DataNode NameNode 11 OSC 2010 Tokyo/Spring
  • 12. HDFSの構成 DataNode ブロック ① ① ③ ② 状態監視 管理 Heartbeat ② ① ② メタ情報 管理 ③ ① ② ① NameNode (MASTER) ② ① ③ ① 3 1 2 ① ① ② ファイル ブロック Hadoopクライアント DataNode (HDFS上で保持) (SLAVE) 12 OSC 2010 Tokyo/Spring
  • 13. HDFSの異常時 × × DataNode ブロック ① ① ③ ② 状態監視 × ×× 管理 × × ② ① ② メタ情報 管理 ③ ① ② ① ② NameNode ② ① ③ ① ② HDFS停止 HDFS破壊 ① ① ① ② NameNode=単一障害点 レプリケーションの発生 DataNode DataNode=単体で故障しても大丈夫 13 OSC 2010 Tokyo/Spring
  • 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. HadoopでのMapReduceイメージ 巨大なストレージ 処理 MapReduceジョブの実行 HDFS 処理 Hadoopクライアント TaskTracker JobTracker 15 OSC 2010 Tokyo/Spring
  • 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. 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. 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. Hadoopの使い方 OSC 2010 Tokyo/Spring
  • 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. 手軽に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. Hadoop操作方法 コマンドラインによる操作 HDFS ファイル投入(put) ファイル取り出し(get) ファイル操作(cp, mv, rm) 権限操作(chmod, chown) ディレクトリ操作(mkdir, rmr) ファイルシステムチェック(fsck) など MapReduce ジョブ投入 ジョブ優先度設定 ジョブリスト ジョブ停止 など 22 OSC 2010 Tokyo/Spring
  • 23. Hadoopの状態確認 Webインタフェースから状況を確認可能 HDFS http://[NameNode Address]:50070/ HDFS上のファイル情報 HDFS状態(容量、使用量、DataNodeの数や状態) MapReduce http://[JobTracker Address]:50030/ ジョブ実行状況の確認 ジョブ実行履歴・分析 23 OSC 2010 Tokyo/Spring
  • 24. Hadoopでの MapReduceアプリケーション作成 MapReduceジョブ定義クラス 入力・出力ファイルのパス、ジョブ名、ジョブ各種設定 データ型クラス 処理内で扱うデータ型の定義 入力フォーマットクラス 入力フォーマッタの定義 Mapクラス Map処理の定義 Partitonerクラス Shuffle処理への定義 Groupingクラス Shuffle処理への定義 Reduceクラス Reduce処理の定義 出力フォーマットクラス 出力フォーマッタの定義 24 OSC 2010 Tokyo/Spring
  • 25. MapReduceジョブのデモ Hadoop付属のMapReduceサンプルを実行 WordCount PiEstimator ファイル内の モンテカルロ法での円周率計算 単語を抽出・集計 TeraSort Grep データの並び替え データ抽出 25 OSC 2010 Tokyo/Spring
  • 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. Hadoopを簡単に使うために OSC 2010 Tokyo/Spring
  • 28. HadoopのMapReduceの特徴 Javaによる記述 記述量は10数行~数百行 Javaわかんない、、、 好きな言語で記述したい、、、 Perl Python Hadoop Streaming Ruby Shell Script Map用、Reduce用のスクリプトやコマンドで実現 28 OSC 2010 Tokyo/Spring
  • 29. MapReduceを意識しないツール MapReduceラッパ的なツールをあります! Pig Pig Latin を記述することでMapReduceを実行 Yahoo! 内では30%~の処理はPigで実行 Hive どちらも数行程度で HiveQLと呼ばれるSQLに似た言語で MapReduceを実行 MapReduceを実行できる! Facebook 内では大半の処理をHiveで実行 29 OSC 2010 Tokyo/Spring
  • 30. PigやHiveの良い点 MapReduceの実装を意識しなくても良い! JOINとか、、、 コーディング知識とか、、、 最適なジョブ実行計画を作成 個別関数の組み込み 足りない機能は容易に追加可能 思い立ったら即実行! 30 OSC 2010 Tokyo/Spring
  • 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. Hadoopの注意点 OSC 2010 Tokyo/Spring
  • 33. 注意点その1:ログ とにかくログがたくさん出ます! MapReduceジョブ、、、 NameNode JobTracker ブロック情報、HDFS操作、、、 DataNode TaskTracker Taskの進捗状況、、、 実行したTaskごとに出力 MapTask ReduceTask 実行したTaskごとに出力 ログ格納領域はHadoopとは別に用意したほうがいいでしょう 33 Chukwa OSC 2010 Tokyo/Spring
  • 34. 注意点その2:メモリ 案外メモリも消費します! NameNode JobTracker 1ファイル≒200Byte、、、 入力データ、Task情報 TaskTracker 1つのTaskにつき200MB(デフォルト) MapTask ReduceTask 34 OSC 2010 Tokyo/Spring
  • 35. その他に、、、 OSC 2010 Tokyo/Spring
  • 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. Hadoopユーザ会 待望のHadoopユーザ会が 発足しました! http://groups.google.co.jp/group/hadoop-jp 37 OSC 2010 Tokyo/Spring
  • 38. まとめ ● Hadoop: OSSで構築するGoogleのような処理基盤 HDFS MapReduce ● 大規模なデータを簡単な記述で処理できる Javaでも数十行、PigやHiveならもっと簡単に! ● いろんなデータを”とりあえず”分析しましょう! 38 OSC 2010 Tokyo/Spring