なぜMapReduceのようなものを使わないのでしょうか?
このページでは、MapReduceではなくClickHouseを使う理由を説明します
MapReduceのようなシステムは、reduce演算が分散ソートに基づく分散コンピューティングシステムと見なせます。この種のオープンソースソリューションとして最も一般的なのは、Apache Hadoopです。
これらのシステムはレイテンシが高いため、オンラインクエリには適していません。言い換えると、Webインターフェイスのバックエンドとしては使えません。この種のシステムは、リアルタイムのデータ更新にも向いていません。演算結果とすべての中間結果 (存在する場合) が単一サーバーのRAMに収まるのであれば、reduce演算の実行方法として分散ソートは最適ではありません。オンラインクエリでは、通常これが当てはまります。このような場合、reduce演算にはハッシュテーブルを使うのが最適です。map-reduceタスクを最適化する一般的な方法は、RAM上のハッシュテーブルを使った事前集約 (部分reduce) です。この最適化はユーザーが手動で行います。単純なmap-reduceタスクの実行時にパフォーマンスが低下する主な原因の1つが、分散ソートです。
多くのMapReduce実装では、クラスター上で任意のコードを実行できます。しかし、すばやく試行錯誤を行うには、OLAPでは宣言的なクエリ言語のほうが適しています。たとえば、HadoopにはHiveとPigがあります。さらに、Spark向けのCloudera ImpalaやShark (outdated) 、またSpark SQL、Presto、Apache Drillもあります。このようなタスクを実行する際のパフォーマンスは、専用システムと比べると大幅に劣ります。また、レイテンシも比較的高いため、これらのシステムをWebインターフェイスのバックエンドとして使うのは現実的ではありません。
最終更新日 2026年6月10日