Hadoopに関する基本的な内容をまとめてみたものです。Hadoopに関する、Web上にすでにある解説コンテンツをまとめたサイトの抜粋です。
分散処理でインタラクティブ分析を可能にするSpark
高速で分散処理を行うSpark
Sparkは高速に分散処理を行うフレームワークで、HadoopのMapReduceよりも効率良く処理する事を目的に開発されました。
MapReduceはストレージへのアクセス回数が多くオーバーヘッドが増加する傾向にありますが、SparkはHDFSにキャッシュを設ける事でストレージへのアクセス回数を減らして、高速処理を可能にしています。
処理が高速化された事で、インタラクティブな分析が可能となっています。
Sparkの特徴
Sparkは、次のような特徴を持っています。
RDD(Resillient Distributed Datasets)
RDDは、使用頻度の高いデータをキャッシュ上に配置する仕組みです。
RDDによって、処理速度の低下を招くストレージへのアクセスを減らします。
DSLが使用可能
ScalaのDSLを使って記述する事で、汎用的なプログラミングが可能となっています。
Hadoopとの高い互換性
SparkはHadoopと高い互換性を持ちHDFSも利用出来ますので、容易にHadoopとSparkを組み合わせたシステムを構築する事が可能です。
高い耐障害性
処理を高速化するためにキャッシュ上でデータを維持しますが、耐障害性についても十分な配慮がされています。
障害が発生しても、RDDデータを使って普及作業が行われます。
高速で分散処理が出来るSpark
SparkはHadoopと同じようにビッグデータを処理するための分散処理システムですが、Hadoopよりも高速に処理出来るように、
・Directed Acyclic Graph実行エンジンの使用
・データをメインメモリにキャッシュ
などの工夫がされています。
そのため、Hadoopでは高速に処理出来ないアルゴリズムやインタラクティブクエリでも、Sparkなら高速で処理する事が可能です。
Sparkのインタラクティブモードとバッチモード
AWSのEMR(Elastic MapReduce)では、Sparkのアプリケーションをインタラクティブモードとバッチモードで実行出来ます。
インタラクティブモード
Sparkをインタラクティブモードで実行する事で、Spark用アプリケーションの開発が用意になります。
バッチモード
SparkスクリプトをAmazon S3やローカルマスターノードファイルシステムにアップロードする事で、Sparkをバッチモードで実行出来ます。