これからオープンソースのSparkやHadoop、ImpalaやTrino、Prestoなどの分散処理に関わろうと思っている方のためのまとめ情報です。(2022/11/24更新)
最新情報は反映されていないので、ブログ記事も探してみてください。
Hadoopとは
Apache HadoopはApache Software Foundation (ASF) の管理の元に公開されているオープンソースソフトウェアです。Apache Licence の元で、誰でも無料で使うことができ、数千台を超える規模で並列分散処理環境を構築することができます。
Hadoopは、もともと Google が公開した論文を元に開発されたソフトウェアの組み合わせです。当初は
- HDFS (Hadoop分散ファイルシステム)
- MapReduce (分散計算処理)
の2つのコンポーネントから構成されていました。Hadoopのバージョンが上がり、MapReduceがYARNとMapReduceの2つに別れたことから、現在は次の3つのコンポーネントから構成されています。
- HDFS(ストレージ)
- YARN (リソース管理、スケジューリング)
- MapReduec(分散計算処理)
データ基盤用のエコシステム
Hadoopは数多くのマシンを使用して大量のデータを蓄積し、そのデータに対して分散処理を行う基盤を提供しています。しかし、当初MapRedecueの開発にはJavaが必要だったり、使い勝手が悪いところもあり、Hadoopを補うために多くソフトウェアが開発されています。それらを総じてHadoopエコシステムと呼びます。

最近ではHadoopエコシステムを含めてHadoopという場合もあります。狭義のHadoopと広義のHadoop。どちらも使われています。また、何を持ってエコシステムと言うのかも厳密な定義はないと思います。
Hadoopエコシステムの一例としては、SQLで分散処理を行うための Apache Hive や Apache Impala、ワークフローエンジンの Oozie、GUIのHue等、数十以上のエコシステムがあります。その多くがYahoo!やFacebookなどの企業で開発され、Apache に寄贈されてオープンソースとして公開されています。現在は様々な企業のエンジニアがメンテナンスなどを行なっています。
また、Apacheプロジェクトのオープンソースではなくても、分散SQLエンジンのPrestoや、ワークフローのDigdagやデータインポートツールのEmbulkなど、データ基盤の構築に広く使われているソフトウェアも多くあります。

現在、分散データ基盤は上記のような多くのソフトウェアを組み合わせて構築します。Hadoopは分散データ基盤の先駆けとなったオープンソースソフトウェアであるという点で重要です。
Hadoopの時代は終わったのか?
BigQueryやSparkが登場して以来、Hadoopは古い&オワコンという言説を2017年ごろから聞くようになりました。ある点においては正しいでしょうし、別の視点では間違っていると言えます。
若干古いですが、@shiumachi 氏の「Hadoopの時代は終わった」の意味を正しく理解する」の記事が大変わかりやすいので、興味がある方はご一読ください。
また、過去の記事(Hadoop is Dead. Long live Hadoop の所感)もご覧ください。
Hadoopは使われているのか?
例えば、LINEでは2000台を超えるクラスターでデータプラットフォームを運用していますし、Yahoo! Japanでも大規模なクラスターを運用しています。トレジャーデータでは1日あたり数百万のクエリで100超を超えるレコードををクラウドで運用しています
また、Preferred Networkではストレージ基盤にHDFSが使われておりApache Ozoneに以降しようとしています。
これらの記事を見てわかるように、現在ではHadoopという名称はあまり使われていません。とはいえ、現在でも、HDFSやSpark、HiveやTrinoなどのOSSが、分散データ基盤の進化の中で利用されています。

現在、分散データ基盤は上記のような多くのソフトウェアを組み合わせて構築します。Hadoopは分散データ基盤の先駆けとなったオープンソースソフトウェアであるという点が重要です。
Hadoopディストリビューション
Hadoop黎明期のように、一部のパワーユーザーが頑張って運用する時代は去り、企業で大規模に利用されることが一般的になりました。
また、クラウド環境でSQLだけを利用するような場合はBigQueryやRedShiftなどの選択肢があるので、クラスターを構築する必要がないかもしれません。
とはいえ、データ基盤を自社で企業で使うためには商用サポートが必要な場合もありますし、また、簡単に導入、運用、監視できるツールも求められます。以下はその一例です
- Cloudera社が提供するCDP (Cloudera Data Platform)および旧バージョンのCDHやHDP
- AWSが提供するEMR (Elastic MapReduce)
- Microsoftが提供するHDInsight
- Googleが提供するGoogle Cloud Dataproc
CDH (Cloudera’s Distribution Including Apache Hadoop)は、Cloudera社のHadoopディストリビューションで、エンタープライズ環境で最も広く使われています。運用管理ツールのCloudera Managerは秀逸な管理ツールです。
参考情報
ビッグデータ関連書籍
Hadoopの理解に関する役立つリンク(若干情報が古いので注意)
- Hadoopの使い方のまとめ(2016年5月版)
Hadoopにはバッチ処理というイメージが付きまとうがそんなことはない。現時点(2016/5)でHadoopがどう使われているかが書かれている - データを一箇所に集めることでデータ活用の民主化が進んだ話
一箇所にデータを集めることで「データの民主化」が進んだという話。データの民主化が進むと何が起こるか?
