Upload
yusukekuramata
View
1.789
Download
2
Embed Size (px)
Citation preview
© Hitachi Solutions, Ltd. 2015. All rights reserved.
今注目のSpark SQL、 知っておきたいその性能とは
株式会社 日立ソリューションズ オープンソース技術グループ
2015/12/9
倉又 裕輔
© Hitachi Solutions, Ltd. 2015. All rights reserved.
自己紹介
1
名前
倉又 裕輔 (くらまた ゆうすけ)
所属
・(株)日立ソリューションズ
研究開発部 オープンソース技術グループ
・OSSコンソーシアム DB部会
担当業務
・OSSのビッグデータ関連技術の
エンタープライズ利用に向けた調査
・調査で得られた技術情報の社内外への発信
© Hitachi Solutions, Ltd. 2015. All rights reserved.
OSSコンソーシアム DB部会の紹介
2
活動目的 データベース領域でのオープンソースのさらなる発展促進を図る
活動方針 ・特定のプロダクトにとらわれず、第三者的な立場で
さまざまなデータベースの情報を収集し、
ユーザ・ベンダにフィードバックする機会を提供する
・データベースの垣根を越えたイベント等を開催する
参加対象
・オープンソースデータベースを活用したソリューション、
サービスを提供している企業、技術者の皆様
・上記のソリューション、サービスを活用している、
又は興味のあるユーザの皆様
参加企業
TIS株式会社
株式会社デジタル・ヒュージ・テクノロジー
特定非営利活動法人LPI-Japan
株式会社日立ソリューションズ
皆様のご参加を
お待ちしています!
http://www.osscons.jp/
© Hitachi Solutions, Ltd. 2015. All rights reserved.
1. 検証の背景
2. 性能検証の方法
3. 性能検証の結果
発表の流れ
4. まとめ
© Hitachi Solutions, Ltd. 2015. All rights reserved.
1. 検証の背景
© Hitachi Solutions, Ltd. 2015. All rights reserved.
1.1 ビッグデータ技術動向
5
ビッグデータ活用は年々拡大している
・ 2014年 国内ビッグデータソフトウェア市場規模は
110億9,100万円、前年比成長率39.3%
・ 大企業によるビッグデータ活用が活発化、
商用アプリケーションの採用が広がっている
・ IoTの普及やデジタルエコノミーの拡大により
市場規模は、2014年~2019年の年間平均成長率33.5%で拡大し、
2019年に470億6,100万円に達すると予測
引用 : 2015年8月12日 IDC Japan株式会社 プレスリリース
http://www.idcjapan.co.jp/Press/Current/20150812Apr.html
© Hitachi Solutions, Ltd. 2015. All rights reserved.
1.2. Hadoopの活用上のニーズ
6
MapReduce Hive
Hadoop
レイテンシよりも スループットを重視
・Hiveのクエリ言語は SQLライクなHiveQL
・MapReduceはスループット重視 でありバッチ処理向き
・ビッグデータ活用における主要なデータ処理基盤としてHadoopが挙げられる ・Hadoop上のデータ処理には、従来から分散処理エンジンであるMapReduceや MapReduce上で動作するクエリ処理技術であるHiveが利用されている
大量データや複雑なクエリでは 応答が遅くなりがち
YARN
HDFS
⇒ Hadoopでも 標準SQLを活用したい
⇒ インタラクティブに クエリを実行したい
HiveQLによるクエリ
© Hitachi Solutions, Ltd. 2015. All rights reserved.
1.3. SQL on Hadoop
7
近年、Apache Sparkの注目度が高まってきている ⇒ Spark SQLに注目し、クエリ処理の性能検証を実施
・Hadoop上で標準SQLを使って、インタラクティブにクエリ処理を 実行可能な技術として、SQL on Hadoopが登場 ・HadoopのデータをDWHなどでのインタラクティブ分析に活用できる ・OSSのSQL on Hadoopの開発が活発に行われてきている
HDFS
MapReduceよりも インタラクティブな
クエリ処理が期待できる
Spark SQL SQL
Hadoop
標準SQLによるクエリ
Impala
Drill
Presto
© Hitachi Solutions, Ltd. 2015. All rights reserved.
1.4. Spark SQLの特徴 (1)
8
Apache Spark
・Spark SQLを含む4つのコンポーネントを持つ - Spark SQL:SQLクエリ処理 - Spark Streaming:ストリーム処理 - MLlib:機械学習処理 - Graph X:グラフ処理
Spark SQLはApache Sparkのコンポーネントのひとつ
・OSSの汎用分散処理エンジン
・MapReduceより高速といわれている
・独自のクラスタマネージャの他 Hadoop YARN、Apache Mesosを利用できる YARNと連携してHadoop上で動作可能
Spark
Hadoop
YARN
HDFS
Logistic regression in Hadoop and Spark
http://spark.apache.org/
http://spark.apache.org/
© Hitachi Solutions, Ltd. 2015. All rights reserved.
1.5. Spark SQLの特徴 (2)
9
Spark SQL
Spark SQL
開発元 The Apache Software Foundation
ライセンス Apache License Version 2.0
開発言語 Scala
ユースケース 大規模データのインタラクティブ クエリ処理など
・Sparkの他コンポーネント(Spark StreamingやMllib)
と連携し、ストリーム処理や機械学習処理に
標準SQLを利用可能
・標準SQLを利用して、さまざまなデータにアクセス可能
- HDFS上のファイル(CSV, JSON, Parquet, ORC, Avroなど)
- Hiveテーブル
- RDBMS(JDBCを利用してアクセス)
http://spark.apache.org/sql/
・JDBC/ODBCを利用して、BIツールから利用可能
SQL
© Hitachi Solutions, Ltd. 2015. All rights reserved.
2. 性能検証の方法
© Hitachi Solutions, Ltd. 2015. All rights reserved.
2.1. 検証の目的と観点
11
Spark SQLの活用のためには、性能について把握が必要
検証の目的
Spark SQLはスケールアウトで性能向上するアーキテクチャ
Spark SQLは大規模データ処理を想定している
検証の観点
Spark SQLのクエリ処理速度の基礎性能を計測し
性能見積もりのための基礎データを得る
(1)ノード数の増加によるクエリ処理速度の向上
(2)処理データ量の増加によるクエリ処理速度の変化
© Hitachi Solutions, Ltd. 2015. All rights reserved.
2.2. 性能の評価方法
12
性能の比較対象 以下の2つのOSSを対象として、クエリ処理速度を比較
・Hive
MapReduce上で動作するクエリ処理ソフトウェア
・PostgreSQL
代表的なOSSのリレーショナルデータベース
性能の評価指標 以下の2つをクエリ処理速度の指標とする
・レイテンシ(=クエリ処理時間)
・スループット(=データ量(データ件数)÷レイテンシ)
Spark SQL・Hive・PostgreSQLで同一のクエリを実行し
レイテンシとスループットを比較する
© Hitachi Solutions, Ltd. 2015. All rights reserved.
YARN
HDFS
AWS
2.3. 検証環境の構成
13 13
Hadoop マスタ PostgreSQL
Hadoop クライアント
m4.xlarge CPU:仮想4コア メモリ:16GiB
Hadoopマスタ
d2.xlarge CPU:仮想4コア メモリ:30.5GiB
Hadoopスレーブ
PostgreSQL
Hadoopクラスタ
Name Node
Resource Manager
Node Manager
Data Node
Hadoop スレーブ
Hive
Metastore Server
Hive Server2 Spark SQL
Hadoop クライアント
OS CentOS 6.5 64bit
Hadoop CDH 5.4.5
Spark SQL 1.5.0 (公式サイトから入手)
Hive 1.1.0 (CDHのパッケージ)
PostgreSQL 9.4
© Hitachi Solutions, Ltd. 2015. All rights reserved.
YARN
HDFS
AWS
2.4. 検証での処理のイメージ
14 14
Hadoop マスタ PostgreSQL
Hadoopクラスタ
Hadoop スレーブ
Hive Spark SQL
Hadoop クライアント
CSV
テストデータ
コンテナ
3ノード 6ノード 9ノード
Spark SQL・Hive 共にYARN上で クエリ処理実行
※処理エンジンは 異なる点に注意
・Spark SQL ⇒ Spark ・Hive ⇒ MapReduce
1ノードで固定
2000万件 (1GB)
2億件 (10GB)
10億件 (50GB)
20億件 (100GB)
40億件 (200GB)
© Hitachi Solutions, Ltd. 2015. All rights reserved.
2.5. テストデータ
15
テストデータ作成のため、PostgreSQLのツール「pgbench」を利用
・銀行の入出金取引のモデル
・下表の2テーブルを利用
・データ量増加の際は、pgbench_historyテーブルのデータ件数を増加
Table Column Type 意味
pgbench_accounts ・100万件 (100MB)
aid integer 利用者ごとの情報 ・aid:利用者ID ・bid:銀行の支店ID ・abalance:残高
bid integer
abalance integer
pgbench_history ・2000万件 (1GB) ~40億件 (200GB)
tid integer 入出金の全履歴 ・tid:取引履歴のID ・delta:入出金額 bid integer
aid integer
delta integer
© Hitachi Solutions, Ltd. 2015. All rights reserved.
2.6. 実行クエリ
16
クエリ処理速度の基礎性能値を計測するため
以下の3種類の基本的なクエリを実行
(1)SELECT:入出金履歴から利用者IDと入出金額を指定して検索
SELECT bid, aid, delta FROM pgbench_history
WHERE aid = 1 AND delta = 2898;
(2)SUM:入出金履歴から支店ごとの入出金額を集計
SELECT bid, SUM(delta) FROM pgbench_history GROUP BY bid;
(3)JOIN:入出金履歴の内、利用者が自身の口座に対して行った取引のみを
抽出し、その入出金額を支店ごとに集計
SELECT c.abid, SUM(c.adelta)
FROM (SELECT a.aid AS aaid, a.bid AS abid,
a.delta AS adelta, b.bid AS bbid FROM history AS a
INNER JOIN account AS b ON a.aid = b.aid) AS c
WHERE c.abid = c.bbid GROUP BY c.abid;
aidとdeltaの指定により 出力処理件数を削減し 不要な負荷を低減
© Hitachi Solutions, Ltd. 2015. All rights reserved.
2.7. 性能計測の手順
17
(1)キャッシュの削除
テストデータの読み込みキャッシュが効いていない状態での性能を計測
・Spark SQL・Hive・PostgreSQLの再起動
・OSのキャッシュ上のデータ削除
(2)クエリの実行 以下の各プロダクトのシェルからクエリを実行 ・Spark SQL:spark-shell ・Hive:Beeline ・PostgreSQL:psql
※キャッシュ削除後の初回の計測値のみ採用し 複数回計測した平均値の算出などは実施していない
(3)レイテンシとスループットの計測 各プロダクトのログからクエリの処理時間=レイテンシを取得 得られた処理時間と処理データ量からスループットを算出
以下を1クエリの実行ごとに実施
© Hitachi Solutions, Ltd. 2015. All rights reserved.
3. 性能検証の結果
© Hitachi Solutions, Ltd. 2015. All rights reserved.
YARN
HDFS
AWS
3.1. 【ノード数増加】 検証環境の構成(再掲)
19 19
Hadoop マスタ PostgreSQL
Hadoopクラスタ
Hadoop スレーブ
Hive Spark SQL
Hadoop クライアント
CSV
コンテナ
3ノード 6ノード 9ノード
テストデータ
2億件(10GB) で固定
1ノードで固定
© Hitachi Solutions, Ltd. 2015. All rights reserved.
3.1.1. 【ノード数増加】 検証結果(1)
20
①SELECT 3ノード 6ノード 9ノード
Spark SQL 42 24 18
Hive 68 45 32
PostgreSQL 57(1ノード)
レイテンシ(秒)
②SUM 3ノード 6ノード 9ノード
Spark SQL 51 31 23
Hive 170 99 72
PostgreSQL 57(1ノード)
③JOIN 3ノード 6ノード 9ノード
Spark SQL 103 59 44
Hive 350 200 150
PostgreSQL 130(1ノード)
Hiveでは数分かかっている
Spark SQLは全体的に
Hiveより低レイテンシ
© Hitachi Solutions, Ltd. 2015. All rights reserved.
3.1.2. 【ノード数増加】 検証結果(2)
21
スレーブノード数
0
5
10
15
0 3 6 9
Spark SQL
Hive
PostgreSQL(1Node)
4.8 4.5
2.9
3ノードより 1.7倍速い
3ノードより 2.3倍速い 11
3.5
6.2
8.3
スループット(百万件/秒)
・ほぼ線形に スループット増加 ・Hiveより 高スループット
①SELECT
1ノードでの性能
© Hitachi Solutions, Ltd. 2015. All rights reserved.
0
5
10
0 3 6 9
Spark SQL
Hive
PostgreSQL(1Node)
3.1.3. 【ノード数増加】 検証結果(3)
22
1.2
2.0
2.9
3ノードより 2.2倍速い
3ノードより 1.7倍速い
3.5
3.9
6.5
8.7
②SUM
スループット(百万件/秒)
スレーブノード数
・ほぼ線形に スループット増加 ・Hiveより 高スループット
© Hitachi Solutions, Ltd. 2015. All rights reserved.
0
5
10
0 3 6 9
Spark SQL
Hive
PostgreSQL(1Node)
3.1.4. 【ノード数増加】 検証結果(4)
23
1.9
1.0
1.4
3ノードより 2.4倍速い
3ノードより 1.8倍速い
0.58
3.4
4.5
1.5
・ほぼ線形に スループット増加 ・Hiveより 高スループット
③JOIN
スループット(百万件/秒)
スレーブノード数
© Hitachi Solutions, Ltd. 2015. All rights reserved.
YARN
HDFS
AWS
3.2. 【データ量増加】 検証環境の構成(再掲)
24 24
Hadoop マスタ
PostgreSQL
Hadoopクラスタ
Hive Spark SQL
Hadoop クライアント
CSV
コンテナ
テストデータ
1ノードで固定
9ノードで固定
Hadoop スレーブ
2000万件 (1GB)
2億件 (10GB)
10億件 (50GB)
20億件 (100GB)
40億件 (200GB)
© Hitachi Solutions, Ltd. 2015. All rights reserved.
3.2.1. 【データ量増加】 検証結果(1)
25
①SELECT 2000万件 2億件 10億件 20億件 40億件
Spark SQL 6.9 18 66 120 240
Hive 23 32 97 180 330
PostgreSQL 5.6 57 310 540 1300
レイテンシ(秒)
②SUM 2000万件 2億件 10億件 20億件 40億件
Spark SQL 10 23 77 140 280
Hive 38 72 270 480 710
PostgreSQL 5.6 57 310 540 1300
③JOIN 2000万件 2億件 10億件 20億件 40億件
Spark SQL 21 44 160 360 720
Hive 70 140 540 990 1600
PostgreSQL 11 130 720 1500 3100
Spark SQLは全体的に Hiveより低レイテンシ
※Spark SQL・Hiveは9ノード。PostgreSQLは1ノードで検証
© Hitachi Solutions, Ltd. 2015. All rights reserved.
0
5
10
15
20
0 1000 2000 3000 4000
Spark SQL
Hive
PostgreSQL(1Node)
3.2.2. 【データ量増加】 検証結果(2)
26
2.9
11.1
16.1
0.88
6.2
3.5 3.7
Hiveの1.4倍
3.6
16.5
3.2 3.1
15.1
10.3
11.3
12.1
データ量(百万件)
・スループットは 単調増加(上昇率は 徐々に低下) ・全体的にHiveより 高スループット
スループット(百万件/秒)
①SELECT
(9Node)
(9Node)
© Hitachi Solutions, Ltd. 2015. All rights reserved.
0
5
10
15
20
0 1000 2000 3000 4000
Spark SQL
Hive
PostgreSQL(1Node)
3.2.3. 【データ量増加】 検証結果(3)
27
2.0
8.7
13.8
3.6 3.5
3.7
0.53
2.8
4.2
Hiveの2.6倍
12.9
14.4
5.6
3.2 3.7
3.1
データ量(百万件)
・スループットは 単調増加(上昇率は 徐々に低下) ・全体的にHiveより 高スループット
②SUM
スループット(百万件/秒)
(9Node)
(9Node)
© Hitachi Solutions, Ltd. 2015. All rights reserved.
0
5
10
0 1000 2000 3000 4000
Spark SQL
Hive
PostgreSQL(1Node)
3.2.4. 【データ量増加】 検証結果(4)
28
0.95
4.5
5.6
1.9 1.5
1.3
0.29
1.4
2.0
40億件で性能がほぼ一定 Hiveの2.3倍
6.1
5.5
2.4
1.8
1.4 1.3
10億件でピーク Hiveの3.4倍
データ量(百万件)
・スループットは ピークをとり その後ほぼ一定値 ・全体的にHiveより 高スループット
③JOIN
スループット(百万件/秒)
(9Node)
(9Node)
© Hitachi Solutions, Ltd. 2015. All rights reserved.
4. まとめ
© Hitachi Solutions, Ltd. 2015. All rights reserved.
4. まとめ
30
■ Spark SQLはHiveと比較して、大量データを低レイテンシに
クエリ処理できることがわかった
Spark SQLの活用により、インタラクティブに分析可能な
データ規模を拡大することが可能である
■ Spark SQLはノード増加によりほぼ線形に性能向上することがわかった
だだし、メモリサイズを超える規模のデータに対しては
性能が低下するため、想定するデータ量に応じた
メモリサイズ・ノード数の検討が必須である
本資料に掲載されている会社名、製品名、サービス名、ロゴは各社の登録商標、又は商標です。 ・Apache Spark、Apache、Spark、Hadoop、Hiveは、The Apache Software Foundationの登録商標または商標です。 ・PostgreSQLは、PostgreSQLの米国およびその他の国における登録商標または商標です ・その他記載の会社名、製品名は、それぞれの会社の商標もしくは登録商標です。