WDD2012_SC-004

580 views

Published on

Windows Developer Daysで使ったHadoop on Windows (Server|Azure)紹介資料です。「設計・実装・活用法」というタイトルとは裏腹にただの概要紹介になってしまったので、もう少しましなものを作りたいと思っています・・・

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
580
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

WDD2012_SC-004

  1. 1. SC-004
  2. 2. 膨大なデータを 多数のサーバーで短時間で処理 分散処理 高スケーラビリティ Google の論文が Yahoo や Facebook 契機となって誕生! で使われている
  3. 3. Hadoop(今日の主役)
  4. 4. グラフィカルな ヒートマップなど コマンドラインと 管理機能 管理・監視機能が充実 シンプルな Web 画面 CLI / GUI / Web UI MPI / SOA / その他 任意のプログラムを プログラミングモデル MapReduce 利用可能 標準装備 ジョブスケジューラー 標準装備Windows のファイル共有や、 サードパーティ製の 分散ファイルシステム HDFSクラスターファイルシステム
  5. 5. 分散ファイルシステムを 自前で備えているプログラミングモデルが 規定されている
  6. 6. 2012-04-24 01:02:03 W3SVC1 192.168.0.1 GET /…my %rpm; # 結果を格納するハッシュテーブルwhile(<>) { next unless /^d{4}/; my $time = substr($_,0,16); $rpm{$time}++;}my @sorted_keys = sort keys %rpm;foreach my $k (@sorted_keys) { print "$k $rpm{$k}n";}
  7. 7. 入力データを分割して複数のプログラムに配る2012-04-24 01:02:03 W3SVC1 192.168.0.1 GET/… 2012-04-24 01:03:05 W3SVC1 192.168.0.1 GET/… 2012-04-24 01:04:06 W3SVC1 192.168.0.1 GET/…while(<>) { while(<>) { while(<>) { next unless /^d{4}/; next unless /^d{4}/; next unless /^d{4}/; my $time = substr($_,0,16); my $time = substr($_,0,16); my $time = substr($_,0,16); $rpm{$time}++; $rpm{$time}++; $rpm{$time}++;} } } それぞれのプログラムは与えられた 他の仲間が何をやっているか データを淡々と処理 気にする必要はない Map my @sorted_keys = sort keys %rpm; 結果の断片をソートする foreach my $k (@sorted_keys) { foreach my $k (@sorted_keys) { Reduce print "$k $rpm{$k}n"; print "$k $rpm{$k}n"; } } キーでソート済みであることが保証されているので、 淡々と結果出力をすればよい
  8. 8. while(<>) { while(<>) { while(<>) { next unless /^d{4}/; next unless /^d{4}/; next unless /^d{4}/; my $time = substr($_,0,16); my $time = substr($_,0,16); my $time = substr($_,0,16); $rpm{$time}++; $rpm{$time}++; $rpm{$time}++;} } }
  9. 9. UNIX 環境に依存している Bash スクリプトの Java プログラム内の 部分を Windows 対応 cmd 移植 UNIX 依存部分を調整 JavaScript コンソール Windows 環境向けの Hive ODBC ドライバ 新機能追加 Windows Azure ストレージへの対応
  10. 10. Windows 用に移植されたスクリプト群bin/ bash の呼び出し部分に hadoop- config.cmd Windows 判定ロジックを追加 hadoop.cmd hdfs.cmd mapred.cmd start-master.cmd start-slave.cmd stop-master.cmd stop-slave.cmdconf/ hadoop-env.cmd
  11. 11. 主要な関連プロジェクト Pegasus ZooKeeper
  12. 12.  HDFS に対して SQL 的な言語 (Hive QL) でクエリを発行できる。 MapReduce の複雑さを隠蔽し RDB ユーザーが直感的に Hadoop を活用できるようになる。 こちらも HDFS に対する上位レイヤで、大規模なデータセットの 探索を容易にする仕組み “Pig Latin” というスクリプト言語で処理を記述すると、 Pig がそれを MapReduce ジョブに変換して実行してくれる。
  13. 13. Windows Server 版 Windows Azure 版 Windows Azure 版 (オンプレミス) その 1 - 「自前クラスター」 その 2 – “Elastic MapReduce” Windows Azure の Windows Server に クラスターの詳細を意識せず 既存サブスクリプションにHadoop をインストールして MapReduce プログラムだけを Hadoop クラスターを クラスターを構築する方式 デプロイして利用する方式 デプロイする方式
  14. 14. 通常の Windows Azure 管理ポータルとは別の専用サイト
  15. 15. “#コマンド” で、FS Shell のコマンドを呼び出せます。“#lsr” は ”hadoop fs –lsr” に相当します。“#fs.get” で HDFS 上のファイルをローカルコンピューターへダウンロードできます
  16. 16. Hive に対する操作を Web ブラウザから行えます クエリの結果と、実行された Map-Reduce ジョブに関する情報が、ここに表示されます。ここにHQLを入力します。
  17. 17. options.orientation = 45; graph.bar(wordCounts, options);graph.pie(wordCounts, options);
  18. 18. Windows 環境のアプリケーションに対して Hadoop の分散ファイルシステムへのアクセスを提供 Action<string> processDirectory = null; マネージド DLL processDirectory = (looppath) =>(.NET 系の各種言語で利用可能) { using (HdfsFileInfoEntries entries = hdfsSystem.ListDirectory(looppath)) { ネイティブ DLL foreach (HdfsFileInfoEntry entry in entries.Entries) (UNIX系の libhdfs に相当) { string kind = entry.Kind == HdfsFileInfoEntryKind.Directory ? “Directory” : “tFile”; Console.WriteLine(string.Format(@”{0}:”"{1}”", Modified/Accessed:”"{2:G}, {3:G}”", Owner:”"{4}”"” , kind, entry.Name, entry.LastModified, entry.LastAccessed, entry.Owner)); if (entry.Kind == HdfsFileInfoEntryKind.Directory) { processDirectory(entry.Name); } } } C# でディレクトリの一覧を取得するコード例 };
  19. 19. セカンダリネームノードで作成されるチェックポイントファイルを Windows Azure Storage へ転送して障害に備える機能ですプライマリ ネームノード セカンダリ ネームノード Windows Azure BLOB edits fsimage edits fsimage マージ fsimage.ckpt fsimage.ckpt 転送 転送 fsimage.ckpt
  20. 20. インストール Excel 用 Hive プラグインポート設定
  21. 21.  単に移植しただけではなく、JavaScript での MapReduce ジョブ作成や、 Windows Azure Storage との連携など様々な工夫がされています。

×