hadoop ecosystem nttdata osc15tk
TRANSCRIPT
1 Copyright © 2015 NTT DATA Corporation
(株) NTTデータ 基盤システム事業本部 吉田 耕陽
2015/2/28 OSC 2015 Tokyo/Spring
分散処理基盤Apache Hadoop入門と Hadoopエコシステムの最新技術動向
2 Copyright © 2015 NTT DATA Corporation
所属/氏名
基盤システム事業本部 OSSプロフェッショナルサービス
吉田 耕陽(よしだ こうよう)
お仕事
徹底的に検証・評価したOSSの組み合わせ、設定・運用のノウハウの提供
高品質なシステム基盤を実現する仕組みの整備
最近は、 の案件適用やPoC等を中心に活動。
担当には「Hadoop徹底入門」、「HADOOP HACKS」 の著者が複数在籍
自己紹介
3 Copyright © 2015 NTT DATA Corporation
Hadoop概要 ~これまでのHadoop~
Hadoopの最新動向
NTTデータのHadoopコミュニティに対する取り組み
アジェンダ
5 Copyright © 2015 NTT DATA Corporation
Hadoopとは?
オープンソースの大規模分散処理フレームワーク • Googleの基盤ソフトウェアのオープンソース版クローン (GFS, MapReduce)
• Apacheプロジェクト (http://hadoop.apache.org/)
Yahoo Research の Doug Cutting 氏(現 Cloudera社)が Java で開発
『扱うデータがビッグ(大容量・多件数)であるために、従来のITアーキ
テクチャでは難しかった、もしくは超高コストでしか実現できなかった
データ活用が可能となる』
Dougさんのお子さんの お気に入りだったぬいぐるみ
6 Copyright © 2015 NTT DATA Corporation
集中管理型の分散システム
Hadoopの構成
Hadoopマスタサーバ
Hadoopスレーブサーバ群
Hadoopクライアント
NameNode DataNode
DataNode
DataNode
DataNode
JobTracker
TaskTracker
TaskTracker
TaskTracker
TaskTracker
スレーブサーバは、 分散処理の実行や データの実体を保存
データ管理や 分散処理ジョブの管理は
マスタサーバが実施
7 Copyright © 2015 NTT DATA Corporation
大きく2つのコンポーネントで構成
分散ファイルシステム
HDFS
並列分散処理フレームワーク
MapReduceフレームワーク
Hadoopの構成するコンポーネント
データを 貯める機能を
提供
貯めたデータを処理する機能を
提供
8 Copyright © 2015 NTT DATA Corporation
Hadoopとは
集中管理型の分散システムで
HDFSとMapReduceフレームワークの 2つのコンポーネントにより
並列分散処理を実現するミドルウェア
9 Copyright © 2015 NTT DATA Corporation
分散ファイルシステム
HDFSとは
NameNode
DataNode
DataNode
DataNode
DataNode
DataNode
一つのファイルシステムを構成
複数のサーバを束ねて、
10 Copyright © 2015 NTT DATA Corporation
外から見ると、1つの巨大なファイルシステム
HDFSの外からの見え方
NameNode
DataNode
DataNode
DataNode
DataNode
DataNode Hadoopクライアント
hdfs dfs -put
HDFSへの命令
11 Copyright © 2015 NTT DATA Corporation
外から見ると、1つの巨大なファイルシステム
HDFSの外からの見え方
NameNode
DataNode
DataNode
DataNode
DataNode
DataNode Hadoopクライアント
hdfs dfs -ls
-rw-r--r-- 3 tester hadoop 129 2015-02-28 12:00 /user/tester/test.txt
所有者 権限 作成日時
12 Copyright © 2015 NTT DATA Corporation
分散ファイルシステムの舞台裏では
HDFSの舞台裏
NameNode
DataNode
DataNode
DataNode
DataNode
DataNode Hadoopクライアント
入力ファイルは、 ブロックサイズで分割される ※分割したものをブロックと呼ぶ
④
①
②
③
13 Copyright © 2015 NTT DATA Corporation
分散ファイルシステムの舞台裏では
HDFSの舞台裏
NameNode
DataNode
DataNode
DataNode
DataNode
DataNode Hadoopクライアント
各ブロックは複製(レプリケーション)され、 スレーブサーバに格納される
④
①
②
③
①
①
①
②
②
②
③
③
③
④
④
④
レプリカは異なる 3サーバに配置される
14 Copyright © 2015 NTT DATA Corporation
MapReduceアルゴリズム
大量の件数のデータがあった時に、 複数ワーカーで 並列に処理できる仕組み
例として、選挙の開票作業を想定
- 複数人で作業を分担して実施
- 最初に、投票用紙を分けて、 みんなで並行して候補者別に用紙を仕分ける
- 次に、候補者別の用紙を1カ所にまとめて、 それぞれの枚数を数える
MapReduceって?
15 Copyright © 2015 NTT DATA Corporation
MapReduce (アルゴリズム)
①用紙を適当に3つに分ける 第1段階
第2段階
第3段階
a氏 e氏
③候補者ごとに 用紙を集める
d氏 c氏 b氏
Aさん Bさん Cさん
・・・
・・・
・・・
a氏 b氏 e氏 a氏 b氏 e氏 a氏 b氏 e氏
②3人で並行して、 候補者ごとに用紙を 仕分ける
④3人で並行して、 候補者ごとに 枚数を数える
a氏の得票数
b氏の得票数
d氏の得票数
e氏の得票数
c氏の得票数
投票結果
Bさん Cさん Aさん
16 Copyright © 2015 NTT DATA Corporation
MapReduce (アルゴリズム)
Aさん Bさん Cさん
①用紙を適当に3つに分ける
・・・
・・・
・・・
a氏 b氏 e氏 a氏 b氏 e氏 a氏 b氏 e氏
②3人で並行して、 候補者ごとに用紙を 仕分ける
第1段階
第2段階
第3段階
a氏 e氏
③候補者ごとに 用紙を集める
d氏 c氏 b氏
④3人で並行して、 候補者ごとに 枚数を数える
a氏の得票数
b氏の得票数
d氏の得票数
e氏の得票数
c氏の得票数
投票結果
Bさん Cさん Aさん
Map処理 データを分類・仕分け
Reduce処理 分類・仕分けされた データごとに処理
17 Copyright © 2015 NTT DATA Corporation
MapReduce (アルゴリズム)
Aさん Bさん Cさん
①用紙を適当に3つに分ける
・・・
・・・
・・・
a氏 b氏 e氏 a氏 b氏 e氏 a氏 b氏 e氏
②3人で並行して、 候補者ごとに用紙を 仕分ける
第1段階
第2段階
第3段階
a氏 e氏
③候補者ごとに 用紙を集める
d氏 c氏 b氏
④3人で並行して、 候補者ごとに 枚数を数える
a氏の得票数
b氏の得票数
d氏の得票数
e氏の得票数
c氏の得票数
投票結果
Bさん Cさん Aさん
M人でやれば M倍のスピード (相互に影響を受けずに作業できる)
N人でやれば 約N倍のスピード (相互に影響を受けずに作業できる)
18 Copyright © 2015 NTT DATA Corporation
MapReduceジョブ
Aさん Bさん Cさん
①用紙を適当に3つに分ける
・・・
・・・
・・・
a氏 b氏 e氏 a氏 b氏 e氏 a氏 b氏 e氏
②3人で並行して、 投票者別に用紙を 仕分ける
第1段階
第2段階
第3段階
a氏 e氏
③投票者ごと 用紙を集める
d氏 c氏 b氏
④3人で並行して、 投票者ごとに 枚数を数える
a氏の得票数
b氏の得票数
d氏の得票数
e氏の得票数
c氏の得票数
投票結果
Bさん Cさん Aさん
Map処理 データを分類・仕分け
Reduce処理 分類・仕分けされた データごとに処理
MapReduceジョブ
Map タスク
Map タスク
Map タスク
Reduce タスク
Reduce タスク
Reduce タスク
19 Copyright © 2015 NTT DATA Corporation
MapReduceジョブを実行するフレームワーク
MapReduceフレームワークの外からの見え方
JobTracker
TaskTracker
TaskTracker
TaskTracker Hadoopクライアント
MapReduce ジョブ
HDFS
MapReduceジョブ hadoop jar サンプルジョブ.jar
M R
Map タスク
Map タスク
Map タスク
Map タスク
Reduce タスク
Reduce タスク
Reduce タスク
Reduce タスク
HDFSから読み込み HDFSに書き込み
20 Copyright © 2015 NTT DATA Corporation
HDFS 大量データを高スループットに読み込める
サーバが故障しても、データの安全性は担保
サーバ数を増やせば、格納できるデータ量はスケールする
MapReduceフレームワーク Mapタスク、Reduceタスクのみ指定すれば、
(原則はJavaで処理を記述) あとはフレームワークが並列分散処理を実現
サーバが故障しても、タスクが再実行され、ジョブは成功
サーバ数を増やせば、処理性能は基本スケールする
Hadoopの特徴
21 Copyright © 2015 NTT DATA Corporation
HDFS 大量データを高スループットに読み込める
サーバが故障しても、データの安全性は担保
サーバ数を増やせば、格納データ量はスケールする
MapReduce Mapタスク、Reduceタスクのみ指定すれば、
(原則はJavaで処理を記述) あとはフレームワークが並列分散処理を実現
サーバが故障しても、タスクが再実行され、ジョブは成功
サーバ数を増やせば、処理性能は基本スケールする
Hadoopの特徴
並列分散処理の 面倒な部分を 解決してくれる ミドルウェア
22 Copyright © 2015 NTT DATA Corporation
Hadoopの適用領域
秒
分
時間
日
処理のレイテンシ
バッチ処理
リアルタイム処理
データサイズ 少ない 多い
オンライン処理
汎用検索
GB(ギガバイト) TB(テラバイト) PB(ペタバイト)
TB(テラバイト)
オンバッチ処理
純バッチ処理
RDBMSの適用領域
Hadoopの適用領域
バッチ処理の高速化 全件データ
(Big Data) 処理
23 Copyright © 2015 NTT DATA Corporation
Hadoopは「貯める」「処理する」機能に特化。Hadoopを活用した大量データ分析を実現するため、様々な周辺ツールが出現。エコシステムが広がった。
エコシステムを形成
24 Copyright © 2015 NTT DATA Corporation
MapReduceフレームワークを直接Javaで記述すると、コード行数が増えることは避け難く、アプリケーションの生産性が課題となる。
分散処理を記述するためのAPIは提供されているが、適切なプログラムの記述のためにはアプリ実装者が覚えることが多いのも事実…
エコシステム ~アプリ記述の抽象化・ライブラリ化~
Map? Reduce?
Partitioner?? Combiner??
25 Copyright © 2015 NTT DATA Corporation
Apache Hive HiveQLというSQLライクな言語でMapReduceを実行
Apache Pig Pig Latinという独自の言語でMapReduceを実行
Apache Mahout 機械学習アルゴリズムのMapReduce実装のライブラリ
エコシステム ~アプリ記述の抽象化・ライブラリ化~
hive> SELECT COUNT(uid) FROM access_log GROUP BY date;
A = LOAD 'data' USING PigStorage() AS (f1:int, f2:int, f3:int); B = GROUP A BY f1; (省略)
$ mahout kmeans --input inputfile --output outputfile
26 Copyright © 2015 NTT DATA Corporation
HDFS HDFS HDFS
よくある疑問
MapReduceフレームワークの縛りは厳しそうだけど、 SQLのような複雑な処理を実現できるの?
YES!MapReduceを複数段組み合わせることで、 様々な処理が実現できる
M R
M R
M R M
GROUP BY + 集約関数
JOIN(結合処理)
SELECT(射影)やWHERE(選択)
HDFS
JOIN(結合処理)
27 Copyright © 2015 NTT DATA Corporation
分析対処のデータをHDFSに格納することも課題となる
既存のRDBMSに格納したデータを移動して利用したい
Webログやシステムログなどを収集したい
エコシステム ~データ連携~
処理毎に使い捨てスクリプトを書く? エラーハンドリングや耐障害性など担保すべきことも多い…
28 Copyright © 2015 NTT DATA Corporation
Apache Sqoop RDBMS-Hadoop間のデータ連携ツール
Apache Flume ログ収集のための分散フレームワーク
エコシステム ~データ連携~
MapReduce
Sqoop RDBMS
HDFS
import
export
内部的にはMapReduceが動作。並列でRDBとテーブルの情報をやりとりする。
HDFS
ログ
ログ
ログ
29 Copyright © 2015 NTT DATA Corporation
Hadoopコア部分に加えてエコシステムが充実することで、データの収集や分析など、「大量データ活用」を身近なものにした。
エコシステムの浸透
HDFS
MapReduce
Pig Hive Mahout HBase
Sqoop RDBMS
外部システム
Flume
31 Copyright © 2015 NTT DATA Corporation
Hadoopとエコシステムはユーザーとともに進化を遂げた。活用事例の増加や取り巻く環境の変化から、新たな潮流が生まれる…
Hadoopと周辺環境の変化
•一部のユーザは数千台クラスのHadoopクラスタを構築・利用 クラスタ”超”巨大化
•企業の利用拡大に伴い、Hadoopにアクセスしてデータ分析をする利用者が増えた アクセスユーザ増加
•大量データ活用が一般的になるにつれて、「速報値を知りたい」「もっとインタラクティブに分析したい」といった要求が生まれる データ処理高速化の追求
•Hadoop黎明期はサーバあたりのメモリ4~8Gが一般的だったが、現在は100GB以上のメモリを積んだサーバも普及。 ハードウェアの進化
主な”変化”の例
32 Copyright © 2015 NTT DATA Corporation
近年のHadoopおよびエコシステムについて、
以下の3点について最新動向を紹介
近年のHadoopの潮流
クラスタ”超”巨大化
アクセスユーザ増加
データ処理高速化の追求
ハードウェアの進化
1.YARN登場
2.新たな並列分散処理エンジンの出現
3.非機能面の強化
33 Copyright © 2015 NTT DATA Corporation
YARNの前に:Hadoop1系、Hadoop2系について
Hadoop1系は2007年から開発が始まり、安定化志向。2014年6月に開発は凍結。 Hadoop2系は2012年に分岐。根本のアーキテクチャに変更を入れ、現在も進化を続けている。
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
2015
2.5.0
2.6.0
これまでお伝えした範囲
これからお伝えする範囲
34 Copyright © 2015 NTT DATA Corporation
YARN = Yet Another Resource Negotiator
YARN登場
分散ファイルシステム
HDFS
バッチ処理 MapReduce
Hadoop 1
分散ファイルシステム
HDFS
バッチ処理 MapReduceV2
Hadoop 2
リソース制御 YARN
「蓄積+処理」の構成からリソース制御を切り出した
35 Copyright © 2015 NTT DATA Corporation
MRv1とMRv2との比較 (ノード構成)
JobHistoryServer
NodeManager
TaskTracker
タスクプロセス タスクプロセス タスクプロセス
Hadoop 1系 Hadoop 2系
HDFS HDFS
JobTracker
ResourceManager
TaskTracker
NodeManager ジョブ履歴
管理
リソース 管理
タスクプロセス
MRv1
MRv2
YARN
リソース 管理
ジョブ・タスク管理
TimelineServer
コンテナ
Application Master
コンテナ コンテナ コンテナ コンテナ タスクプロセス
36 Copyright © 2015 NTT DATA Corporation
YARNの意義
リソース制御を分離することで… つまり何が嬉しいの?
柔軟なリソース制御による スループット向上
Hadoopのスケーラビリティを さらに向上させる
MapReduce以外の分散処理を実行する
37 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
TaskTracker
ジョブ/アプリケーション管理のイメージ
JobTracker
TaskTracker TaskTracker TaskTracker TaskTracker
Hadoop1系
クライアント ジョブAお願いします。
38 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
TaskTracker
ジョブ/アプリケーション管理のイメージ
JobTracker
TaskTracker TaskTracker TaskTracker TaskTracker
Hadoop1系
クライアント 了解です。
Aさんは○○、Bさんは○○をお願いします。 定期的に進捗報告もお願いします。
39 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
TaskTracker
ジョブ/アプリケーション管理のイメージ
JobTracker
TaskTracker TaskTracker TaskTracker TaskTracker
ジョブAのタスク1、50%終わりました。
余裕あります。
ジョブAのタスク2、30%終わりました。
忙しいです。
ジョブ Hadoop1系
40 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
TaskTracker
ジョブ/アプリケーション管理のイメージ
JobTracker
TaskTracker TaskTracker TaskTracker TaskTracker
ジョブAのタスク02を50%終わりました。 ジョブCのタスク01を完了しました。
余裕あります。
ジョブAのタスクA30%終わりました。 ジョブBのタスクBを50%終わりました。
忙しいです。
ジョブ
マスターサーバの管理コストが多く、 メンバが増えるとマスターサーバがボトルネックに…
Hadoop1系
41 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
NodeManager
ジョブ/アプリケーション管理のイメージ
Resource Manager
NodeManager NodeManager NodeManager NodeManager
余裕あります。 忙しいです。
YARN
ResourceManagerには余力(≒リソース)を通知
42 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
NodeManager
ジョブ/アプリケーション管理のイメージ
Resource Manager
NodeManager NodeManager NodeManager NodeManager
YARN
アプリAお願いします。 クライアント
YARNでは ジョブ× → アプリケーション○
43 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
NodeManager
ジョブ/アプリケーション管理のイメージ
Resource Manager
NodeManager NodeManager NodeManager NodeManager
アプリAの取りまとめお願いします。 リソースが必要であれば連絡ください。
アプリケーション
YARN
仕事(アプリケーション)の管理はメンバに依頼 取りまとめ役(ApplicationMaster)になる
44 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
NodeManager
ジョブ/アプリケーション管理のイメージ
Resource Manager
NodeManager NodeManager NodeManager NodeManager
アプリAの取りまとめお願いします。 リソースが必要であれば連絡ください。
アプリケーション
YARN
任命されたApplicationMasterは ResourceManagerにリソースの要求が可能
Application Master
45 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
NodeManager
ジョブ/アプリケーション管理のイメージ
Resource Manager
NodeManager NodeManager NodeManager NodeManager
了解です。 ○○だけリソースお願いします。
YARN
46 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
NodeManager
ジョブ/アプリケーション管理のイメージ
Resource Manager
NodeManager NodeManager NodeManager NodeManager
○割の仕事は Bさんの指示に従ってください。
YARN
47 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
NodeManager
ジョブ/アプリケーション管理のイメージ
Resource Manager
NodeManager NodeManager NodeManager NodeManager
タスクAは進捗50%です。
タスクBは進捗20%です。
YARN
タスク毎の進捗状況はApplicationMasterが管理
48 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
NodeManager
ジョブ/アプリケーション管理のイメージ
Resource Manager
NodeManager NodeManager NodeManager NodeManager
YARN
ApplicationMasterはアプリケーションの進捗状況をRMに通知
アプリAの進捗70%です
49 Copyright © 2015 NTT DATA Corporation
マスターサーバの負荷軽減
NodeManager
ジョブ/アプリケーション管理のイメージ
Resource Manager
NodeManager NodeManager NodeManager NodeManager
マスターサーバの管理コストが減り、 多数のメンバを管理できる(スケーラビリティ向上)
アプリAの進捗70%です アプリBの進捗30%です
YARN
50 Copyright © 2015 NTT DATA Corporation
コンテナ単位でリソースを柔軟に払い出す
Hadoop 1系 Hadoop 2系
TaskTracker NodeManager
Map タスク
Map タスク
Map タスク
Reduce タスク
Reduce タスク
Map タスク
Map タスク
Map タスク
Reduce タスク
Mapタスク、Reduceタスクの並列数は、 それぞれに設定したスロット数で制限される。
利用可能な仮想CPU、メモリを制限したコンテナという単位でリソースを払いだす。 (Map、Reduceの区別は無い)
Mapスロット Reduceスロット コンテナ
単一サーバ上での並列実行数管理のイメージ
リソース (VCPU / メモリ)
Application Master
柔軟なリソース管理やリソースオーバーコミット防止は、 スループットの向上につながる
51 Copyright © 2015 NTT DATA Corporation
MapReduceは、ディスクIOを並列化することでスループットを最大化するが、低レイテンシな処理は苦手。
新たな並列分散処理エンジンの出現
M R M R
Reduce処理
MapReduce ジョブ ・・・
M
M R
M R M R
・・・
・・・
・・・
・・・
Map処理
・・・ ・・・
HDFS
HDFS HDFS
HDFS ApplicationMaster
MapReduceのフレームワークの縛りの中で複雑な処理を行うには、多数のMapReduceを組み合わせることになる。都度HDFSに中間データを書き出すためのオーバーヘッドや、ジョブ(ApplicationMaster)の起動のオーバーヘッドは分析処理の遅延に繋がる。
HiveやPig(on MapReduce)による一連の処理のイメージ
HDFSに書き出し HDFSから読み出し
52 Copyright © 2015 NTT DATA Corporation
MapReduceで実現が難しいデータ処理の課題に対して、新たな分散処理フレームワーク・実行エンジンが出現。
新たな並列分散処理エンジンの出現
次ページより概要を紹介します!
53 Copyright © 2015 NTT DATA Corporation
Apache Spark : Hadoop上で動作する低レイテイシ技術
Apache Spark : 大規模データの分散処理をオンメモリで実現
• データ処理を極力メモリ上で実現するため、高速な処理を実現
• Hadoop MapReduceが不得意な繰り返し処理に威力を発揮
• 機械学習やHadoop MapReduceよりも短時間で処理したいものが得意領域
RDD(Resilient Distributed Dataset)の変換で処理を表現
RDD RDD RDD
Stage Stage
RDD
Sparkができるだけ 処理をまとめこむ
ユーザ定義の 処理の流れ
Sparkによる 実際の処理 ステージ間は
シャッフルが発生
変換 変換 変換 出力 入力
Stageに基づいて サーバ群がタスク実行
54 Copyright © 2015 NTT DATA Corporation
Apache Spark : コアを中心に成り立つライブラリ
Apache Spark(コア)
Spark SQL Spark
Streaming MLlib GraphX
SQLで書ける ストリーム処理できる
機械学習できる 統計処理できる グラフ処理できる
Scala、Java、Pythonで分散処理を書ける
高度な処理を実現するための標準ライブラリが充実
メモリを活用したアーキテクチャ、インタラクティブにも処理を記述できる仕組み、便利なライブラリなど、分析担当者に嬉しい機能が多い。
55 Copyright © 2015 NTT DATA Corporation
Apache Tez : YARN上での処理に最適化された実行エンジン
Apache Tez : DAG(Directed Acyclic Graph)により実行計画を作成
ApplicationMasterの起動回数削減
HiveやPigといったMRv1で実行していたクエリ・コードを流用できる
• Hive on Tez
• Pig on Tez
Tez
Plan
Plan Plan
Plan
ローカルディスクを利用 (HDFSへの書き込みより高速)
Plan
Plan
特定のノードのみでShuffle (通信量・リソース削減)
処理量ベースで 実行ノード数を制御
(リソース削減・性能改善)
MapReduceの仕組みにあてはめない 1つのApplicationMasterで処理
ローカル ローカル
ローカル ローカル
Hive、Pigを利用するユーザは、プログラムの言語(HiveQL、Pig Latin)はそのままで処理時間の短縮が可能。MRが多段になる複雑な処理であるほど、処理時間短縮効果が大きい。
56 Copyright © 2015 NTT DATA Corporation
Twitter社のエンジニアにより開発された、並列分散ストリーム処理のためのフレームワーク
Apache Storm : 分散ストリーム処理フレームワーク
Storm Topology
Spout:ストリーム処理の入力を担う Bolt:データへの 処理を実行する
HBase
HDFS
ストリームデータ ・ログ ・センサーデータ
アプリケーションエンジニアは、Bolt・Spoutで処理するロジックを記述、それらを組み合わせたTopologyを定義することで分散ストリーム処理を実現できる。耐障害性やスケーラビリティを意識せずに享受可能!
処理したデータをKVSやHDFSに永続化し可視化や通知を行う
Storm処理の前段にMQ等のシステムを配置し、ストリームデータを受け取る
57 Copyright © 2015 NTT DATA Corporation
SparkやStormは元々Hadoopとは独立したプロジェクトだったが、機能追加によりYARN上での動作が可能に。(TezはYARNでの実行を前提としている)
メリット - 専用のクラスタを構築する必要が無く、必要なリソースを払いだしながら多様
な分析処理を実行できる
- 同一のデータ(HDFS)にアクセスできる。(データを移動させる必要が無い)
YARNで、Hadoopに乗る
MRv2
Pig Hive
HDFS
YARN
Tez Spark Storm
MLlib Streaming
…
SQL GraphX
スケーラブルなデータストアの上で、様々な分析処理のワークロードが動作。 「Hadoopはビッグデータの”OS”カーネル」という声も。
http://itpro.nikkeibp.co.jp/article/NEWS/20140708/569985/
58 Copyright © 2015 NTT DATA Corporation
エンタープライズ用途でより活用されるために、高い非機能要求に対応するための機能拡張も進んでいる
以下の観点で、Hadoop2系で追加された機能を紹介します
可用性
セキュリティ
堅牢なHadoopに向けて
59 Copyright © 2015 NTT DATA Corporation
Hadoop1系まではマスター系サーバはSPOFと言われ、他のHA系コンポーネントを組み合わせることで冗長構成をとっていた。
現在は、Hadoopの機能としてHA機能を提供。障害発生時も少ないダウンタイムでフェールオーバーを行う。
NameNode-HA
ResourceManager-HA
MRv2やTezは、ResourceManagerやApplicationMasterの障害・切り替え時もジョブの途中から再実行する
可用性 : SPOFは無い!
60 Copyright © 2015 NTT DATA Corporation
Hadoopクラスタへアクセスするユーザ・組織の増加や、クリティカルなデータをHadoopで保持する事例も増え、セキュリティ機能も強化されている。
HDFS Transparent Encryption ファイルを暗号化してDataNodeに書き込む
HDFS ACL 細かな粒度でHDFSへのアクセス権限を制御する
セキュリティ : 暗号化 / ACL
-rw-r--r-- 3 tester hadoop 129 2015-02-27 12:00 /user/tester/test.txt
HDFSの拡張属性を利用し、基本のユーザー・グループ以外のアクセス制御も可能
DataNode
DataNode中のデータに 直接アクセスしても読めない
クライアントやアプリケーションからは透過的にデータが読める
61 Copyright © 2015 NTT DATA Corporation
お話した内容
YARN登場
新たな並列分散処理エンジンの出現
非機能面の強化
Hadoopの最新動向のまとめ
根本的なアーキテクチャも見直しを入れて Hadoopはさらに進化をつづけている
Hadoopがユーザへ浸透することで生まれた新たな課題 に対しても、様々なエコシステムが生まれ活用されている
大量データ保持・活用の様々な課題に対する Hadoopの適用領域は広がりつづけている
63 Copyright © 2015 NTT DATA Corporation
Hadoopを多数運用してきたことで得られた知見をもとに、改善提案をコミュニティにフィードバックしています
運用上特に問題となるバグの改修
利用者向けのドキュメントの拡充
運用、トラブルシュートを便利にする機能の開発 - OfflineImageViewer via the WebHDFS API
- HDFS Tracing
コミュニティへの貢献
64 Copyright © 2015 NTT DATA Corporation
開発面におけるHadoopコミュニティへの貢献
NTTデータはHadoopコミュニティにおいて世界有数のコントリビュータ(貢献企業)として活動しています。
商用環境においてHadoopを多数運用してきたことで得られた知見をもとに、Hadoopに対する改善提案をコミュニティにフィードバックしています。事象の報告にとどまらずHadoop本体への開発も行っています。運用上特に問題となるバグの改修や、利用者向けのドキュメントの拡充のためのパッチを投稿し、コミュニティに貢献しています。
解決済みissue数
2014年 Hadoopコミュニティ貢献指標
Hadoop専業ベンダのHortonworksやCloudera、Hadoopを開発したYahoo! Inc.に次いで、NTTデータもHadoopコミュニティにグローバルレベルで貢献しています。
貢献コード行数
244,975
131,609
30,595
第6位
21,780 23,197 30,595 20,540 14,764 14,534
第4位
370
274
195
85
174
119 72
45 45
65 Copyright © 2015 NTT DATA Corporation
小沢 健史 日本電信電話株式会社ソフトウェアイノベーションセンタ
- YARN:高可用化
- YARN:処理基盤間のインタフェースの整備と実装
- YARN:致命的なバグの修正
- 計算リソースのリークの改善
鯵坂 明 株式会社NTTデータ 基盤システム事業本部
- OfflineImageViewerの拡張
- Hadoop 2系のドキュメント整備
- メトリクスのドキュメント整備
- 品質強化に関する取り組み
岩崎 正剛 株式会社NTTデータ 基盤システム事業本部
- HTraceのモジュール開発
- HTraceトレーシング機能をHDFSに追加
- Sqoopのコネクタ開発
- Hadoopの運用スクリプト改善
コミッタ(主要開発者)に就任
Hadoop
Hadoop
HTrace
66 Copyright © 2015 NTT DATA Corporation
小沢 健史 日本電信電話株式会社ソフトウェアイノベーションセンタ
- YARN:高可用化
- YARN:処理基盤間のインタフェースの整備と実装
- YARN:致命的なバグの修正
- 計算リソースのリークの改善
鯵坂 明 株式会社NTTデータ 基盤システム事業本部
- OfflineImageViewerの拡張
- Hadoop 2系のドキュメント整備
- メトリクスのドキュメント整備
- 品質強化に関する取り組み
岩崎 正剛 株式会社NTTデータ 基盤システム事業本部
- HTraceのモジュール開発
- HTraceトレーシング機能をHDFSに追加
- Sqoopのコネクタ開発
- Hadoopの運用スクリプト改善
コミッタ(主要開発者)に就任
Hadoop
Hadoop
HTrace
コミッタを中心に Hadoopコミュニティを先導し、
Hadoopがより安心して 便利に使えるものになるように 継続して貢献をしていきます!
67 Copyright © 2015 NTT DATA Corporation
Hadoopは1台のマシンで扱えない規模の大量データを高速に処理するためのフレームワークです 数台から始めて、数千台(データ量にして数十PB)までスケールアウトします
Hadoopエコシステムの開発の勢いは今も活発です 性能面、運用面で便利な機能がどんどん追加されています
より低レイテンシな分散処理フレームワークや分析のためのライブラリも充実し、大量データ活用の可能性を広げています
NTTデータも、Hadoopの開発に参戦しています バグフィックスや、運用を便利にするための機能開発に取り組んでいます
国内初のコミッタ輩出!さらなる開発力の向上を目指しています
まとめ
Copyright © 2011 NTT DATA Corporation
Copyright © 2015 NTT DATA Corporation
お問い合わせ先: 株式会社NTTデータ 基盤システム事業本部 OSSプロフェッショナルサービス URL: http://oss.nttdata.co.jp/hadoop メール: [email protected] TEL: 050-5546-2496