ITアーキテクトのひとりごと
第68回「大量処理を高速にする方法」
ビッグデータという言葉。どのくらいのデータ量、データ発生頻度がビッグデータというのかの定義は無いので、主観的に「これはビッグだ」と思った人がビッグデータと呼んでいるだけじゃないか、というのが実感だ。
スーパーサイエンスの世界ではビッグデータは当たり前なので、どうやって大量のデータを取りこぼしなく取得し、長期間にわたって保管し、やってもやっても終わらない大量の計算処理を速く確実に実行する事に頭を絞ってきた。
データ構造が分かっている場合は、ファイルシステムのオーバヘッドも問題になるので、rawデバイスとしてストレージ装置を使う、なんていうシステムもある。
RAID装置が途中で一瞬息をつくような動きをしたりすると、ストリーミングで切れ目なく流れてくる大量データを取りこぼすことがあるというので、メーカにお願いして特注構成を作ったこともある。
大量処理を高速にするためには、
・CPUを遊ばせない。
・I/Oを遊ばせない。
・ストレージ装置を遊ばせない。
・処理プログラムの無駄を無くす。
・失敗した処理の再実行コストを最小にする。
など考えることは沢山ある。
とにかく、細かな無駄、余裕をこそぎ取った上で、すべてのリソースの稼働率を極大化する。
単体のディスク装置のスピード向上は長い間、停滞中というか向上が見込めそうにないので、たくさんのディスク装置を並列運転して見かけのスピードを速くしよう、コントローラもパフォーマンスネックになるので並列化しようなど、努力を積み重ねてきたがそろそろ限界。
オールSSDドライブ装置で劇的に早くなり、ついには、超大容量メモリでディスクを代替しようという最後の切り札までも早々に登場してしまい、これでダメならどうするんだ、という状況になったが、
Hadoopのように装置固有の性能に頼らない工夫が実用化しているので、しばらくはシステム全体としての性能向上が続くだろう、とちょっと安心できる。
このように、最後の切り札まで登場してしまい、ストレージ装置固有の性能向上が頭打ちなので、ストレージシステムの世界でも、これからはミドルウエア、アプリケーションの時代が始まる。
もっとも、DWHのテラデータのようなシステムは、とうの昔から、これらの工夫で高性能を発揮してきた老舗中の老舗だ。これまで特別なアプリケーションでしか必要とされていなかったシステム的な工夫が一般化、普遍化してきたわけだ。
専用化したシステム、アプリケーションがないと大量処理の性能向上が望めないということがわかってきたので、様々な特化したシステムが登場しつつある。
そんなシステムを調べてみると、百花繚乱、はっきり言ってよくわからない。そんな仕事に係ることもなさそうなので適当に理解する。その道の専門家になるつもりもないので、言葉だけを聞きかじって記憶することにしているが、特殊な世界があることだけはわかる。
我々ストレージ屋も、新しい世代の専門家と会話するために、もうちょっと勉強しないといけないのだろうか。
株式会社エクサ 恋塚 正隆