大量データ処理 / 分散処理アーキテクチャ

データを管理・活用するためのシステムとして代表的なのがMySQL、OracleなどのRDBMS(リレーショナルデータベース管理システム)です。RDBMSは複雑なデータをリアルタイムで取り扱える半面、大量のデータ処理に際して能力が低下してしまうという弱点があります。

そこでDBでの処理では追いつかないデータ量を高速処理するために導入された概念が“分散処理”です。分散処理では、複数のサーバーもしくはCPUでデータを分割し、大量のデータを高速で処理できるようにします。たくさんのパソコンが作業を分けあって処理している様子を思い浮かべるとわかりやすいでしょう。

分散処理は気象・災害予測や遺伝子解析、SNSのリアルタイム解析、サイトのユーザー行動分析など大量のデータ処理を必要とする作業に用いられます。ビッグデータの取り扱いにおいて分散処理は欠かせない要素であり、昨今その需要は高まり続けています。

分散処理のフレームワーク、HadoopとSpark

システム開発において、フレームワークは「システムに機能を組み込む際に使えるひな形」を指します。フレームワークを用いることでシステム開発者は、高度な技術を学習する時間や一から開発する手間を抑えられます。

分散処理の機能を組み込む際に使えるフレームワークの代表格がHadoopとSpark。Apacheソフトウェア財団の下で開発されたオープンソースのフレームワークで、2018年に発表されたデータサイエンティストに求められる技術的なスキルのランキングでは、Hadoopが4位、Sparkが5位にランクインしました。データサイエンティストを目指す方は特に理解を深めるべきキーワードだといえるでしょう。

出典:The Most in Demand Skills for Data Scientists┃Jeff Hale(Medium)

Hadoopは米Yahoo!社に所属していたDoug Cutting氏を中心として2006年に開発された分散処理フレームワークです。2004年Googleが論文にて発表した独自の分散処理フレームワークMapReduceをもとに生み出されました。ちなみに名前の由来はDoug氏の息子が持っていたゾウの人形です。

Hadoopのメリットはまずサーバーの台数に比例して処理能力を高められる、いわゆるスケールアウトが可能だということ。Web上のビッグデータはどんどん増え続けます。そんなときHadoopを実装していればコストを押さえつつ対応し続けられるのです。

また、安定性が高いのも魅力のひとつ。どこか一つのサーバーで障害が起こってもほかのサーバーが対応することで処理が止まりません。

ほかにもHadoop Streamingというツールを使えばあらゆる言語でスクリプトを作成できる、自動で同じkeyのデータがまとめられるといったメリットがあり、Yahoo!・Amazon・Facebookなどの有名企業でHadoopは活用されてきました。

ただしHadoopにはリアルタイムで特定のデータを見つけ出すような高速処理には向かない、Hadoop StreamingなしではJavaが必須といった弱点もあります。

SparkはHadoopが苦手なリアルタイム処理が行える

Sparkはデータの格納場所をHDDやSSDではなくメモリにすることでHadoopの10~100倍の速度を実現する分散処理プラットフォームです。カリフォルニア大学バークレー校で開発が進められ、2014年にApacheソフトウェア財団に寄贈されました。

SparkはHadoopが弱点とするリアルタイム処理に対応可能でかつ、データの格納場所の選択肢もHadoop Distributed File System (HDFS)、Cassandraなど多様です。

現在HadoopとSparkは共存関係にあり、「リアルタイムの高速処理が求められるデータはSparkで、メモリに乗り切る以上のサイズのデータを処理する場合はHadoopで」などと使い分けられています。