Hadoopはどのように動くのか ─並列・分散システム技術から読み解くHadoop処理系の設計と実装
第2回 並列データ処理系の歴史と重要性
はじめに
前回は,本連載の目的や,本連載で扱う並列データ処理の定義について説明しました。今回は,並列データ処理系の歴史や重要性について見ていきます。技術を学ぶうえで,その技術の歴史や重要性について理解しておくことはとても良いことですので,かんたんな読み物を読むつもりでお付き合いください。
並列データ処理系の進展
並列データ処理系における基本的なアルゴリズムや処理方式は,並列データベースと称される並列化された(※1)データベースシステムにおける技術に基づいています。
並列データベースに関する研究・開発は,1970年代からの並列データベースマシン(Parallel Database Machine)[1,2,3]と称されるデータベース処理専用の並列計算機に遡ることができます。並列データベースマシンは,データ処理用途にカスタマイズされたプロセッサや記憶装置を用いていたため,必ずしも価格に見合った性能が得られなくなったことから,その後,汎用ハードウェアとその上で動作する並列データベースソフトウェアへと形を変えたものの,その過程において,1990年代の中盤頃までに,結合アルゴリズムの並列化方式や問い合わせ最適化方式などに関する数多くの研究・開発が行われてきました。
2000年代に入り,Netezza(現 IBM PureData)をはじめとするデータウェアハウス(DWH)アプライアンスの登場により,並列データ処理系は一般企業においても広く利用されるようになりました。さらにこの流れは,Google MapReduceのオープンソースクローンであるHadoopの登場により加速の一途を辿っているとみることができます。DWHアプライアンスやHadoopは,基本的には1990年代までの並列データベースの技術に基づいた並列データ処理系であると考えられるものの,ハードウェアの高性能化や新たな需要を踏まえ,その中核をなす技術は少しずつ進展を遂げつつあると考えられています。
- ※1)
- 本連載における「並列」という言葉の定義は次回に行います。今のところは,並列の一般的な意味の通りに捉えていただいて結構です。
並列データ処理系のアーキテクチャ
並列データ処理系におけるシステムアーキテクチャとしては,これまでさまざまなものが考案されてきましたが,おもに次の3つに大別することができます[4]。
- 共有メモリ型(シェアードメモリ)アーキテクチャ
- 共有ディスク型(シェアードディスク)アーキテクチャ
- 無共有型(シェアードナッシング)アーキテクチャ
共有メモリ型のシステム(図1:中)においては,複数の計算機は1つのメモリシステムを共有し,また,共有ディスク型のシステム(図1:右)においては,複数の計算機は複数のディスクドライブなどの二次記憶装置から構成される1つのストレージシステムを共有します。一方,無共有型のシステム(図1:左)においては,複数の計算機はメモリシステムならびにストレージシステムを一切共有しません。
当然,それぞれのアーキテクチャにはほかと比べて優れている点があると考えられています。たとえば,共有メモリ型のシステムにおいては,メモリ空間が共有されているため,プログラミングが比較的容易であり,また,共有ディスク型のシステムにおいては,複数ディスク間の負荷分散が比較的容易であると考えられています。一方,無共有型のシステムは,共有資源への競合が少ないことから,高いスケーラビリティを有すると考えられています[5]。
今日においては,DWHアプライアンスやHadoopなどをはじめとする多くの並列データ処理系が,無共有型のアーキテクチャを採用しています(※2)。本連載における並列データ処理系に関する説明は,おもに,この無共有型のアーキテクチャを対象とします。
- ※2)
- 近年の単一計算機の多くは共有メモリ型アーキテクチャ(SMP型)であるため,多くのデータ処理系や並列データベースは共有メモリ型アーキテクチャに対応した機能を有していると考えられます。共有ディスク型のアーキテクチャに対応した並列データベースとしては,Oracle RACなどが挙げられます。
並列データ処理系の重要性
並列データ処理系が広く利用されるに至るには,それなりの理由があるからでしょう。計算機システムを構成するハードウェア技術の潮流を見ると,その一端を知ることができます。
たとえば,プロセッサコアにおいては,その動作周波数の向上は2008年からほぼ停滞し[6],また,磁気ディスクドライブのレイテンシの低減は年率5%以下に留まっています[7]。同様に,単一ハードウェアコンポーネントにおけるレイテンシ低減の停滞は,メモリモジュールならびにネットワーク装置を構成するハードウェアにおいても見られます[8]。すなわち,これらの単一のハードウェアコンポーネントから構成される計算機システムにおいては,今後著しい性能向上は期待できないと考えられ,計算機システムの高性能化の実現には,複数のハードウェアコンポーネントを効率的に活用することが重要となると考えられます。
企業においては,たとえば共有メモリ型や共有ディスク型のアーキテクチャのような,ハードウェアを高密度に集積した大型システムが広く利用されている一方で,複数のコモディティサーバを高速なネットワークで接続した無共有型のクラスタシステムが利用されるケースも少なからず見られ,昨今のビッグデータ解析においては,価格性能比の点から,後者が広く利用されつつあることが伺えます。
おわりに
今回は,並列データ処理系の歴史や並列データ処理系が広く普及しつつある背景について解説をしました。次回は,これまで明確に説明してこなかった「並列」という用語を定義し,本連載の対象である並列データ処理系がどのようなものであるかをより明確にしていきます。
- 参考文献
- [1]D. DeWitt, R. Gerber, G. Graefe, M. Heytens, K. Kumar, M. Muralikrishna. “GAMMA - A High Performance Dataflow Database Machine” Proc. VLDB, pp.228~237, 1986.
- [2]G. Copeland, W. Alexander, E. Boughter, T. Keller. “Data Placement in Bubba,” Proc. SIGMOD, pp.99~108, 1988.
- [3]S. Fushimi, M. Kitsuregawa, H. Tanaka, “An Overview of The System Software of A Parallel Relational Database Machine GRACE”, Proc. VLDB, pp.209~219, 1986.
- [4]M. Stonebraker. “The Case for Shared Nothing”, Database Engineering, Volume 9, pp.4~9, 1986.
- [5]D. DeWitt, J. Gray, “Parallel database systems: the future of high performance database systems”, Commun. ACM 35, 6, pp.85~98, 1992.
- [6]C. Kozyrakis, A. Kansal, S. Sankar, K. Vaid. “Server Engineering Insights for Large-Scale Online Services”, IEEE Micro, Volume 30, pp.8~19, 2010.
- [7]E. Eleftheriou, R. Haas, J. Jelitto, M. Lantz and H. Pozidis. “Trends in Storage Technologies”, IEEE TCDE, 2010.
- [8]D. A. Patterson. “Latency lags bandwith”, Commun. ACM 47, Issue 10, pp.71~75, 2004.
バックナンバー
Hadoopはどのように動くのか ─並列・分散システム技術から読み解くHadoop処理系の設計と実装
- 第2回 並列データ処理系の歴史と重要性
- 第1回 なぜ,Hadoopはどのように動くのか,を学ぶのか
関連記事
- 日本オラクル,企業のビッグデータ活用に対応した新製品「Oracle Big Data SQL」を発表
- あのジェリー・ヤンも出資! 話題のベンチャーTreasure Dataがめざすのは"ビッグデータをシンプルに"─Hadoop Conference Japan 2013 Winterレポート(3)
- LINEの1億ユーザを支えるHBaseのチカラ─Hadoop Conference Japan 2013 Winterレポート(2)
- Acroquest Technology,Hadoop/HBaseの内部動作を可視化する「halook」をオープンソースとして公開,WGP1.0βおよびENdoSnipe5.0βを同時リリース
- 第8回 コンテンツベースのレコメンドシステムのHadoop実装[後編]