Tableau と Hadoop の 5つのベストプラクティス

Tableau Software プロダクトマネージャー、Jeff Feng
Tableau と Hadoop の
5つのベストプラクティス
2
Tableau は、複数のデータプラットフォームのデータをリアルタイムに使用して分析できるように設
計されています。 従来のツールを使いにくいと感じてきたビジネスユーザーは、この手法に注目し
ています。 では、クエリが返ってくるまでの時間が秒単位ではなく分単位、時間単位だったら、どう
なるでしょうか。 それでも「フロー」、つまり分析の流れは維持できるのでしょうか。
今や、何百万あるいは何十億という行数のデータでさえ簡単な操作で分析できる時代になり、ユー
ザーはほとんど瞬間的に検索結果が返ってくることを期待しています (情報収集に関する2秒ルー
ルについては、こちらの研究を参照)。 ユーザーの操作と応答に2、3秒より長くかかるようであれ
ば、ビジュアル分析の「流れ」が途切れたように感じられてしまいます。 したがって、ユーザーを常
に引きつけておくためには、高速クエリを実現しビッグデータからより多くの有意義なインサイトを引
き出せるような環境を用意することが不可欠です。
多くのベストプラクティスを応用すれば、ユーザーはビッグデータのプラットフォーム上に構築した
Tableau のビジュアライゼーションとダッシュボードのパフォーマンスを最大限に引き出すことがで
きます。 そのためのベストプラクティスは、次の5つに大別されます。
1.
2.
3.
4.
5.
高速かつインタラクティブなクエリエンジンの活用
ライブ接続と抽出の戦略的な使い分け
データレイクからのデータの作成
抽出の最適化
接続パフォーマンスのカスタマイズ
3
1.
高速かつインタラクティブなクエリエンジンの活用
MapReduce を使用して Hadoop 上で実行される Hive クエリは、SQL クエリを
MapReduce ジョブにマッピングする際に生じるオーバーヘッドがあるため、基本的に低
速です。 Hive on MapReduce は、フォルトトレランス性が高く、ETL アプリケーションの
ようなバッチ処理の実行には適していますが、パフォーマンスの点では不利になります。
Hive のアップデートで、Tez (インタラクティブクエリ機能) や Spark (インメモリ処理の機
SQL on Hadoop の新しいベンチ
マーク: Impala 1.4 でパフォー
マンスのギャップが拡大
能) といった新しいアプリケーションが導入され、クエリ速度は大幅に向上しました。
Hive on Hadoop 以外にも、クエリを高速化する優れたオプションが多数あります。
Impala が、最近のベンチマークによると Hadoop で最速のパフォーマンスを誇ることは
広く知られています。 まだ開発初期の段階ながら、Spark SQL は高速データ処理エンジン
としての潜在能力の高さを示しています。 Spark SQL では、Hadoop または Spark のス
キーマ RDD に格納され、Hive のメタストアによって参照されるデータを処理できます。
Impala も Spark SQL も、Tableau ではコネクタを用意しサポートしています。 Pivotal
HAWQ、Presto、Apache Drill も、Hadoop におけるパフォーマンスを語る上で頻繁に話
題にのぼるようになったテクノロジーです。
ビッグデータのベンチマークでは、
5つのシステムを定量的および
定性的に比較できます。
もう1つのオプションとして、Hadoop の外にも目を向けてみましょう。 Actian Vector、HP
Vertica、Teradata Aster Data、SAP Hana、ParAccel、Pivotal Greenplum といった高
速分析データベースは、Tableau ビジネスユーザーにとってクエリの遅延が少ないという
点で、Hadoop での処理後のデータをホストする場所として最適です。 クラウドでのホス
ティング型インフラストラクチャサービスも、ますます一般的になりつつあります。 Google
BigQuery が利用する Google のインフラストラクチャは巨大であり、特に大規模なデー
タセットでのデータ処理と高速クエリ機能で威力を発揮します。 一方、Amazon Redshift
は、高速データアクセスに重点を置いた完全マネージド型の列指向ストレージデータ
ウェアハウスです。 また、スタートアップやオープンソースのプロジェクトからも新しいテク
ノロジーが生まれています。Hadoop に OLAP キューブを利用したり (AtScale、eBay
Kylin)、インデックス作成エンジンを利用したり (JehtroData) して、短い待ち時間で 100
万行以上のクエリを可能にするテクノロジーです。
4
2.
ライブ接続と抽出の戦略的な使い分け
Tableau は、ライブでデータソースに接続することも、インメモリの抽出を介して Tableau
のデータエンジンに接続することもできるハイブリッドなデータアーキテクチャを採用して
いるので、極めて柔軟にビッグデータを扱うことができます。 抽出は、高速クエリエンジン
を利用できない場合、小・中規模のデータセット (数億行以下) の場合、あるいはオフラ
イン分析が必要な場合に理想的です。 大規模なデータセットの場合は、分散処理を行
う Hadoop Hive やその他のクエリエンジンが、Tableau のデータエンジンよりも適してい
ます。 また、高速データベースエンジンを利用できる、あるいはリアルタイム分析が必要
な場合には、ライブ接続のほうが適しています。 推奨されるシナリオのリストを、次の図1
に示しました。
抽出を推奨
データベースクエリの実行速度が遅い
使用するデータセットのサイズが小さい
(たとえば、数億行以下)
オフライン分析が必要
カスタム SQL を使用する
追加の分析機能が必要
(セット、ランク、個別、中央値)
ライブ接続を推奨
高速データベースクエリエンジンを
使用できる
サイズの大きなデータセットが必要
リアルタイム分析が必要
ワークブックでパススルー
RAWSQL 関数を使用する
ユーザーレベルでの強固なセキュリティ
が必要 (Tableau Server にパブリッシュ
された抽出を除く)
図1: 抽出とライブ接続のどちらが適切かを示す推奨シナリオ
5
3.
データレイクからのデータの作成
大規模データに対応でき、費用対効果も高く、非構造化データを処理できる Hadoop には
多くのメリットがありますが、ここで注目すべきは Hadoop がデータレイク (すべてのデータ
を形式を変更せずに保持するリポジトリ) として理想的な点です。 Tableau は、データレイ
クのデータを検索するのに効果的なツールです。しかし、ナレッジワーカーがビジュアライ
ゼーションを利用できるように Hadoop のパフォーマンスを最適化するには、まずデータ
セットを整理することが一番です。
IT 管理者には、Hadoop クラスタの効率を改善するために応用できるテクニックがあります。
パーティションの設計 - 1つ以上のフィールドでパーティションを作成して、Hive の表を
分散システム上のファイル (多数のデータブロックを持つ) に編成すると、パーティション
が作成されていないフィールドでフィルタリングされたクエリより、クエリが大幅に高速に
なります。
データセットのサイズ - 行う分析とレコード範囲に対して検索したいディメンションとメジャー
がわかっている場合には、ナレッジワーカーに公開される最終的なデータセットを限定する
と、常にパフォーマンスが向上します。
フィールドをクラスタリングしてグループ化フィールドおよび結合キーとして使用 - クラス
タリングしたフィールドで、表のデータをディスク上で分割する方法を指定できます。 クラ
スタリングしたフィールドを JOIN および GROUP BY で使用すると、パフォーマンスの
向上を期待できます。
ストレージファイル形式 - クエリを効率的に実行するには、ファイル形式が重要な役割を果
たします。 利用しているクエリエンジンに最も適したファイル形式を使用してください。 Hive
の場合は Optimized Row Columnar (ORC) 形式、Impala の場合は Parquet 形式です。
データモジュールの設計
• データ型 - 可能な場合には 必ず数値型を使用してください。文字列型よりはるかに高
速です。
• 結合 - 結合の実装が不完全なビッグデータシステムが多いため、不必要な結合は避
けてください。 結合を使用する場合は、COMPUTE STAT ステートメントを実行し、処
理エンジンが結合クエリのパフォーマンスを自動的に最適化できるようにしてください。
• 式 - 効率的に評価できない式は使わないようにしてください。
6
4.
抽出の最適化
Tableau のデータエンジンは、ディスクから L1 キャッシュまでのすべてのメモリ階層を
有効に活用するインメモリ分析データベースです。 分析を高速化する強力なツールでも
あります。 Hadoop と同程度の規模を想定して構築されていないものの、Tableau デー
タエンジンは、列数が膨大で数億行にものぼるデータの抽出からでも、短い待ち時間で
結果を返します。 Tableau データエンジンで抽出を利用すれば、通常はそのままでも
パフォーマンスが向上しますが、データサイズを縮小することでクエリを加速できる可能性は
たくさんあります。
フィルターの定義 - フィルターを作成すれば、関心のあるデータにだけに集中できます。
使用していないフィールドの非表示 - 分析に必要ないフィールドを非表示にすることで、
抽出を簡潔かつ小さくできます。
ビジュアルなディメンションの集計 - 粒度の細かいデータが必要ない場合には、粒度の
粗いビューでデータを事前に集計しておけば、同じ情報を短時間のクエリで得ることがで
きます。
日付のロールアップ - 可能な場合には、日付をロールアップしてタイムラインの粒度を粗
くします。
サンプリング - データベースがサンプリングをサポートしている場合は、サンプリングに
よってデータの全体傾向を維持したまま、データサイズを大幅に小さくすることができます。
上位 N - データセットのうち上位の値だけが必要な場合は、上位 N 検索もデータセット
のサイズを縮小できる効率的な手段になります。
7
5.
接続パフォーマンスのカスタマイズ
Tableau ユーザーは、ライブクエリの接続パフォーマンスをさまざまな方法で最適化で
きます。
カスタム SQL - 接続のベースとして SQL 式をTableau で利用できます。 カスタム SQL
は、新しいデータセットの検索やプロファイリングを行うためにデータセットのサイズを
(LIMIT 句を使用して) 制限したいときに、特に効果があります。
初期 SQL - 初期 SQL は、接続の確立時に環境設定パラメーターを設定するので、すぐ
に作業を始めることができます。 以下のようなことが可能になります。
• Maps と Reduces の既定ブロックサイズを小さくし、データ分析の並行処理数を増
やします。
• フィールドのクラスタリングを有効にして、結合のパフォーマンスを最適化します。
• MapReduce ジョブに対して異なるアプローチをとるように Hive に通知する設定を有
効にし、不均一な分散に対する設定を調整します。
まとめ
ビッグデータの時代が到来しました。データの増加は加速する一方であり、企業はデー
タインフラに Hadoop、Spark、NoSQL など、高速分析用データベースを導入し、新しい
データの常識に対応しようとしています。 Tableau を使うことで、ビジネスユーザーは
ビッグデータを視覚的にとらえ、そこからインサイトを得ることができるようになります。 用
途に合わせてベストプラクティスを応用することで、ビッグデータを最大限に有効利用で
きるようになります。
8
Tableau について
Tableau Software のミッションは、お客様がデータを見て理解できるように支援することです。
Tableau を利用すれば、簡単に情報を分析してビジュアル化し、共有することができます。 すでに世界で
26,000 社を超えるお客様が Tableau を導入し、オフィスや外出先で簡単にデータ分析を行っています。
また、無料のデータビジュアル化ツールである Tableau Public を利用して、数万人のお客様がデータを
インタラクティブな Viz (ビジュアライゼーション) としてブログや Web サイトで共有しています。 ぜひ無料
トライアル版をお試しください。
www.tableau.com/ja-jp/trial
その他のリソース
トライアル版 (無料) をダウンロード
製品デモ
トレーニングとチュートリアル
コミュニティとサポート
カスタマーストーリー
ソリューション
関連ホワイトペーパー
ビッグデータに関する Tableau のビジョン
ビッグデータで成功するための7つのヒント
データドリブンな文化を育成: エコノミストインテリジェンスユニットおよび
Tableau からの特別レポート
ビッグデータ: 次なる産業革命
Tableau Software とビッグデータ
Aberdeen Group: 分析とビッグデータの価値を最大限に利用する
すべてのホワイトペーパーを見る
Tableau および Tableau Software は、Tableau Software, Inc. の商標です。その他の社名および製品名は各社の商標です。