Greenplum HDが高性能な理由
Hadoop以外の製品を利用していてHadoopに乗り換えたならば、通常はそれだけで処理性能が向上するはずだ。とはいえ、より高性能を求めるならば、コモディティサーバーを数多く導入しさらなる分散処理化を行うことになる。サーバー数が数台程度であれば管理も楽だし設置スペースも問題にならないかもしれない。しかし、高性能を求め数十台、数百台とサーバーを増やしていけば、管理の手間も設置スペースや消費電力も増大してしまう。これに対し「仮に性能が3倍になれば、台数も1/3で済む」と草薙氏は指摘する。当然ながら、障害対策の面でもサーバー台数は少ないほうがいい。
そのため、Greenplum HDでは、管理性、信頼性の向上だけでなく、性能向上にも力を入れているとのこと。
「Greenplum HDがなぜ速いかと言うと、Apache HadoopはJavaベースで開発されているのでどうしてもJavaの実行環境のオーバーヘッドがあるからなんです。これに対しGreenplum HDは、C言語で書き換えているのでオーバーヘッドがほとんどありません」と語るのは、データ・コンピューティング事業本部 テクノロジー & プロフェッショナルサービス部 テクニカルコンサルタントの中村 完氏。
互換性を確保しつつ、内部実装をC言語で書き換えることで、まずは高速化を図っているのだ。さらに、それ以外にもロック競合、スレッド競合といった部分を排除することで、並列化を最大化している。
また、アーキテクチャ的には、Apache Hadoopではネームノードが1つしかないのに対し、Greenplum HDではそれを複数持ち、ロードバランスする仕組みになっている。さらに、Greenplum HD内部に組み込まれたビルトイン圧縮機能を利用すれば
「さらにI/Oを減らすことができ、大幅な性能向上が図れる」とのこと。ネームノードを複数持つ構成は、単一障害対策にもつながり、信頼性向上にも寄与することになる。