osc2014 tokyo/spring hadoop
DESCRIPTION
2014年3月1日に開催された「OSC 2014 Tokyo/Spring」で発表したHadoopに関する資料です。TRANSCRIPT
多種多様なデータの分散処理基盤
Apache Hadoopの現状、これから
Hadoopユーザー会山下 真一
2014/03/01 OSC 2014 Tokyo/Spring
OSC 2014 Tokyo/Spring 2
自己紹介
• 山下 真一 (@_sinchii_)
• 日々進化するHadoopと格闘中• たくさん処理を実行して秘孔を付いたり• Hadoopの仕掛けた罠(バグ)に嵌ったり
OSC 2014 Tokyo/Spring 3
本日の発表内容
• Hadoopのおさらい
• Hadoop最新動向
• デモ
OSC 2014 Tokyo/Spring 4
おさらい: Hadoopとは
• 課題• 日々増え続けるデータを蓄え続けたい• 蓄えたデータを速やかに処理したい• バッチ処理をより早く処理したい
• 処理データ規模は問わない
• Hadoopの特長• 複数のサーバで構成する分散ファイルシステムを提供• 分散ファイルシステム上のリソースを活用して分散処理を実
現、数十分~数時間の処理を数分~数十分に短縮• Hadoopを動作させるサーバは容易に入手できるサーバを
利用、リソース不足の場合は容易に追加可能
OSC 2014 Tokyo/Spring 5
おさらい : Hadoopとは
HDFS分散ファイルシステム
MapReduceフレームワークGoogle MapReduce
Google File System
集計 抽出 加工 分析主な利用用途
OS / Javaサーバが故障してもコピーを持っているため欠損しない
処理異常時は異常箇所のみ再試行
OSC 2014 Tokyo/Spring 6
これまでのHadoopの仕組み
クライアント
DataNode(s)
TaskTracker(s)
・ ・ ・
・ ・ ・
・ ・ ・
・ ・ ・
・ ・ ・
・ ・ ・
JobTrackerJobClient
DFSClient
マスターサーバ
ファイル
ファイルをブロックに分割配置を指示
M M MR R R
タスク
M
M
R
入出力データはHDFSと連携
データローカリティを意識した割り当て
ジョブ情報 タスク分割
NameNode
OSC 2014 Tokyo/Spring 7
Hadoopエコシステム
HDFS分散ファイルシステム
MapReduceフレームワーク
Hive(SQL style)
Pig(DSL)
Impala(低レイテインシ)
HBase(カラム指向型ストア)
Spark(インメモリ)
Flume(データ投入)
Sqoop(DB連携)
Oozie(ジョブフロー)
Ambari(クラスタ管理)
ZooKeeper(分散ロック)
Mahout(機械学習)
OSC 2014 Tokyo/Spring 8
本日の発表内容
• Hadoopのおさらい
• Hadoop最新動向
• デモ
OSC 2014 Tokyo/Spring 9
Hadoop 1系と2系の違い
HDFS 1 HDFS 2
MapReduceフレームワーク
ApplicationMaster
YARN
Hadoop 1系 Hadoop 2系
MapReduceアプリケーション
MapReduce等アプリケーション
OSC 2014 Tokyo/Spring 10
Hadoop 1.0系のMapReduceの問題
• JobTrackerへの負荷集中• 多数のリクエストを処理するためネックとなりやすい
• TaskTrackerでリソースを予約して動作• スロット数は固定であるためリソースを十分活用できない
• map関数、reduce関数内で強引に処理を定義
• Giraph , Oozie など
MapReduceジョブ制御(タスクアサイン)
TaskTracker管理(ハートビート処理)
Mapスロット Reduceスロット
OSC 2014 Tokyo/Spring 11
YARN : Yet Another Resource Negotiator
• JobTrackerのリソース管理とジョブ管理を分離
• ResourceManager : リソース管理• スレーブノード(NodeManager)管理
• ApplicationMaster : アプリケーション• MapReduceジョブは、ApplicationMasterが制御
• 処理はコンテナ(Container)が実行
• NodeManager : スレーブノード• リソース使用状況(CPU・メモリ)を確認
OSC 2014 Tokyo/Spring 12
YARNを構成するノード
ResourceManager
NodeManager
NodeManager
NodeManager
ApplicationMaster
NodeManager
Container
Container
ハートビートCPU・メモリ利用状況
AM割り当て&管理
MapReduceジョブ管理タスク割り当て Map(Reduce)タスク
ApplicationHistoryServer
(YARNジョブ履歴)
JobHistoryServer
(MRジョブ履歴)
OSC 2014 Tokyo/Spring 13
YARNの特徴
• スレーブノードのリソースを十分に利用する仕組み• LxC、cgroupsを活用して、厳密なリソース管理も実現
• MapReduce 1.0 APIとの互換性
• Hadoop 1.0系のMapReduceアプリケーションも実行可能• 再ビルドしなおすだけで、実行可能• 現在は、再ビルド不要の仕組みも開発中
• 様々なApplicationMasterが動作可能
• MapReduceジョブ以外のアプリケーションも実行可能• Apache Spark, Storm, Tez, Hbase(HOYA) などなど
OSC 2014 Tokyo/Spring 14
YARNの今後の開発内容
• いくつかの機能は現在も開発中• さまざまなアプリケーションをYARNで動作させるための
仕組み• スケジューラ改良 (CapacityScheduler / FairScheduler)• 長時間動作するApplicationMaster対応• アプリケーションの実行履歴管理(ApplicationHistory)• アプリケーション実行の記録(ApplicationTimeline)
OSC 2014 Tokyo/Spring 15
HDFS 2
• NameNode HA : 長年の問題が解決
• HDFS Snapshot : オペミスからの復旧が容易に• HDFS インメモリ Cache
• HDFS Federation : NameNode分割
• ロック機構の改善• ヘテロなストレージを利用可能
• メモリ、SSD、などを組み合わせて利用可能に
• いよいよ問題なく利用出来る状態に!
OSC 2014 Tokyo/Spring 16
その他Hadoop2系のポイント
• Java 7 対応• Windows 上での Hadoop環境• ログ周りの改善
• auditログ
• メッセージレベルの見直し• 無駄なstacktrace出力の抑制
OSC 2014 Tokyo/Spring 17
HDFSに蓄えたデータの活用
• HDFS上のデータをMapReduce以外で活用するための仕組みも広がりつつあります• 低レイテンシ、インメモリ、イテレーション …• HiveのXXX倍速い などなど
• Apache Spark / UC Berkeley• インメモリベースでのMapReduce処理エンジン
• Cloudera Impara / Cloudera• 低レイテンシ処理エンジン
• Presto / Facebook• 分散SQLエンジン
OSC 2014 Tokyo/Spring 18
Apache Spark
• インメモリによりMapReduceを処理
• Map処理, Reduce処理を定義
• Hadoop MapReduceの弱点を補う
• 繰り返し処理(イテレーション)• ジョブ起動、Shuffleなどのオーバーヘッドを軽減
• HDFSとの親和性
• 高級言語(Scala, Java, Python)で処理を定義
• UC Berkeley AMPLab により開発
OSC 2014 Tokyo/Spring 19
Apache Spark 構成要素
HDFS 2 HDFS 2
ApplicationMaster
YARN
Hadoop 2系 Apache Spark
Sparkアプリケーション
ApplicationMaster
YARN
MapReduce等アプリケーション
Sparkノード
SharkSpark
StreamingMLlib
HiveQL ストリーミング処理
機械学習
OSC 2014 Tokyo/Spring 20
本日の発表内容
• Hadoopのおさらい
• Hadoop最新動向
• デモ
OSC 2014 Tokyo/Spring 21
デモ
• HDFS2 + YARN環境を動かしてみます
• Webインタフェース• HDFS• YARN & JobHistoryServer
• サンプルアプリケーションの実行• Hadoopサンプルであるπ計算(PiEstimator)
OSC 2014 Tokyo/Spring 22
デモ
• Apache SparkとHadoop環境を連携してみます
• Spark : スタンドアロンモード• マスタとワーカ(1ノード)を起動
• サンプルアプリケーションの実行• Spark での word count• HDFS上のファイルに対して word countを実行
Sparkでのword count構文 (Scalaで実装)
val file = sc.textFile("hdfs://osc:8020/user/hadoop/spark-readme")val words = file.flatMap(line => line.replaceAll("\\W", " ").toLowerCase().split("\\s+"))val wordCounts = words.map(x => (x, 1)).reduceByKey(_ + _)wordCounts.saveAsTextFile("hdfs://osc:8020/user/hadoop/spark-wordcount")
OSC 2014 Tokyo/Spring 23
Hadoop のリリース予定
• Hadoop 2系(2.3がcurrent version)• 2.4
• RM-HA automatic Failover• Application History Server• Long-running applications• HDFS Trace ? • HDFS Symlink ?
• Hadoop 1系 … 1.3とかは幻となるのか?
OSC 2014 Tokyo/Spring 24
まとめ
• Hadoop 2系
• HDFS : 必要な仕組みは一通りそろった
• YARN : MapReduceのみであれば、それなりに動作する
• エコシステムの膨張• HDFSに蓄えたデータを扱う仕組み
• MapReduceの弱点を補う仕組み
• 何を使うにしてもデータを蓄えることが大切です!• 最初は数台、そして簡単な集計処理から...
OSC 2014 Tokyo/Spring 25
ご清聴ありがとうございました!