データ分析基盤の理解を深めるために、ビッグデータを支える技術を学習中。
今回は、分散処理フレームワークのHadoop/Sparkについて。
データ構造化のパイプライン
非構造化データを、構造化データへと変換することで他のデータと同様に分析できるようにする。
Webサーバーのログファイルや、業務用マスターテーブルなどのデータソースを、分散ストレージに格納し、分散データ処理をし、構造化データに変換する。
分散データ処理フレームワークにHadoopやSparkなどがある。
Hadoop
Hadoopは単体のソフトウェアではなく、分散システムを構成する多数のソフトウェアからなる集合体。
機能 | 説明 |
---|---|
分散ファイルシステム | ネットワーク接続されたファイルサーバーのような存在。多数のコンピュータにファイルをコピーすることで冗長性を高める特徴。 |
リソースマネージャ | CPUやメモリなどの計算リソースを管理。 |
分散データ処理 | MapReduceは任意のJavaプログラムを走らせることができるため、非構造化データを加工するのに適している。SQLなどのクエリ言語によるデータ集計が目的であれば、そのために設計されたクエリエンジン(Apache Sparkなど)を利用する。 |
クエリエンジン | 対話型のクエリ実行だけに特化したクエリエンジン。瞬間最大速度を上げるためにあらゆるオーバーヘッドが排除されており、使えるリソースを最大限に活用してクエリ実行。 |
Hadopの基本となるコンポーネントは、分散ファイルシステムであるHDFS、リソースマネージャであるYARN、分散データ処理の基盤であるMapReduceの3つ。
それ以外のプロジェクトはHadoop本体とは独立して開発されており、Hadoopを利用する分散アプリケーションとして動作。多様なアプリケーションを組み合わせて、自分に合ったシステムを組み上げるのが、Hadoopを中心とするデータ処理の特徴。
Spark
SparkはHadoopを置き換えるものではなく、MapReduceを置き換える存在。大量のメモリを活用して高速化を実現することが特徴。MapReduceが開発された時代は、少ないメモリしか使えなかったため、MapReduceの処理の大半はディスクの読み書きに費やしていた。
Sparkは大規模なバッチ処理だけでなく、SQLによる対話的なクエリ実行や、リアルタイムのストリーム処理にまで広く利用されている。
機能 | 説明 |
---|---|
Spark SQL | SQLでクエリを実行 |
Spark Streaming | ストリーム処理を実行 |