OSC2014 Tokyo/Spring Hadoop

25
多種多様なデータの分散処理基盤 Apache Hadoop現状、これから Hadoopユーザー会 山下 真一 2014/03/01 OSC 2014 Tokyo/Spring

description

2014年3月1日に開催された「OSC 2014 Tokyo/Spring」で発表したHadoopに関する資料です。

Transcript of OSC2014 Tokyo/Spring Hadoop

Page 1: OSC2014 Tokyo/Spring Hadoop

多種多様なデータの分散処理基盤

Apache Hadoopの現状、これから

Hadoopユーザー会山下 真一

2014/03/01 OSC 2014 Tokyo/Spring

Page 2: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 2

自己紹介

• 山下 真一 (@_sinchii_)

• 日々進化するHadoopと格闘中• たくさん処理を実行して秘孔を付いたり• Hadoopの仕掛けた罠(バグ)に嵌ったり

Page 3: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 3

本日の発表内容

• Hadoopのおさらい

• Hadoop最新動向

• デモ

Page 4: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 4

おさらい: Hadoopとは

• 課題• 日々増え続けるデータを蓄え続けたい• 蓄えたデータを速やかに処理したい• バッチ処理をより早く処理したい

• 処理データ規模は問わない

• Hadoopの特長• 複数のサーバで構成する分散ファイルシステムを提供• 分散ファイルシステム上のリソースを活用して分散処理を実

現、数十分~数時間の処理を数分~数十分に短縮• Hadoopを動作させるサーバは容易に入手できるサーバを

利用、リソース不足の場合は容易に追加可能

Page 5: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 5

おさらい : Hadoopとは

HDFS分散ファイルシステム

MapReduceフレームワークGoogle MapReduce

Google File System

集計 抽出 加工 分析主な利用用途

OS / Javaサーバが故障してもコピーを持っているため欠損しない

処理異常時は異常箇所のみ再試行

Page 6: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 6

これまでのHadoopの仕組み

クライアント

DataNode(s)

TaskTracker(s)

・ ・ ・

・ ・ ・

・ ・ ・

・ ・ ・

・ ・ ・

・ ・ ・

JobTrackerJobClient

DFSClient

マスターサーバ

ファイル

ファイルをブロックに分割配置を指示

M M MR R R

タスク

M

M

R

入出力データはHDFSと連携

データローカリティを意識した割り当て

ジョブ情報 タスク分割

NameNode

Page 7: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 7

Hadoopエコシステム

HDFS分散ファイルシステム

MapReduceフレームワーク

Hive(SQL style)

Pig(DSL)

Impala(低レイテインシ)

HBase(カラム指向型ストア)

Spark(インメモリ)

Flume(データ投入)

Sqoop(DB連携)

Oozie(ジョブフロー)

Ambari(クラスタ管理)

ZooKeeper(分散ロック)

Mahout(機械学習)

Page 8: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 8

本日の発表内容

• Hadoopのおさらい

• Hadoop最新動向

• デモ

Page 9: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 9

Hadoop 1系と2系の違い

HDFS 1 HDFS 2

MapReduceフレームワーク

ApplicationMaster

YARN

Hadoop 1系 Hadoop 2系

MapReduceアプリケーション

MapReduce等アプリケーション

Page 10: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 10

Hadoop 1.0系のMapReduceの問題

• JobTrackerへの負荷集中• 多数のリクエストを処理するためネックとなりやすい

• TaskTrackerでリソースを予約して動作• スロット数は固定であるためリソースを十分活用できない

• map関数、reduce関数内で強引に処理を定義

• Giraph , Oozie など

MapReduceジョブ制御(タスクアサイン)

TaskTracker管理(ハートビート処理)

Mapスロット Reduceスロット

Page 11: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 11

YARN : Yet Another Resource Negotiator

• JobTrackerのリソース管理とジョブ管理を分離

• ResourceManager : リソース管理• スレーブノード(NodeManager)管理

• ApplicationMaster : アプリケーション• MapReduceジョブは、ApplicationMasterが制御

• 処理はコンテナ(Container)が実行

• NodeManager : スレーブノード• リソース使用状況(CPU・メモリ)を確認

Page 12: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 12

YARNを構成するノード

ResourceManager

NodeManager

NodeManager

NodeManager

ApplicationMaster

NodeManager

Container

Container

ハートビートCPU・メモリ利用状況

AM割り当て&管理

MapReduceジョブ管理タスク割り当て Map(Reduce)タスク

ApplicationHistoryServer

(YARNジョブ履歴)

JobHistoryServer

(MRジョブ履歴)

Page 13: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 13

YARNの特徴

• スレーブノードのリソースを十分に利用する仕組み• LxC、cgroupsを活用して、厳密なリソース管理も実現

• MapReduce 1.0 APIとの互換性

• Hadoop 1.0系のMapReduceアプリケーションも実行可能• 再ビルドしなおすだけで、実行可能• 現在は、再ビルド不要の仕組みも開発中

• 様々なApplicationMasterが動作可能

• MapReduceジョブ以外のアプリケーションも実行可能• Apache Spark, Storm, Tez, Hbase(HOYA) などなど

Page 14: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 14

YARNの今後の開発内容

• いくつかの機能は現在も開発中• さまざまなアプリケーションをYARNで動作させるための

仕組み• スケジューラ改良 (CapacityScheduler / FairScheduler)• 長時間動作するApplicationMaster対応• アプリケーションの実行履歴管理(ApplicationHistory)• アプリケーション実行の記録(ApplicationTimeline)

Page 15: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 15

HDFS 2

• NameNode HA : 長年の問題が解決

• HDFS Snapshot : オペミスからの復旧が容易に• HDFS インメモリ Cache

• HDFS Federation : NameNode分割

• ロック機構の改善• ヘテロなストレージを利用可能

• メモリ、SSD、などを組み合わせて利用可能に

• いよいよ問題なく利用出来る状態に!

Page 16: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 16

その他Hadoop2系のポイント

• Java 7 対応• Windows 上での Hadoop環境• ログ周りの改善

• auditログ

• メッセージレベルの見直し• 無駄なstacktrace出力の抑制

Page 17: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 17

HDFSに蓄えたデータの活用

• HDFS上のデータをMapReduce以外で活用するための仕組みも広がりつつあります• 低レイテンシ、インメモリ、イテレーション …• HiveのXXX倍速い などなど

• Apache Spark / UC Berkeley• インメモリベースでのMapReduce処理エンジン

• Cloudera Impara / Cloudera• 低レイテンシ処理エンジン

• Presto / Facebook• 分散SQLエンジン

Page 18: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 18

Apache Spark

• インメモリによりMapReduceを処理

• Map処理, Reduce処理を定義

• Hadoop MapReduceの弱点を補う

• 繰り返し処理(イテレーション)• ジョブ起動、Shuffleなどのオーバーヘッドを軽減

• HDFSとの親和性

• 高級言語(Scala, Java, Python)で処理を定義

• UC Berkeley AMPLab により開発

Page 19: OSC2014 Tokyo/Spring Hadoop

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 ストリーミング処理

機械学習

Page 20: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 20

本日の発表内容

• Hadoopのおさらい

• Hadoop最新動向

• デモ

Page 21: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 21

デモ

• HDFS2 + YARN環境を動かしてみます

• Webインタフェース• HDFS• YARN & JobHistoryServer

• サンプルアプリケーションの実行• Hadoopサンプルであるπ計算(PiEstimator)

Page 22: OSC2014 Tokyo/Spring Hadoop

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")

Page 23: OSC2014 Tokyo/Spring Hadoop

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とかは幻となるのか?

Page 24: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 24

まとめ

• Hadoop 2系

• HDFS : 必要な仕組みは一通りそろった

• YARN : MapReduceのみであれば、それなりに動作する

• エコシステムの膨張• HDFSに蓄えたデータを扱う仕組み

• MapReduceの弱点を補う仕組み

• 何を使うにしてもデータを蓄えることが大切です!• 最初は数台、そして簡単な集計処理から...

Page 25: OSC2014 Tokyo/Spring Hadoop

OSC 2014 Tokyo/Spring 25

ご清聴ありがとうございました!