ポイント: Hadoopエコシステムは、データ管理と分析を促進する著名なApacheプロジェクト(Spark、Hive、Pigなど)を含むさまざまなコンポーネントとツールを通じてビッグデータ処理を強化します。
- Hadoopは、特定のタスクのための追加ツールを備えた基盤となるフレームワークを提供します。
- 商業ディストリビューションはHadoopの機能と使いやすさを向上させます。
Hadoopエコシステムの概要
Hadoopはフレームワークであることを忘れないでください。Hadoopが家だったら、あまり快適な場所ではないでしょう。それは壁、窓、ドア、パイプ、そして配線を提供します。Hadoopエコシステムは、そのフレームワークを特定のニーズや嗜好に応じた快適なビッグデータ活動のための家に変える家具を提供します。
Hadoopエコシステムには、公式のApacheオープンソースプロジェクトと幅広い商業的ツールとソリューションが含まれています。最もよく知られているオープンソースの例には、Spark、Hive、Pig、Oozie、Sqoopが含まれます。商業的なHadoop製品はさらに多様で、Cloudera、Hortonworks、MapRなどのベンダーからのプラットフォームやパッケージされたディストリビューション、さらに特定のHadoop開発、生産、保守タスクのためのさまざまなツールを含んでいます。
Hadoopエコシステムで利用可能なソリューションのほとんどは、Hadoopの4つのコア要素(HDFS、MapReduce、YARN、Common)の1つまたは2つを補完することを目的としています。ただし、商業的に利用可能なフレームワークソリューションは、より包括的な機能を提供します。以下のセクションでは、Apacheプロジェクトから始まるHadoopエコシステムのより顕著なコンポーネントのいくつかを詳しく見ていきます。
ApacheオープンソースHadoopエコシステム要素
Apache Hadoopプロジェクトは、Hadoopの機能を拡張し、使いやすくすることを目的とした複数のプロジェクトを積極的にサポートしています。開発ツールを作成するためのいくつかのトップレベルプロジェクトやHadoopデータフローと処理の管理のためのプロジェクトがあります。多くの商業的なサードパーティソリューションは、Apache Hadoopエコシステム内で開発された技術に基づいて構築されています。
Spark、Pig、Hiveは、最もよく知られているApache Hadoopプロジェクトの3つです。それぞれは、Hadoopデータを処理するアプリケーションを作成するために使用されます。Spark、Hive、またはPigのどれが優れているかについて多くの記事や議論がありますが、実際には多くの組織が特定の機能に最適化されているため、単一のものだけを使用していません。
Sparkは、プログラミングモデルであり計算モデルです。Hadoopのインメモリコンピューティングへのゲートウェイを提供し、これが人気と広範な採用の大きな理由です。Sparkは、ディスク上でなくメモリ内でワークロードを実行できるMapReduceの代替手段を提供します。SparkはHDFSからデータにアクセスしますが、MapReduce処理フレームワークをバイパスし、MapReduceが必要とするリソース集約型のディスク操作を排除します。インメモリコンピューティングを使用することで、Sparkのワークロードは通常、ディスク実行と比較して10倍から100倍速く実行されます。
SparkはHadoopから独立して使用できます。ただし、データ処理のためのMapReduceの代替手段としてHadoopと最も一般的に使用されます。Sparkは、MapReduceや他のエコシステムコンポーネントと簡単に共存できます。
SparkはSQLをサポートしているため、コアHadoop技術の短所を克服するのに役立ちます。Sparkプログラミング環境は、Scala、Python、Rシェルと対話的に作業します。データの抽出/変換/ロード(ETL)操作、ストリーム処理、機械学習開発、グラフ計算と表示のためのApache GraphX APIとの統合に使用されています。Sparkは、Amazon S3を含むさまざまなHadoopおよび非Hadoopクラスターで実行できます。
Hiveは、分散Hadoopクラスターでのデータの構造化と照会を扱うデータウェアハウジングソフトウェアです。Hiveは、Hadoop環境内のデータに対してクエリを作成するために使用される人気のある開発環境でもあります。ETL操作のためのツールを提供し、環境にいくつかのSQLライクな機能をもたらします。Hiveは、Hadoop環境向けのアプリケーションを開発するために使用される宣言型言語ですが、リアルタイムクエリをサポートしていません。
Hiveにはいくつかのコンポーネントが含まれています。
- HCatalog – データ処理ツールがグリッド上でデータを読み書きできるようにします。MapReduceとPigをサポートしています。
- WebHCat – HTTP/RESTインターフェースを使用してMapReduce、Yarn、Pig、Hiveジョブを実行できるようにします。
- HiveQL – SQL開発者がHadoopで簡単に作業できるように設計されたHiveのクエリ言語です。SQLに似ており、分散Hadoopクラスター内のデータを構造化し、照会するのに役立ちます。
Hiveクエリは、Hiveシェル、JDBC、またはODBCから実行できます。MapReduce(または代替手段)がHiveQLステートメントを分解してクラスター全体で実行します。
Hiveは、MapReduce互換のマッピングおよび削減ソフトウェアがより高度な機能を実行できることも許可します。ただし、Hiveは行レベルの更新を許可せず、リアルタイムクエリをサポートせず、OLTPワークロードのために設計されていません。多くの人は、Hiveが非構造化データよりも構造化データの処理においてはるかに効果的であると考えており、Pigは非構造化データの処理において優れていると見なされています。
Pigは、Hadoop環境で大規模データセットのための並列処理アプリケーションを開発するための手続き型言語です。PigはMapReduceのためのJavaプログラミングの代替手段であり、MapReduce関数を自動的に生成します。Pigには、スクリプト言語であるPig Latinが含まれています。PigはPig LatinスクリプトをMapReduceに変換し、それをYARNで実行してHDFSクラスター内のデータを処理します。Pigは、MapReduce開発の複雑さの一部を自動化するために人気があります。
Pigは、複数のデータ操作を必要とする複雑なユースケースで一般的に使用されます。Pigは、クエリ言語というよりも処理言語です。Pigは、データを集約およびソートするアプリケーションを開発するのに役立ち、複数の入力とエクスポートをサポートします。ユーザーは好みのスクリプト言語を使用して独自の関数を書くことができるため、高度にカスタマイズ可能です。Ruby、Python、Javaもすべてサポートされています。したがって、Pigは、MapReduceに慣れていなくてもこれらの言語に精通している開発者にとって人気のある選択肢となっています。ただし、SQL開発者はHiveの方が学びやすいと感じるかもしれません。
HBaseは、HFDSの上に位置するスケーラブルで分散型のNoSQLデータベースです。数十億の行と数百万の列を持つテーブルに構造化データを格納するために設計されています。特に必要なデータが大量の重要でないデータ(スパースデータセットとも呼ばれる)内に含まれている場合に、大規模データセットを通じての履歴検索を支えるために展開されています。いくつかの大規模メッセージングアプリケーションの背後にある基本技術でもあります。
HBaseはリレーショナルデータベースではなく、トランザクションおよびその他のリアルタイムアプリケーションをサポートするようには設計されていません。Java APIを通じてアクセスでき、ODBCおよびJDBCドライバーがあります。HBaseはSQLクエリをサポートしていませんが、ApacheプロジェクトやソフトウェアベンダーからいくつかのSQLサポートツールが利用可能です。たとえば、Hiveを使用してHBaseでSQLライクなクエリを実行できます。
Oozieは、Apache Hadoopプロジェクトの一部として開発されたワークフロースケジューラです。ワークフローの開始と実行を管理し、実行パスも制御します。Oozieは、hPDLで記述されたワークフローディフィニションを使用するサーバーベースのJavaウェブアプリケーションです。hPDLは、JBOSS JBPM jPDLに似たXMLプロセス定義言語です。Oozieは特定のワークフロータイプのみをサポートしているため、Hadoop環境では他のワークロードスケジューラがOozieの代わりまたは追加として一般的に使用されます。
Sqoopをビッグデータのフロントエンドローダーと考えてください。Sqoopは、Hadoopからリレーショナルデータベースやその他の構造化データストアにバルクデータを移動するのを容易にするコマンドラインインターフェースです。Sqoopを使用することで、データをエクスポートおよびインポートするためのスクリプトを開発する必要がなくなります。一般的なユースケースの1つは、企業データウェアハウスからHadoopクラスターにデータを移動し、ETL処理を行うことです。コモディティHadoopクラスターでETLを実行することはリソース効率が良く、Sqoopは実用的な転送方法を提供します。
その他のApache Hadoop関連のオープンソースプロジェクト
Apache組織がHadoopエコシステム内の他のコンポーネントをどのように説明しているかを以下に示します。
- Ambari – Apache Hadoopクラスターのプロビジョニング、管理、監視のためのウェブベースのツールで、Hadoop HDFS、Hadoop MapReduce、Hive、HCatalog、HBase、ZooKeeper、Oozie、Pig、Sqoopをサポートしています。
- Avro – データシリアル化システムです。
- Cassandra – 単一障害点のないスケーラブルなマルチマスターデータベースです。
- Chukwa – 大規模分散システムを管理するためのデータ収集システムです。
- Impala – Apache Hadoopのオープンソース、ネイティブ分析データベース。ImpalaはCloudera、MapR、Oracle、Amazonによって提供されています。
- Flume – 大量のストリーミングイベントデータを効率的に収集、集約、移動するための分散型、信頼性の高い、利用可能なサービスです。
- Kafka – 伝統的なブローカーの代わりにHadoop環境でよく使用されるメッセージブローカーで、高いスループットを提供し、複製と高い耐障害性を備えています。
- Mahout – スケーラブルな機械学習およびデータマイニングライブラリです。
- Tajo – Apache Hadoopのための堅牢なビッグデータリレーショナルおよび分散データウェアハウスシステム。Tajoは、HDFSおよび他のデータソースに保存された大規模データセットに対する低遅延およびスケーラブルなアドホッククエリ、オンライン集約、ETLのために設計されています。SQL標準をサポートし、高度なデータベース技術を活用することで、Tajoはさまざまなクエリ評価戦略や最適化機会にわたって分散実行とデータフローの直接制御を可能にします。
- Tez – Hadoop YARN上に構築された一般的なデータフロープログラミングフレームワークで、バッチとインタラクティブユースケースの両方のデータ処理のためにタスクの任意のDAGを実行する強力で柔軟なエンジンを提供します。Tezは、Hive、Pig、Hadoopエコシステム内の他のフレームワーク、そして他の商業ソフトウェア(例: ETLツール)によって、MapReduceの基盤となる実行エンジンとして採用されています。
- Zookeper – 分散アプリケーションのための高性能な調整サービスです。
上記で説明したエコシステム要素はすべてオープンソースのApache Hadoopプロジェクトです。オープンソースHadoopプロジェクトを使用またはサポートする商業的ソリューションが多数あります。以下のセクションでは、より目立つものをいくつか説明します。
商業Hadoopディストリビューション
Hadoopはwww.hadoop.apache.orgからダウンロードでき、無料で使用でき、数千の組織がこれを行っています。また、コアHadoop技術に追加の機能、機能、ドキュメントを組み合わせた商業的なディストリビューションもあります。主要な商業ディストリビューションHadoopベンダーには、Cloudera、Hortonworks、およびMapRが含まれます。また、Hadoop環境のための開発者ツールやジョブスケジューラなど、多くのより特定のタスクに焦点を当てたツールもあります。
Hadoopガイド
- 初心者のためのHadoopチュートリアル: Hadoopの基本
- Hadoop管理の紹介
- Hadoopセキュリティの紹介
- Apache Flumeの紹介
- Hiveの紹介
- HDFSの紹介
- Hbaseの紹介
- Hadoopの例: 5つの実世界のユースケース
- Hadoopキャリア: 採用されるために
- Hadoopインタビュー質問
- Hadoop分析の紹介
- Apache Pigの紹介
- Apache Yarnの紹介
- Hadoopアーキテクチャの紹介
- Hadoopの利点とメリット
- Apache CassandraとのHadoopの使用
- Hadoop対Kubernetes: K8sとクラウドネイティブはHadoopを終わらせるか?
- Hadoop認定
- Hadoopクラスター: 紹介
- Hadoopエコシステムとコンポーネント
これらの投稿は私自身のものであり、必ずしもBMCの立場、戦略、または意見を代表するものではありません。