40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
67,448 views
Published on
■Hadoopの理解にちょっと自信のない皆さんに贈る
40分でわかるHadoop徹底入門
(Cloudera World Tokyo 2014 講演資料)
日本Hadoopユーザー会
濱野 賢一朗/Kenichiro Hamano (NTTデータ)
40分でわかるHadoop徹底入門 (Cloudera World Tokyo 2014 講演資料)
- 1. Hadoopの理解に ちょっと自信のない皆さんに贈る 40分でわかる Hadoop徹底入門 日本Hadoopユーザー会 濱野 賢一朗/Kenichiro Hamano (NTTデータ)
- 2. 自己紹介 濱野 賢一朗 (はまの けんいちろう) – 日本Hadoopユーザー会のメンバとして、 イベント Hadoop Conference Japan や 勉強会 Hadoopソースコードリーディング の企画・実施を担当 – 翔泳社 『Hadoop徹底入門』 監修者 – NTT DATA 基盤システム事業本部 OSSプロフェッショナルサービス に所属 – Hadoop 関係者で話題になった 「経産省の報告書」 の実証事業のPM 平成21年度 産学連携ソフトウェア工学実践事業報告書 高信頼クラウド実現用ソフトウェア開発(分散制御処理技術等に係るデータセンター高信頼化に向けた実証事業) http: //www.meti.go.jp/policy/mono_info_service/joho/downloadfiles/2010software_research/clou_dist_software.pdf
- 3. Hadoopを一言でいうと・・・ 並列分散処理を実現するミドルウェア 複数のIAサーバを束ねて、 ひとつの大きな処理システムとして利用 特に大量データの格納・処理に最適化 HDDは今でも実質は 80MB/sec 程度が限界 5TBのデータを読み込むのに 約 5*1000*1000 /80 = 62500秒 = 17.4時間 この問題を解決するために、並列分散処理を活用
- 4. 大量データの処理を実現するには データを複数のサーバに分割して格納 利用時には、複数のサーバから、 それぞれのデータを同時に読み込む HDDの台数分だけのスループットを確保 1台だと 80MB/sec 程度でも 1000台だと 80GB/sec のスループット 5TBのデータを読み込みも 62.5 秒で実現
- 5. Hadoopの構成 (従来) 大きく 2つのコンポーネントで構成 分散ファイルシステム HDFS Hadoop Distributed File System 並列分散処理フレームワーク MapReduce Framework アルゴリズム MapReduce を実現する どちらも Google が 発表した論文 のアイデアを 元に開発 されている
- 6. Hadoopの構成 (従来) 集中管理型の分散システム データ管理や 分散処理ジョブ の管理は マスタサーバが 実施 スレーブサーバは、 分散処理の 実行や データの実体を 保存 Hadoopマスタサーバ Hadoopクライアント L2/L3スイッチ NameNode JobTracker L2スイッチ Hadoopスレーブサーバ群 DataNode TaskTracker DataNode TaskTracker DataNode TaskTracker DataNode TaskTracker DataNode TaskTracker ディスク ディスク ディスク ディスク ディスク
- 7. 分散ファイルシステム HDFS NameNode (Master) DataNode (Slave) クライアント ② ③ ① ① ① ファイル Heartbeat メタ情報 管理 ブロック 管理 DataNode 状態監視 ブロックの 保存 1つのブロックを複数のDataNodeで保存 → 任意のDataNodeが故障してもデータを失わない ブロック ① ③ ③ ③ ② ② ②
- 8. MapReduce (アルゴリズム) 大量の件数のデータがあった時に、 複数ワーカーで 並列に処理できる仕組み 例として、選挙の開票作業を想定 – 複数人で作業を分担して実施 – 最初に、投票用紙を分けて、 みんなで並行して投票者別に用紙を仕分ける – 次に、投票者別の用紙を1カ所にまとめて、 それぞれの枚数を数える
- 9. MapReduce (アルゴリズム) Aさん Bさん Cさん ①用紙を適当に3つに分ける ・・ ・ ・・ ・ ・・ ・ a氏 b氏 e氏 a氏 b氏 e氏 a氏 b氏 e氏 ②3人で並行して、 投票者別に用紙を 仕分ける 第1段階 第2段階 第3段階 ④3人で並行して、 投票者ごとに 枚数を数える a氏の 得票数 b氏の 得票数 d氏の 得票数 e氏の 得票数 c氏の 得票数 投票 結果 Aさん Bさん Cさん a氏 e氏 ③投票者ごと 用紙を集める d氏 c氏 b氏
- 10. MapReduce (アルゴリズム) ・・ ・ ・・ ・ ・・ ・ Aさん Bさん Cさん a氏 b氏 E氏 a氏 b氏 e氏 a氏 b氏 e氏 ①用紙を適当に3つに分ける ②3人で並行して、 投票者別に用紙を 仕分ける a氏 e氏 ③投票者ごと 用紙を集める ④3人で並行して、 投票者ごとに 枚数を数える a氏の 得票数 b氏の 得票数 d氏の 得票数 e氏の 得票数 c氏の 得票数 第1段階 第2段階 第3段階 投票 結果 Aさん Bさん Cさん d氏 c氏 b氏 Map処理 データを分類・仕分け Reduce処理 分類・仕分けされた データごとに処理
- 11. MapReduce (アルゴリズム) ・・ ・ ・・ ・ ・・ ・ Aさん Bさん Cさん a氏 b氏 E氏 a氏 b氏 e氏 a氏 b氏 e氏 ①用紙を適当に3つに分ける ②3人で並行して、 投票者別に用紙を 仕分ける a氏 e氏 ③投票者ごと 用紙を集める ④3人で並行して、 投票者ごとに 枚数を数える a氏の 得票数 b氏の 得票数 d氏の 得票数 e氏の 得票数 c氏の 得票数 第1段階 第2段階 第3段階 投票 結果 Aさん Bさん Cさん d氏 c氏 b氏 N人でやれば N倍のスピード (相互に影響を受けずに作業できる) N人でやれば 約N倍のスピード (相互に影響を受けずに作業できる)
- 12. MapReduce Framework JobTracker (MASTER) TaskTracker (SLAVE) クライアント ② ③ ① タスク実行中 タスク実行待ち タスク実行(競争)中 MapReduce ジョブ管理 タスク 管理 Heartbeat TaskTracker 状態監視 MapReduce ジョブ M R 同じ処理の投機的実行 データのローカリティを意識した タスクの実行 Map Map Reduce M R M R M Map,Reduce タスクの実行
- 13. Hadoopの特徴 HDFS 大量のデータを高スループットに読み込める サーバが故障しても、データの安全性は担保 MapReduce Map処理、Reduce処理のみを指定すれば (原則はJavaで処理を記述) あとはフレームワークが並列分散処理を実現 ノード数を増やせば、基本スケール サーバが故障しても、ジョブは実行される
- 14. HDFS 大量のデータを高スループットに読み込める サーバが故障しても、データの安全性は担保 MapReduce Map処理、Reduce処理のみを指定すれば (原則はJavaで処理を記述) あとはフレームワークが並列分散処理 ノード数を増やせば、基本スケール サーバが故障しても、ジョブは実行される Hadoopの特徴 並列分散処理の 面倒な部分を 解決してくれる ミドルウェア
- 15. よくある誤解 × 高速なRDBMS ○ 大量データに特化したバッチ処理システム - オンライン処理には不向き (スループット優先) - 少量データには不向き - データそのものを管理する仕組みは内在しない
- 16. Hadoopの適用領域 秒 分 時 日 データのレイテンシ バッチ 処理 リアル タイム 処理 データサイズ 少ない 多い オンライン処理 汎用検索 GB(ギガバイト) TB(テラバイト) PB(ペタバイト) オンバッチ処理 純バッチ処理 Hadoopの適用領域 RDBMSの適用領域 (Hadoop World NYC 2011でのNTTデータ講演資料より、http://www.slideshare.net/cloudera/hadoop-world- 2011-hadoops-life-in-enterprise-systems-y-masatani-ntt-data)
- 17. データ保持のアプローチの違い データの「管理」は行わない。 処理が高いスループットを生み出す よう、非正規化する。 データを「管理」するという 観点からデータの重複を 避けるために正規化する。 正規化されたデータセット ・・・ いくつかのデータセットを結合し、非正 規化したデータセット RDB Hadoop 一度に走査する範囲を小さくする 重複保持を排除する 一度に走査する範囲を大きくする 論理的走査範囲を単純物理分割、並列処理する 重複保持していても気にしない
- 18. よくある誤解 × 高速なRDBMS ○ 大量データに特化したバッチ処理システム - オンライン処理には不向き (スループット優先) - 少量データには不向き - データそのものを管理する仕組みは内在しない × 検索エンジン ○ 検索インデックス作成にも利用される - 低レイテンシが要求される処理の前処理など
- 19. Hadoopの使い方 他システムと組み合わせて利用 Hadoop クラスタ RDB データ ソース RDB DWH 検索 エンジン ユーザー アプリ BI、 可視化 ツール ・クレンジング処理 ・データ突き合わせ ・生データ格納 ・事前のデータ処理 ・事前計算済みデータの格納 ・オフロードした処理結果の書き戻し
- 20. Hadoopって どういう意味?? 言葉に意味はない Hadoopの生みの親 Doug Cutting氏の 娘さんが、ゾウのぬいぐるみにつけた名前
- 21. 誰がHadoopを作っているのか 最初にプロジェクトを始めたのは Yahoo! Hortonworks、Clouderaが ソースコードの貢献量の上位 日本からは NTT & NTTデータも ランクイン (第9位) 出典: http://ajisakaa.blogspot.com/2014/02/the-activities-of-apache-hadoop.html http://hortonworks.com/blog/innovations-contributions-apache-hadoop/ 2013年 Hadoop 貢献ソースコード行数 (所属企業別)
- 22. Hadoopは何に利用できるのか? データ読み込みのスループットの最大化 → 全件データ (Big Data) 処理の実現 ユーザーごとの個別のフィードバックの実現 (ソーシャルなサービス、レコメンドなど) 並列分散処理によるバッチ処理の高速化 → データ件数の増大に対応
- 23. Hadoopの活用例 過去のアクセス履歴を格納・処理して、ユーザーごとの 嗜好(特徴量)を抽出、コンテンツ最適化やレコメンド オンラインゲームなどのサービスにおいて、ユーザー行動 を分析して、解約低減やその効果の評価 金融商品の現在価値計算 (中間データが肥大化する シミュレーション)、利用者ごとのリスク計算 N:Nのデータの突き合わせが必要な名寄せ系処理 PL/SQL等で多件数の小容量データを繰り返し取得・ 処理していた処理の高速化 (並列処理に) タービン、橋梁、自動車、航空機に付けたセンサーから のデータを格納・処理して故障検知、利用の効率化
- 24. Hadoopのいま Hadoopのこれから
- 25. Hadoopは 絶賛 進化中 2014 2010 2011 2013 2012 2009 branch-2 2.2.0 2.3.0 2.4.0 2.0.0-alpha 2.1.0-beta branch-1 (branch-0.20) 1.0.0 1.1.0 1.2.1(stable) 0.20.1 0.20.205 0.22.0 0.21.0 New append Security 0.23.0 0.23.11(final) NameNode Federation, YARN NameNode HA HDFS Snapshots NFSv3 support Windows Heterogeneous storage HDFS in-memory caching HDFS ACLs HDFS Rolling Upgrades Application History Server RM Automatic Failover
- 26. YARN 分散ファイルシステム HDFS バッチ処理 MapReduce 従来のHadoop 分散ファイルシステム HDFS バッチ処理 MapReduce2 これからのHadoop リソース制御 YARN 並列分散処理フレームワークからリソース制御の レイヤを切り出された
- 27. YARNを使いこなすと・・・ 分散ファイルシステム HDFS バッチ処理 MapReduce2 リソース制御 YARN ストリーム処理 Storm ・・・・・・ インメモリ分散処理 Spark YARNにより単一クラスタ内に複数の分散処理アーキテ クチャを同居可能に → 蓄積済みの大量データを移動することなく、 同一計算リソースで多様な処理を実現
- 28. 定番のHadoopエコシステム HDFS MapReduce Pig Hive Mahout Hadoop上で機械学習を容易に 実行するためのライブラリ群 レコメンドなどを簡単に実装 SQLライクな言語で MapReduceを実行 データの流れを 記述する独自言語で MapReduceを実行 並列処理記述に向く HBase カラム指向型Key-Value ストア データの追記や少量デー タの扱いを容易に実現 Asakusa 業務システムの バッチを高速処理する ためのフレームワーク 独自言語から MapReduceを 生成実行 便利に活用できる周辺ソフトウェアが充実 これらをパッケージングしているのが、Hadoopディストリ ビューション
- 29. SQL on Hadoop への注目 急速な成長が見られる分野 新規利用者には期待感が高い? BI/可視化ツールとの親和性 JDBC/ODBCドライバの利用 SQL-92等のサポート MPP型の低レイテンシクリエ実行 Schema-on-Read DAG型/インメモリデータ処理系 で実現 MapReduce以外のデータ処理方式を採用
- 30. SQL on Hadoop への注目 急速な成長が見られる分野 新規利用者には期待感が高い? BI/可視化ツールとの親和性 JDBC/ODBCドライバの利用 SQL-92等のサポート MPP型の低レイテンシクリエ実行 Schema-on-Read DAG型/インメモリデータで実現 MapReduce以外のデータ処理方式を採用 【要注意!】 適当なSQLを書けば/ 今までのSQLをそのまま 実行するのが得策とは 限らない ・RDBとは違う処理系 ・オプティマイザの洗練具合
- 31. まとめ Hadoopは大量データを並列分散で 格納・処理するための仕組み Hadoopはまだまだ成長中 複数の並列分散処理系を使いこなす方向 SQL on Hadoop の実現 もっと具体的に知りたい という方は、 『Hadoop徹底入門 第2版』 (翔泳社) を ぜひ読んでみてください!
- 32. 12:40~12:55 Hadoopトレーニング番外編 川崎 達夫 (Cloudera) 12:55~13:10 インメモリ/分散並列処理対応のビジネス インテリジェンス(BI)ソリューションでHadoopデータを活用する 畝見 真 (SAS Institute Japan) 13:10~13:25 Hadoop 2.6の最新機能 鯵坂 明 (NTTデータ) 13:30~13:45 Fluentd: Unified Logging Layer Masahiro Nakagawa (Treasure Data) 13:45~14:00 Ansibleで構成管理を始める人のモチベーションを高めたい! 土橋 昌 (NTTデータ) 14:15~14:25 Hadoop内データに基づく簡単・高速モデリングの実現 畝見 真 (SAS Institute Japan) 15:10~15:25 マイクロソフトのHadoopへの取り組みと活用事例 佐々木 邦暢 (日本マイクロソフト) 15:25~15:40 Hadoop使い易くする Asakusa Framework はじめの一歩 中田 明 (ノーチラス・テクノロジーズ) 15:40~15:55 EAI国内シェアNo.1の「ASTERIA WARP」と Hadoopをつないでみた。 森 一弥 (インフォテリア) 16:10~16:20 HDPをWindowsで動かしてみた 安達 仁 16:20~16:35 Spark と Tez で性能比較 oza 16:35~16:50 Apache Drill でたしなむセルフサービスデータ探索 草薙 昭彦 (MapR Technologies) ドリンク パーティー Hadoop用の標準GUI、Hueの最新情報2 川崎 達夫 (Cloudera) OfflineImageViewerの変遷 鯵坂 明 (NTTデータ) SQL for Everything Masahiro Nakagawa (Treasure Data) SASによるストリーミング処理とHadoop上でのモデル開発 松園 和久 (SAS Institute Japan) はじめてのHadoopパッチ投稿! 大山 真実 日本Hadoopユーザー会 主催 ライトニングトークセッション プログラム @ミニステージ
- 33. ご静聴ありがとうございました 日本Hadoopユーザー会の 活動への応援、 引き続きよろしくお願いします