Blog
Actian Matrixによる超高速オンプレDWH環境を構築しました!
Actian Matrixと言ってもあまり知らない方もいらっしゃるかもしれません。
最近ParAccelからMatrixに名前が変わったのです。
ParAccelといえばデータベースマニアの方なら知っている方も多いかも?
それでもParAccelとは何か知らない方も多いと思うのでまずはParAccelから紹介させていただきます。
ParAccelは2005年に出来たMPP(マルチパラレルプロセッシング)型データベースです。
TPC-Hでも上位に来るこのデータベースはスケールアウトの容易さや
カラムナーデータベースの特徴を持った高速データ解析を強みとします。
参考)
https://en.wikipedia.org/wiki/ParAccel
http://cloud.watch.impress.co.jp/docs/column/infostand/20130225_589169.html
特徴だけ聞くと「既にうちはRedshift使っているよ」と言われそうなのですが、
そもそもこのRedshiftはAmazon.comが2011年に投資をして手に入れたサービスで、
大本になっているのはParAccelなのです。
なので実際のCOPYコマンドだったりSQLだったりちょっとした特徴を除けばほぼ一緒です。
※実際にMatrixにはCOPYコマンドにParallelインポートオプションがあったり、
JSONでのデータ取得の仕方が若干違うなど細かい差はあります。
弊社では2012年から2013年頃よりRedshiftの利用が増え始め、
2015年6月にはアドテクスタジオのRedshift Node数は100を超えました。
Redshiftは大量のデータ、たとえばMySQLに入らなくなったデータを簡単に移行することができ、
なおかつDistkey,Sortkeyによる高速データ取得が可能ということで
ほとんどのプロダクトで利用されてきました。
しかし便利とはいえデータ量が増えてくるとHDDインスタンスでは遅くなり、
SSDインスタンスになると1nodeあたり2.56TBしか入らないなどの問題があります。
もちろんNode数を増やせば解決する問題なのですが、
たとえばこの2.56TBのSSDインスタンスを1年立てると45,411ドルかかります。
(dc1.8xlarge $4.8/h x 24 x 365 x 1.08)
120円で計算すると約550万円ですね。
円安が続いている今、nodeが足りなければ増やせば良いという考えが
中々難しいところであります。(とはいえもの凄い量のNode数を使っていますが。。。)
そこでそもそもRedshiftをオンプレ化したらどうか?と始まったのが
今回のプロジェクトの切っ掛けです。
アドテクでは8割以上がオンプレ、2割ぐらいがCloudで運用しています。
大部分がオンプレなのでオンプレでも使えるRedshiftのような物が求められていたのもあります。
今回購入するに当たり構築した構成は下記になります。
サーバー
Huawei RH2288h V3
CPU : Xeon E5-2667 V3 x2
MEM : 384GB
Disk : Intel DC S 3500シリーズ 1.6TB x24
NIC : QSFPx2
上記構成が10台
スイッチ
TORスイッチ Huawei CE7850-EI-B00 x2
上位スイッチ Force10 S6000x2
スイッチ間は160Gbpsで接続
見てもらうと分かるかもしれませんがRedshiftよりも
かなり自由度の高い構成になっていると思います。
ネットワークのQSFP(40Gbps)化による高速化
データセンタークラスのDC 3500シリーズを使ってIOの高速化
Redshiftではメモリが244GBまでしか使えないところを384GB搭載
全体的にRedshiftよりもかなり高スペックになっていると思います。
構成が自由に選べるのもMatrixの強みですね。
今回はサーバーとスイッチにHuawei製品を選択してみました。
今までいろいろな会社のサーバーを触ってきたのですが
故障率が低く要望にもいろいろ答えてもらえるのがポイントでした。
今回の導入については長い道のりがありました。
いろいろ検証している中で下記の困った点があったからです。
・そもそもデータをS3に入れているケースが多く、
直接S3からデータをインポートが出来ないのが不便。
・中々スペックに見合ったパフォーマンスが出ない。
・Fluentdによるデータのログインポートが出来ない。
・Actian社のエンジニアとのやりとりが大変。
・S3からのデータインポートについて
MatrixはS3からのCopyコマンドが実行できません。
このためデータをMatrixサーバーのリーダーノードにデータを載せる必要があります。
ただそれだとMatrixのリーダーノードにいろいろなサーバーからデータを送る必要があるので
MapR-FSをマウントすることで解決しています。
NFSプロトコルによりいろいろなサーバーにマウントできる特徴があり、
MapR-FSはHadoop上にあるためdistcpによりS3とSyncすることが可能です。
なのでS3を1時間おきにDistcpで差分Syncを行うことにより
Matrix側からはいつでもS3からのデータインポートが出来るようになっています。
・パフォーマンスについて
これが結構大変でした。まずインストールして既存のRedshiftで使っている
ロードSQLや解析用SQLを流すとスピードがまったく出なかったです。
残念ながらあきらめかけていた頃、Strata HadoopでNew Yorkに行った際に
Actianのエンジニアとミーティングを行い、気づいたら深夜まで一緒にチューニングを行うことになりました。
結果、あまり設定ポイントが無いと思っていた所、
主にネットワーク周りの裏チューニングポイントを発見して
Redshiftよりも高速に処理できることが分かりました。
・Fluentdによるログデータインポートについて
最近はやりのFluentdによるRedshiftのインポートは内部的に
S3を経由しているためリアルタイムインポートは絶望的でした。
しかしActian側にJDBCドライバーを修正してもらい、
弊社側のエンジニアがPluginを書くことにより解決することができました。
・Actian社のエンジニアとのやりとり
やはりコミュニケーションはとても大変で、
メールでのやりとりは大変で、電話会議も国際回線なので
あまり聞き取れず、最初は大変でした。
そんなこともあり、New Yorkに集まったり、
Actian社のエンジニアに日本へ来てもらったりして
直接会話することが多いです。
直接要望を上げることで、機能の改善なども頻繁に行ってもらってます。
現在ではSSDで0.3PB程度の容量があり、
大規模なデータを超高速に解析する基盤として使われていく予定です。
Author