Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
Hadoopの紹介 | PPT
[go: Go Back, main page]

Introduction to Hadoop Satoshi Yamada 2008/11/5
内容 基本的に Hadoop の概観とイントロ 性能に関わるようなテクニカルな詳細は省略
謝辞 以下のホームページを参照&資料を貸していただきました http://hadoop.apache.org http://developer.yahoo.net/blogs/hadoop/2008/02/yahoo-worlds-largest-production-hadoop.html http://www.techcrunch.com/2008/01/09/google-processing-20000-terabytes-a-day-and-growing/ http://codezine.jp/article/detail/2448?p=1 http://www.slideshare.net/kakuda/hadoop/
outline what is Hadoop? Hadoop distributed file system Hadoop mapreduce Hadoop related modules how to use Hadoop
Hadoop とは Google の基盤プラットフォームのようなオープンソースインフラストラクチャ http://hadoop.apache.org
Hadoop の開発 Apache グループで開発 Yahoo! の Doug Cutting 氏らが開発
Hadoop の使用状況 Yahoo! 、 Facebook, Amazon.com, IBM の CC など Hadoop の mailing list では Lucene からの乗り換えなどを考えている人がいた というわけで流行っている
Yahoo! における使用状況 ( おそらく Hadoop を使用する最大規模のアプリケーション ) インデックス内にあるページ間リンク数 :  約 1 兆リンク 出力サイズ : 300 TB 超(圧縮後で) MapReduce 処理で使うコアの数 : 1 万超 製造クラスタで使うローディスク:  5PB (約 5000 兆バイト)超 従来の Yahoo! 環境での実行時間を 34% 削減 http://developer.yahoo.net/blogs/hadoop/2008/02/yahoo-worlds-largest-production-hadoop.html
ちなみに・・・ Google のプラットフォームの状況 http://www.techcrunch.com/2008/01/09/google-processing-20000-terabytes-a-day-and-growing/
Hadoop の特徴的な機能 Hadoop Core HBase Pig ZooKeeper ( 赤字は最近追加された機能)
Hadoop Core Hadoop の機能的な特徴 Scalable     ペタバイトクラスのデータを扱える  Economical   汎用プラットフォームによるクラスタにまたがって、データと実行を分散出来る。クラスタは数千オーダーでも対応可能 Efficient     データを分散させることで、ノード間で並列に実行出来る。そのため、実行速度が速い Reliable     自動的にデータを複数コピーし、失敗を契機にタスクの移動を行わせる
Hadoop Core Hadoop は Hadoop Distributed File System   (HDFS) を用いて実行を行う MapReduce は HDFS を用いて実装されている MapReduce ではアプリケーションをたくさんの小さなブロックに分割して実行 HDFS では信頼性を失わないために、複数のデータのレプリカを作成し、クラスタ内の各コンピュータに配置する
Hadoop Core Hadoop の概観 公式サイトより
outline what is Hadoop? Hadoop distributed file system Hadoop mapreduce Hadoop related modules how to use Hadoop
Hadoop Distributed File System HDFS の特徴 フォールトトレラント性能が高く、安価なハードウェア上で実現出来る アプリケーションへの高速アクセスを提供し、巨大なデータセットを持つアプリケーションに適している もともと A pache Nutch ウェブ検索エンジンプロジェクトのためのインフラ
HDFS が想定する問題とゴール その1 ハードウェアの故障 故障を検知し、迅速かつ自動的に回復する ストリームデータアクセス Hadoop アプリケーションにとって必要のない POSIX 条件を排除することでスループットを向上させる Large Data Sets 大きなサイズのファイルをサポート
HDFS が想定する問題とゴール その2 データの一貫性 write-once-read-many アクセスモデル MapReduce アプリケーションや web クロールアプリケーションに対応できる データの移動のオーバヘッド データでなくアプリケーションを移動させる ポータビリティ 様々なプラットフォームに対応 基本的に Java が入っていれば動く (?)
HDFS が想定する問題とゴール その 3 マスタ/スレーブアーキテクチャ 単一の Namenode と複数の Datanodes
HDFS が想定する問題とゴール その 4 The File System Namespace コンベンショナルな階層ファイル構造 信頼性 データを複製して、異なるノード間で保持 ラックの認識した負荷分散が可能 Datanode は定期的に Namenode と通信を行い、安否を知らせる Namenode は Datanode の状況から、データの複製状況などを考慮 などなど
データ構造 データブロック 64MB staging クライアントは溜め込んだデータの情報をすぐに Namenodes に報告しない アクセシビリティ HTTP ブラウザからの HDFS インスタンスのファイルのブラウジングが可能
outline what is Hadoop? Hadoop distributed file system Hadoop mapreduce Hadoop Related modules how to use Hadoop
Google での MapReduce 利用例 分散 Grep 分散ソート 逆リンク解析 アクセスログ解析 検索インデックス構築 文書クラスタ解析 機械学習 統計機械翻訳 ・・・ etc
Hadoop での MapReduce 概要 job から インプットデータを分割 task として m ap 関数が並列に処理 アウトプットをソートし、 r educe  task として r educe 関数が処理 H adoop のフレームワークはこれらの t ask をスケジュールし、モニタし、失敗した際には再実行させる ( Hadoop での呼び方を注意しておくとよいかも)
MapReduce 実行における マスタ/スレーブ マスタ: JobTracker job を構成する t ask をスケジュールし、モニタし、失敗した場合に再実行する 単一システムに1つだけ存在 スレーブ :TaskTracker マスタの指示に従って t ask を処理 複数存在
MapReduce のインタフェース インプットにもアウトプットにも < key, value> という形式を用いる map からの出力は reduce に入る前に、ローカル集約を受ける reduce では値を足し合わせるだけ map(), reduce() の実装のために、 Mapper, Reducer というインタフェースを持つ
実行例 wordcount プログラム 入力ファイル file01 と file02 file01:  Hello World Bye World  file02: Hello Hadoop Goodbye Hadoop map 関数の適用 < Hello, 1>< World, 1>< Bye, 1>< World, 1> < Hello, 1>< Hadoop, 1>< Goodbye, 1>< Hadoop, 1>  map からのローカル集約 (combiner) < Bye, 1>< Hello, 1>< World, 2> < Goodbye, 1>< Hadoop, 2>< Hello, 1>  ソート&集約 <Bye, 1><Goodby, 1><Hadoop, 2><Hello, 1, 1><World, 2> reduce からの出力 < Bye, 1>< Goodbye, 1>< Hadoop, 2>< Hello, 2>< World, 2>
Mapper key/value のインプットデータを k ey/value の中間データにマップ 中間データはインプットデータと同じ型である必要はない Mapper  の出力はソートされ、 R educer ごとに分割される ユーザは c ombiner をオプションで定義することで、中間出力値のローカルな集約を行うことが出来る
Reducer Reducer は k ey を共有する中間値のセットを r educe して v alue のセットを小さくする Reducer における3つのフェーズ shuffle HTTP 経由で、全ての m apper の出力の関連ある区分を取っていく sort key により、 R educer の入力値をグループ化する reduce グループ化された入力のそれぞれの < key, (list of values)> ペアごとに、 r educe が呼ばれる Reducer の出力はソートされていない
Hadoop に関連するその他の モジュール
hBase 大規模分散データベース google の BigTable のクローン http://codezine.jp/article/detail/2448?p=1
Pig 大規模データセットを解析するためのプラットフォーム Pig のインフラ層は(現段階では)大規模並列性が既に存在する MapReduce プログラムを生成するコンパイラ Pig の言語層は以下の特徴を持つ Pig Latin からなる プログラムの簡便化 相互関係があるなどの、並列化が難しいタスクを簡単に書き、理解し、実行する 最適化の機会 自動的に実行を最適化する 拡張性 ユーザはある実行に特化した関数を書くことが出来る
ZooKeeper 並列アプリケーションを実装する段階でのデータの競合やデッドロックの発生を抑えるためのコーディネーションサービス Yahoo! Message Broker などのサービスで既に用いられている
How to use Hadoop Requirement セットアップ サンプル実行 コンパイル&実行
Requirement サポート環境 L inux W in 32 ( 開発段階 ) (おそらく Solaris でも動く) 必要なソフトウェア J ava 1.5 以上 (S un  が望ましい ) s sh, sshd W indows ではさらに C ygwin が必要
Hadoop における実行モード Standalone Operation 単一ノードで動かす、デフォルトの設定 n on -  分散環境であり、単一の J ava プロセス デバッグ 時に有用 P seudo-Distributed Operation 単一ノード上で動かすが、それぞれの H adoop が異なる J ava プロセスとして実装されている F ully-Distributed Operation 複数ノードで動かす
セットアップ すべてのマシンが設定を格納したファイルを同じディレクトリ上に持つ JAVA_HOME の設定 hadoop-0.18.2/conf/hadoo-env.sh マスタの設定 hadoop-0.18.2/conf/masters hadoop-0.18.2/conf/hadoop-site.xml スレーブの設定 hadoop-0.18.2/conf/slaves ssh での鍵をマスタからスレーブに渡し、マスタから password なしでログインできるようにしておく
Hadoop StartUp 初期化 $ bin/hadoop namenode -format Hadoop の開始 $ bin/start-all.sh Hadoop の起動確認 [hadoop@master]$ jps  2475 SecondaryNameNode 2673 Jps 2573 JobTracker 2319 NameNode [hadoop@slave] $ jps 16149 Jps 16106 TaskTracker 16024 DataNode
この後はデモの予定
これまでの失敗例 NameNode or DataNode が立ち上がらない プログラム実行時にエラーなど 勉強会の時に惜しくも失敗 原因として考えられること 設定ミス ファイルが壊れた その他バグ
Hadoop 使用時に注意すべき点 実感した感じでは、まだまだ扱いづらい ( 当然だが ) ファイル、ポートの設定などきちんと バグもたくさんある、ようだ 問題点が把握しづらい Hadoop メーリスでも同様のコメントが多い ただし、プラットフォーム自体をいじるのでなければ、そこまで心配する必要はないかも
以上です

Hadoopの紹介

  • 1.
    Introduction to HadoopSatoshi Yamada 2008/11/5
  • 2.
    内容 基本的に Hadoopの概観とイントロ 性能に関わるようなテクニカルな詳細は省略
  • 3.
    謝辞 以下のホームページを参照&資料を貸していただきました http://hadoop.apache.orghttp://developer.yahoo.net/blogs/hadoop/2008/02/yahoo-worlds-largest-production-hadoop.html http://www.techcrunch.com/2008/01/09/google-processing-20000-terabytes-a-day-and-growing/ http://codezine.jp/article/detail/2448?p=1 http://www.slideshare.net/kakuda/hadoop/
  • 4.
    outline what isHadoop? Hadoop distributed file system Hadoop mapreduce Hadoop related modules how to use Hadoop
  • 5.
    Hadoop とは Googleの基盤プラットフォームのようなオープンソースインフラストラクチャ http://hadoop.apache.org
  • 6.
    Hadoop の開発 Apacheグループで開発 Yahoo! の Doug Cutting 氏らが開発
  • 7.
    Hadoop の使用状況 Yahoo!、 Facebook, Amazon.com, IBM の CC など Hadoop の mailing list では Lucene からの乗り換えなどを考えている人がいた というわけで流行っている
  • 8.
    Yahoo! における使用状況 (おそらく Hadoop を使用する最大規模のアプリケーション ) インデックス内にあるページ間リンク数 : 約 1 兆リンク 出力サイズ : 300 TB 超(圧縮後で) MapReduce 処理で使うコアの数 : 1 万超 製造クラスタで使うローディスク:  5PB (約 5000 兆バイト)超 従来の Yahoo! 環境での実行時間を 34% 削減 http://developer.yahoo.net/blogs/hadoop/2008/02/yahoo-worlds-largest-production-hadoop.html
  • 9.
    ちなみに・・・ Google のプラットフォームの状況http://www.techcrunch.com/2008/01/09/google-processing-20000-terabytes-a-day-and-growing/
  • 10.
    Hadoop の特徴的な機能 HadoopCore HBase Pig ZooKeeper ( 赤字は最近追加された機能)
  • 11.
    Hadoop Core Hadoopの機能的な特徴 Scalable     ペタバイトクラスのデータを扱える Economical   汎用プラットフォームによるクラスタにまたがって、データと実行を分散出来る。クラスタは数千オーダーでも対応可能 Efficient     データを分散させることで、ノード間で並列に実行出来る。そのため、実行速度が速い Reliable     自動的にデータを複数コピーし、失敗を契機にタスクの移動を行わせる
  • 12.
    Hadoop Core Hadoopは Hadoop Distributed File System   (HDFS) を用いて実行を行う MapReduce は HDFS を用いて実装されている MapReduce ではアプリケーションをたくさんの小さなブロックに分割して実行 HDFS では信頼性を失わないために、複数のデータのレプリカを作成し、クラスタ内の各コンピュータに配置する
  • 13.
    Hadoop Core Hadoopの概観 公式サイトより
  • 14.
    outline what isHadoop? Hadoop distributed file system Hadoop mapreduce Hadoop related modules how to use Hadoop
  • 15.
    Hadoop Distributed FileSystem HDFS の特徴 フォールトトレラント性能が高く、安価なハードウェア上で実現出来る アプリケーションへの高速アクセスを提供し、巨大なデータセットを持つアプリケーションに適している もともと A pache Nutch ウェブ検索エンジンプロジェクトのためのインフラ
  • 16.
    HDFS が想定する問題とゴール その1ハードウェアの故障 故障を検知し、迅速かつ自動的に回復する ストリームデータアクセス Hadoop アプリケーションにとって必要のない POSIX 条件を排除することでスループットを向上させる Large Data Sets 大きなサイズのファイルをサポート
  • 17.
    HDFS が想定する問題とゴール その2データの一貫性 write-once-read-many アクセスモデル MapReduce アプリケーションや web クロールアプリケーションに対応できる データの移動のオーバヘッド データでなくアプリケーションを移動させる ポータビリティ 様々なプラットフォームに対応 基本的に Java が入っていれば動く (?)
  • 18.
    HDFS が想定する問題とゴール その3 マスタ/スレーブアーキテクチャ 単一の Namenode と複数の Datanodes
  • 19.
    HDFS が想定する問題とゴール その4 The File System Namespace コンベンショナルな階層ファイル構造 信頼性 データを複製して、異なるノード間で保持 ラックの認識した負荷分散が可能 Datanode は定期的に Namenode と通信を行い、安否を知らせる Namenode は Datanode の状況から、データの複製状況などを考慮 などなど
  • 20.
    データ構造 データブロック 64MBstaging クライアントは溜め込んだデータの情報をすぐに Namenodes に報告しない アクセシビリティ HTTP ブラウザからの HDFS インスタンスのファイルのブラウジングが可能
  • 21.
    outline what isHadoop? Hadoop distributed file system Hadoop mapreduce Hadoop Related modules how to use Hadoop
  • 22.
    Google での MapReduce利用例 分散 Grep 分散ソート 逆リンク解析 アクセスログ解析 検索インデックス構築 文書クラスタ解析 機械学習 統計機械翻訳 ・・・ etc
  • 23.
    Hadoop での MapReduce概要 job から インプットデータを分割 task として m ap 関数が並列に処理 アウトプットをソートし、 r educe task として r educe 関数が処理 H adoop のフレームワークはこれらの t ask をスケジュールし、モニタし、失敗した際には再実行させる ( Hadoop での呼び方を注意しておくとよいかも)
  • 24.
    MapReduce 実行における マスタ/スレーブマスタ: JobTracker job を構成する t ask をスケジュールし、モニタし、失敗した場合に再実行する 単一システムに1つだけ存在 スレーブ :TaskTracker マスタの指示に従って t ask を処理 複数存在
  • 25.
    MapReduce のインタフェース インプットにもアウトプットにも< key, value> という形式を用いる map からの出力は reduce に入る前に、ローカル集約を受ける reduce では値を足し合わせるだけ map(), reduce() の実装のために、 Mapper, Reducer というインタフェースを持つ
  • 26.
    実行例 wordcount プログラム入力ファイル file01 と file02 file01: Hello World Bye World file02: Hello Hadoop Goodbye Hadoop map 関数の適用 < Hello, 1>< World, 1>< Bye, 1>< World, 1> < Hello, 1>< Hadoop, 1>< Goodbye, 1>< Hadoop, 1> map からのローカル集約 (combiner) < Bye, 1>< Hello, 1>< World, 2> < Goodbye, 1>< Hadoop, 2>< Hello, 1> ソート&集約 <Bye, 1><Goodby, 1><Hadoop, 2><Hello, 1, 1><World, 2> reduce からの出力 < Bye, 1>< Goodbye, 1>< Hadoop, 2>< Hello, 2>< World, 2>
  • 27.
    Mapper key/value のインプットデータをk ey/value の中間データにマップ 中間データはインプットデータと同じ型である必要はない Mapper の出力はソートされ、 R educer ごとに分割される ユーザは c ombiner をオプションで定義することで、中間出力値のローカルな集約を行うことが出来る
  • 28.
    Reducer Reducer はk ey を共有する中間値のセットを r educe して v alue のセットを小さくする Reducer における3つのフェーズ shuffle HTTP 経由で、全ての m apper の出力の関連ある区分を取っていく sort key により、 R educer の入力値をグループ化する reduce グループ化された入力のそれぞれの < key, (list of values)> ペアごとに、 r educe が呼ばれる Reducer の出力はソートされていない
  • 29.
  • 30.
    hBase 大規模分散データベース googleの BigTable のクローン http://codezine.jp/article/detail/2448?p=1
  • 31.
    Pig 大規模データセットを解析するためのプラットフォーム Pigのインフラ層は(現段階では)大規模並列性が既に存在する MapReduce プログラムを生成するコンパイラ Pig の言語層は以下の特徴を持つ Pig Latin からなる プログラムの簡便化 相互関係があるなどの、並列化が難しいタスクを簡単に書き、理解し、実行する 最適化の機会 自動的に実行を最適化する 拡張性 ユーザはある実行に特化した関数を書くことが出来る
  • 32.
  • 33.
    How to useHadoop Requirement セットアップ サンプル実行 コンパイル&実行
  • 34.
    Requirement サポート環境 Linux W in 32 ( 開発段階 ) (おそらく Solaris でも動く) 必要なソフトウェア J ava 1.5 以上 (S un が望ましい ) s sh, sshd W indows ではさらに C ygwin が必要
  • 35.
    Hadoop における実行モード StandaloneOperation 単一ノードで動かす、デフォルトの設定 n on - 分散環境であり、単一の J ava プロセス デバッグ 時に有用 P seudo-Distributed Operation 単一ノード上で動かすが、それぞれの H adoop が異なる J ava プロセスとして実装されている F ully-Distributed Operation 複数ノードで動かす
  • 36.
    セットアップ すべてのマシンが設定を格納したファイルを同じディレクトリ上に持つ JAVA_HOMEの設定 hadoop-0.18.2/conf/hadoo-env.sh マスタの設定 hadoop-0.18.2/conf/masters hadoop-0.18.2/conf/hadoop-site.xml スレーブの設定 hadoop-0.18.2/conf/slaves ssh での鍵をマスタからスレーブに渡し、マスタから password なしでログインできるようにしておく
  • 37.
    Hadoop StartUp 初期化$ bin/hadoop namenode -format Hadoop の開始 $ bin/start-all.sh Hadoop の起動確認 [hadoop@master]$ jps 2475 SecondaryNameNode 2673 Jps 2573 JobTracker 2319 NameNode [hadoop@slave] $ jps 16149 Jps 16106 TaskTracker 16024 DataNode
  • 38.
  • 39.
    これまでの失敗例 NameNode orDataNode が立ち上がらない プログラム実行時にエラーなど 勉強会の時に惜しくも失敗 原因として考えられること 設定ミス ファイルが壊れた その他バグ
  • 40.
    Hadoop 使用時に注意すべき点 実感した感じでは、まだまだ扱いづらい( 当然だが ) ファイル、ポートの設定などきちんと バグもたくさんある、ようだ 問題点が把握しづらい Hadoop メーリスでも同様のコメントが多い ただし、プラットフォーム自体をいじるのでなければ、そこまで心配する必要はないかも
  • 41.