Hadoop とは?
- ビッグデータを分散処理を支えるオープンソースのソフトウェアフレームワーク
- Java言語で作られている。
- 2019/02 現在バージョンは 3.2.0
- 大きく分けてMapReduceとHDFSで構成されている
- MapReduce
- Mapとは入力を受け取り、それを変換しkey-valueの形式で出力を行う処理を実装するためのもの
- ReduceではMapで出力したkey-valueのペアのうち同じkeyを持つものを集約して処理を行う
- HDFS(Hadoop Distributed File System)
- データを複数のディスクから並行して読み、処理の多重度を上げることが可能
- NameNodeにデータの格納先を記録しておき、DataNodeにデータを格納
Hive とは?
HiveはHDFS上に保存されたデータをテーブルとして扱い、
HiveQLと呼ばれる、SQLライクなDSL言語を使うことで、
MapReduceを意識することなく、データを操作することができる。
Yarn とは?
- Yet-Another-Resource-Negotiatorの略
- Hadoopクラスタのリソース管理、ジョブスケジューリングを担当する。バージョン2.2からYarnが組み込まれている。
- ResourceManager, NodeManager, ApplicationMaster で構成されている。
- ApplicationMaster が必要なリソース割り当てをResourceManager に依頼
- ResourceManager がリソース割り当てを実施し、ApplicationMaster がNodeManager に処理の実行を依頼
Apache Spark とは?
- HadoopがJava言語で作られているのに対してSparkはJavaの派生言語であるScalaで作られている。
- Java, Python, R言語等昨今広く使用されている言語に対応したAPIがある。
- インメモリによる高速化が可能
- データの格納先がHDFS以外にも対応
- Cassandra, OpenStack Swift, Amazon S3等
CDH(Cloudera Distribution for Hadoop)とは?
- Apache Hadoopや関連製品を含むClouderaのソフトウェアディストリビューション
- CDHのおかけで環境の構築が容易となった。
- Apache Flume や Hive や Spark、Kudu などを含む。