32
© Hitachi Solutions, Ltd. 2015. All rights reserved. 今注目のSpark SQL、 知っておきたいその性能とは 株式会社 日立ソリューションズ オープンソース技術グループ 2015/12/9 倉又 裕輔

今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

Embed Size (px)

Citation preview

Page 1: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© Hitachi Solutions, Ltd. 2015. All rights reserved.

今注目のSpark SQL、 知っておきたいその性能とは

株式会社 日立ソリューションズ オープンソース技術グループ

2015/12/9

倉又 裕輔

Page 2: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© Hitachi Solutions, Ltd. 2015. All rights reserved.

自己紹介

1

名前

倉又 裕輔 (くらまた ゆうすけ)

所属

・(株)日立ソリューションズ

研究開発部 オープンソース技術グループ

・OSSコンソーシアム DB部会

担当業務

・OSSのビッグデータ関連技術の

エンタープライズ利用に向けた調査

・調査で得られた技術情報の社内外への発信

Page 3: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© Hitachi Solutions, Ltd. 2015. All rights reserved.

OSSコンソーシアム DB部会の紹介

2

活動目的 データベース領域でのオープンソースのさらなる発展促進を図る

活動方針 ・特定のプロダクトにとらわれず、第三者的な立場で

さまざまなデータベースの情報を収集し、

ユーザ・ベンダにフィードバックする機会を提供する

・データベースの垣根を越えたイベント等を開催する

参加対象

・オープンソースデータベースを活用したソリューション、

サービスを提供している企業、技術者の皆様

・上記のソリューション、サービスを活用している、

又は興味のあるユーザの皆様

参加企業

TIS株式会社

株式会社デジタル・ヒュージ・テクノロジー

特定非営利活動法人LPI-Japan

株式会社日立ソリューションズ

皆様のご参加を

お待ちしています!

http://www.osscons.jp/

Page 4: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© Hitachi Solutions, Ltd. 2015. All rights reserved.

1. 検証の背景

2. 性能検証の方法

3. 性能検証の結果

発表の流れ

4. まとめ

Page 5: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© Hitachi Solutions, Ltd. 2015. All rights reserved.

1. 検証の背景

Page 6: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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

Page 7: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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によるクエリ

Page 8: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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

Page 9: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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/

Page 10: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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

Page 11: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© Hitachi Solutions, Ltd. 2015. All rights reserved.

2. 性能検証の方法

Page 12: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© Hitachi Solutions, Ltd. 2015. All rights reserved.

2.1. 検証の目的と観点

11

Spark SQLの活用のためには、性能について把握が必要

検証の目的

Spark SQLはスケールアウトで性能向上するアーキテクチャ

Spark SQLは大規模データ処理を想定している

検証の観点

Spark SQLのクエリ処理速度の基礎性能を計測し

性能見積もりのための基礎データを得る

(1)ノード数の増加によるクエリ処理速度の向上

(2)処理データ量の増加によるクエリ処理速度の変化

Page 13: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© Hitachi Solutions, Ltd. 2015. All rights reserved.

2.2. 性能の評価方法

12

性能の比較対象 以下の2つのOSSを対象として、クエリ処理速度を比較

・Hive

MapReduce上で動作するクエリ処理ソフトウェア

・PostgreSQL

代表的なOSSのリレーショナルデータベース

性能の評価指標 以下の2つをクエリ処理速度の指標とする

・レイテンシ(=クエリ処理時間)

・スループット(=データ量(データ件数)÷レイテンシ)

Spark SQL・Hive・PostgreSQLで同一のクエリを実行し

レイテンシとスループットを比較する

Page 14: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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

Page 15: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

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

Page 16: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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

Page 17: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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の指定により 出力処理件数を削減し 不要な負荷を低減

Page 18: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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クエリの実行ごとに実施

Page 19: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© Hitachi Solutions, Ltd. 2015. All rights reserved.

3. 性能検証の結果

Page 20: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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ノードで固定

Page 21: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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より低レイテンシ

Page 22: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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ノードでの性能

Page 23: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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より 高スループット

Page 24: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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

スループット(百万件/秒)

スレーブノード数

Page 25: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

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

Page 26: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© 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ノードで検証

Page 27: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

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

Page 28: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

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

Page 29: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

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

Page 30: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© Hitachi Solutions, Ltd. 2015. All rights reserved.

4. まとめ

Page 31: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

© Hitachi Solutions, Ltd. 2015. All rights reserved.

4. まとめ

30

■ Spark SQLはHiveと比較して、大量データを低レイテンシに

クエリ処理できることがわかった

Spark SQLの活用により、インタラクティブに分析可能な

データ規模を拡大することが可能である

■ Spark SQLはノード増加によりほぼ線形に性能向上することがわかった

だだし、メモリサイズを超える規模のデータに対しては

性能が低下するため、想定するデータ量に応じた

メモリサイズ・ノード数の検討が必須である

Page 32: 今注目のSpark SQL、知っておきたいその性能とは 20151209 OSC Enterprise

本資料に掲載されている会社名、製品名、サービス名、ロゴは各社の登録商標、又は商標です。 ・Apache Spark、Apache、Spark、Hadoop、Hiveは、The Apache Software Foundationの登録商標または商標です。 ・PostgreSQLは、PostgreSQLの米国およびその他の国における登録商標または商標です ・その他記載の会社名、製品名は、それぞれの会社の商標もしくは登録商標です。