Hadoop
Hadoop とは
「Hadoop」とは何を意味するのでしょうか。「Hadoop」とは何の略なのでしょうか?Hadoop は、High Availability Distributed Object Oriented Platform の略です。そして、これこそが Hadoop テクノロジーが開発者に提供するものです。オブジェクト指向タスクの並列分散による高可用性を実現します。
Apache Hadoop とは、オープンソースの Java ベースのソフトウェアプラットフォームで、ビッグデータアプリケーションのデータ処理とストレージを管理します。プラットフォーム は、コンピューティングクラスタ内のノード間で Hadoop ビッグデータセットと分析ジョブを分散させ、並列実行できる小さなワークロードに分割します。
また、構造化データと非構造化データの両方を処理し、1 台のサーバーから数千台のマシンまで、確実にスケールアップします。
Hadoop プログラミングとは?
Hadoop フレームワークでは、コードのほとんどは Java で書かれていますが、C ベースのネイティブコードもあります。Hadoop MapReduce では、Java が最もよく使われますが、Hadoop streaming などのモジュールを通じて、ユーザーは自分の好きなプログラミング言語を使って、マップとリデュースの機能を実装することができます。
Hadoop データベースとは?
Hadoop は、データストレージやリレーショナルデータベースのためのソリューションではありません。その代わり、オープンソースのフレームワークとして、大量のデータを同時にリアルタイムに処理することを目的としています。
データは HDFS に格納されますが、これは非構造化データベースとみなされ、リレーショナルデータベースには該当しません。実際、Hadoop では、データは非構造化、半構造化、構造化のいずれの形でも保存できます。これにより、企業は自社のビジネスニーズやその先にあるものに合わせて、より柔軟にビッグデータを処理することができるようになります。
Hadoop は どのようなデータベースなのですか?
技術的には、Hadoop はそれ自体が SQL や RDBMS のようなデータベースの一種ではありません。その代わり、Hadoop のフレームワークは、幅広い種類のデータベースに対する処理ソリューションをユーザーに提供します。
Hadoop は、企業が膨大な量のデータを短時間で処理できるようにするためのソフトウェアエコシステムです。これは、大規模なコンピュータの並列処理を容易にすることで実現されています。Apache HBase などの各種データベースは、数百台、数千台のコモディティサーバに搭載されたデータノードクラスタに分散させることができます。
Hadoop はいつ発明されたのですか?
Apache Hadoop は、Yahoo や Google などの検索エンジンのスタートアップ企業が軌道に乗り始めた頃、急増するビッグデータの処理や Web 検索結果を迅速に提供する必要性から生まれました。
アプリケーションを小さな端数に分割して異なるノードで実行するプログラミングモデルである Google の MapReduce にインスパイアされ、ダグ・カッティング (Doug Cutting)氏とマイク・カファレラ(Mike Cafarella)氏により、彼らが Apache Nutch プロジェクトに取り組んでいた 2002 年に、Hadoop は開発されました。ニューヨークタイムズの記事によると、Hadoop の名前は、ダグ・カッティング氏の息子のおもちゃの象にちなんで名づけられました。
その数年後、Hadoop は Nutch から独立し、Web クローラーの部分が Nutch として残され、分散コンピューティングおよび処理の部分が Hadoop になりました。Yahoo は、カッティング氏の入社 2 年後の 2008 年に、Hadoop をオープンソースプロジェクトとして公開し、Apache ソフトウェア財団(ASF)は、2012 年 11 月に、Hadoop を「Apache Hadoop」として一般公開しました。
Hadoop のインパクト
Hadoop は、ビッグデータ分野に飛躍的な発展を巻き起こしました。実際に、近代的なクラウドデータレイクの基盤となったといわれています。Hadoop はコンピューティング能力を民主化し、企業は無料のオープンソースソフトウェアや安価な既存のハードウェアを使用して、ビッグデータセットをスケーラブルに分析やクエリ実行できるようになりました。
これまで業務時間の大半を費やしていた独自のデータウェアハウス(DW)ソリューションやクローズドなデータ形式に代わる実行可能な代替手段を提供したという点で、これは重要な発展でした。
Hadoop は、膨大な量のデータの保存および処理能力、コンピューティングの向上、フォールトトレラント、データ管理の柔軟性、データウェアハウスよりも低いコスト、ノードを追加し続ける高いスケーラビリティなど、企業に数々のメリットを提供します。最終的に Hadoopは、Apache Spark の導入など、ビッグデータ分析における将来の発展への道を切り開きました。
Hadoop は何に使われているのですか?
Hadoop の場合、可能なユースケースはほぼ無限大です。
小売・消費財
大規模な組織では、これまで以上に多くの顧客データを手元に置くことができるようになりました。しかし、一見無関係に見える大量のデータの間につながりを 持たせるのは難しい場合が多いのです。イギリスの小売業者 M&S が Hadoop を搭載した Cloudera Enterprise を導入したとき、その結果には大きな感銘を受けたそうです。
Cloudera は、データの管理・処理に Hadoop ベースのサポートとサービスを使用しています。M&S は、クラウドベースのプラットフォームを導入して間もなく、データをうまく活用し、予測分析を大幅に改善できることに気づきました。
これにより、ウェアハウスの効率的な利用が可能になり、「想定外」の需要ピーク時の在庫切れを防ぎ、競合他社に対して大きなアドバンテージを獲得することができたのです。
ファイナンス
Hadoopは、おそらく他のどの分野よりも金融分野に適していると思います。当初、このソフトウェアフレームワークは、リスクモデリングに関連する高度なアルゴリズムを扱うための主要な用途として、すぐに採用されました。まさに、2008年の景気後退を招いたクレジットスワップの災禍を回避するためのリスク管理です。
銀行は、この同じロジックが顧客ポートフォリオのリスク管理にも適用されることに気づきました。現在、金融機関では、顧客の資産の安全性とパフォーマンスをより適切に管理するために Hadoop を導入することが一般的になっています。JPMorgan Chase は、世界中の指数関数的に増加する顧客データを管理するために Hadoop を使用している数多くの業界大手の一社にすぎません。
医療・ヘルスケア
国営・民営を問わず、医療機関はその規模を問わず、膨大な量のデータや顧客情報を扱っています。Hadoop フレームワークにより、医師、看護師、介護士は必要な時に必要な情報に簡単にアクセスできるようになり、また、実用的な洞察をもたらすデータの集約も簡単にできるようになりました。これは、公衆衛生、診断の向上、治療法の改善などに適用されます。
学術・研究機関も Hadoopのフレームワークを活用することで、取り組みを強化することができます。例えば、がんを含む遺伝病の分野などです。私たちはヒトゲノムをマッピングしていますが、全部で30億近い塩基対があります。理論的には、あらゆる病気を治すものが目の前にあるのです。
しかし、複雑な関係を特定するためには、このような大量の情報を処理する Hadoop のようなシステムが必要になります。
セキュリティと法執行
Hadoop は、国家や地域の安全保障の有効性を高めるのにも役立ちます。複数の地域にまたがる関連犯罪を解決する場合、Hadoop フレームワークを使用すると、一見孤立した 2 つの事件を結びつけて、法執行機関のプロセスを合理化することができます。事件の関連付けにかかる時間を短縮することで、他の機関や一般市民にできるだけ早く警告を発することができるようになります。
2013年、国家安全保障局 (NSA )は、オープンソースの Hadoop ソフトウェアが、それまで導入していた高価な代替品よりも優れていると結論付けました。現在では、テロやサイバー犯罪などの脅威を検知するために、このフレームワークを使用しています。
Hadoop はどのように機能するのか?
Hadoop は、巨大なデータセットをコモディティハードウェアのクラスタに分散して配置することを可能にするフレームワークです。Hadoop の処理は、同時に複数のサーバーで並列に行われます。
クライアントは Hadoop にデータやプログラムを投入します。簡単に言うと、HDFS(Hadoop のコアコンポーネント)がメタデータと分散ファイルシステムを処理します。次に、Hadoop MapReduce が入出力データの処理と変換を行います。最後に、YARN がクラスタ間でタスクを分割します。
Hadoop を利用することで、お客様はコモディティリソースをより効率的に利用することができ、高可用性と内蔵の障害点検知機能を期待することができます。また、接続された業務システムに対して問い合わせを行う際にも、迅速なレスポンスが期待できます。
Hadoop は、ビッグデータの活用を目指す企業にとって、比較的容易なソリューションといえます。
Hadoop はどのような言語で書かれているのですか?
Hadoop のフレームワーク自体は、ほとんどが Java で構築されています。その他のプログラミング言語としては、C 言語のネイティブコードやコマンドライン用のシェルスクリプトがいくつかあります。しかし、Hadoop のプログラムは、Python や C++ など、他の多くの言語で書くことができます。そのため、プログラマーは自分が最も 慣れ親しんだツールを使って柔軟に作業することができます。
Hadoop の使い方
これまで触れてきたように、Hadoop はビッグデータを管理する必要がある組織にとって、簡単なソリューションを生み出します。しかし、だからといって、常にわかりやすい使い方ができるわけではありません。上記のユースケースから分かるように、Hadoopフレームワークをどのように実装するかはかなり柔軟性があります。
ビジネスアナリスト、データサイエンティスト、開発者がどのように Hadoop を使用するかは、全て組織とその目標によって決まります。
Hadoop は全ての企業に適しているわけではありませんが、ほとんどの企業は Hadoop との関係を再評価する必要があります。.ビジネスがコアプロセスの一部として大量のデータを扱う場合、Hadoopはニーズに合った、柔軟でスケーラブルかつ手頃な価格のソリューションを提供します。ここから先は、あなたとあなたのチームの想像力と技術力次第です。
Hadoop クエリーの例
ここでは、Hadoop への問い合わせの例をいくつか紹介します。
Apache Hive
Apache Hive は、Hadoop で SQLをクエリする方法についての初期の解決策でした。このモジュールは、プログラミングを簡単にするために、MySQL の動作、構文、インターフェイスをエミュレートしています。組み込みの Java API と JDBC ドライバが付属しているので、既に Java アプリケーションを多用している場合には最適なオプションです。Hive は開発者に迅速で簡単なソリューションを提供しますが、ソフトウェアがかなり遅く、読み取り専用であるため、かなり制限されています。
IBM BigSQL
IBM が提供する本製品は、Hadoop 向けの高性能な超並列処理(MPP)SQL エンジンです。そのクエリソリューションは、安定したセキュアな環境での容易さを必要とする企業向けに提供されました。HDFS のデータにアクセスするだけでなく、RDBMS、NoSQL データベース、WebHDFSな どのデータソースから引き出すことも可能です。
Hadoop エコシステムとは
Hadoop は、次のいずれかを指す一般的な用語です。
- Hadoopエコシステム全般:コアモジュールと関連するサブモジュールの両方を含みます。
- Hadoopのコアモジュール:HDFS™(Hadoop分散ファイルシステム)、YARN(もう一つのリソース調整機能)、MapReduce、 Hadoop Common(後述)を含みます。これらは、典型的な Hadoop デプロイメントの基本的な構成要素です。
- Hadoop関連のサブモジュールで、以下のものがあります。Apache Hive, Apache Impala, Apache Pig, and Apache Zookeeper, Apache Flume among others などです。これらの関連ソフトウェアは、Hadoopのコア機能をカスタマイズ、改善、拡張するために使用することができます。
Hadoop のコアモジュールとは
- HDFS:Hadoop 分散ファイルシステム。HDFS は Java ベースのシステムで、クラスタ内のノード間で、フォールトトレラント方式で大規模なデータセットを格納できます。
- YARN:YARN は、Yet Another Resource Negotiator(もう一つのリソースネゴシエーター)。YARN は、Hadoop 上で実行されるクラスタリソース管理、タスクの計画、およびジョブのスケジューリングに使用されます。
- MapReduce:MapReduce は、大規模なデータセットの並列処理に使用されるプログラミングモデルおよびビッグデータ処理エンジンです。もともと、MapReduce は Hadoop で利用可能な唯一の実行エンジンでしたが、その後、Hadoop は Apache Tez、Apache Spark を含む他のシステムのサポートも追加しています。
- Hadoop Common:Hadoop Common は、ライブラリやユーティリティにまたがるサービスを提供し、他の Hadoop モジュールをサポートします。
Hadoopエコシステムの構成要素とは?
Hadoop のエコシステムは、いくつかのコアコンポーネントで構成されています。
HDFS
Hadoop 分散ファイルシステムは、全てのデータストレージの始まりと終わりの場所です。このコンポーネントは、さまざまな構造化および非構造化データノードにまたがる大規模なデータセットを管理します。同時に、ログファイルの形でメタデータを維持します。HDFS には、NameNode と DataNode という 2 つの副次的なコンポーネントがあります。
NameNode
Hadoop HDFS のマスターDaemon は NameNode です。このコンポーネントは、ファイルシステムの名前空間を維持し、当該ファイルへのクライアントアクセスを制御します。マスターノードとも呼ばれ、ブロック数や位置などの Metadata を保存します。主にファイルとディレクトリで構成され、ファイルの命名、クローズ、オープンなどのファイルシステム実行を行います。
DataNode
2 つ目のコンポーネントはスレーブ Daemon で、DataNode と命名されました。この HDFS コンポーネントは、クライアントから要求された読み取りと書き込みの機能を実行しながら、実際のデータまたはブロックを保存します。つまり、DataNode もマスター NameNode の指示に従い、レプリカの作成、削除、レプリケーションを担当します。
DataNode は、データ用とブロックメタデータ記録用の 2 つのシステムファイルから構成されています。アプリケーションが起動すると、マスターとスレーブのデーモン間でハンドシェイクが行われ、ネームスペースとソフトウェアバージョンが確認されます。不一致があると、DataNode は自動的に停止します。
MapReduce
Hadoop MapReduce は、 Hadoop エコシ ステムの中核となる処理コンポーネントです。このソフトウェアは、大量の構造化および非構造化データを扱う際に、アプリケーションを書くための簡単なフレームワークを提供します。これは主に、コモディティハードウェア上のさまざまなノードでデータの並列処理を促進することで実現されています。
MapReduce は、クライアントからのジョブスケジューリングを処理します。ユーザーから依頼されたタスクは、独立したタスクとプロセスに分けられます。次に、これらの MapReduce ジョブは、コモディティサーバー全体のクラスタやノードでサブタスクに分化されます。
Mapフェーズと Reduce フェーズの 2 つのフェーズで実現されます。Map フェーズでは、データセットがキーと値のペアに分解された別のデータセットに変換されます。次に、Reduce フェーズでは、InputFormat クラスを通じてプログラマーが指定したとおりの出力に変換されます。
プログラマーは MapReduce において、主に 2 つの機能を指定します。Map 関数は、データを処理するためのビジネスロジックです。Reduce 関数は、Map 関数の中間データ出力の要約と集計を行い、最終的な出力を生成します。
YARN
簡単に言うと、Hadoop YARN は MapReduceをより新しく、より改良したバージョンということになります。しかし、それは完全に正確なイメージではありません。というのも、YARN はスケジューリングや処理、ジョブシーケンスの実行にも使用されるからです。しかし、YARN は Hadoop のリソース管理レイヤーであり、各ジョブは個別の Java アプリケーションとしてデータ上で実行されます。
YARN は、フレームワーク の OS として、バッチ処理やFデータなどを単一のプラットフォームで処理することを可能にします。MapReduce の機能を大幅に上回る YARN は、プログラマがインタラクティブでリアルタイムのストリーミングアプリケーションを構築することを可能にします。
YARN を使えば、プログラマーは同じクラスタ上で必要なだけのアプリケーションを実行することができます。
主要な Hadoop 関連のソフトウェアの例
その他、厳密にはコア Hadoop モジュールの一部ではありませんが、組み合わせて頻繁に使用される以下のような一般的なパッケージがあります。
- Apache Hive:Hadoop で実行され、ユーザーが HiveQL と呼ばれるSQL のようなクエリ言語を使用して HDFS のデータを操作できるようにするデータウェアハウスソフトウェア。
- Apache Impala:Apache Hadoop のためのオープンソースでネイティブな分析データベース。
- Apache Pig:MapReduce の抽象化として Hadoop で使用され、データフローの大規模なデータセットを分析するツール。Pig は、結合、フィルタ、ソート、ロードなどの操作を可能にします。
- Apache Zookeeper:信頼性の高い分散処理を実現するための集中型サービス。
- Apache Sqoop:Apache Hadoop とリレーショナルデータベースなどの構造化データストア間でバルクデータを効率的に転送するために設計されたツール。
- Apache Oozie:Apache Hadoop のジョブを管理するためのワークフロースケジューラーシステム。Oozie ワークフローのジョブは、アクションの順番を指定する有向非巡回グラフ(DAG: Directed Acyclical Graph)で実行されます。
Hadoop を分析に利用する方法
データソースや組織のニーズに応じて、Hadoop フレームワークを分析に利用する方法は大きく 3 つに分かれます。
お客様のデータセンターへの導入
これは、必要な既存のリソースを持つ企業にとって、時間的・経済的に有効なオプションであることが多いのです。そうでなければ、技術的な機器やITスタッフを準備する必要があり、金銭的にもチーム的にも過大な負担となる可能性があります。このオプションにより、企業はデータのセキュリティとプライバシーをより詳細に管理することができます。
クラウドを選択する
より迅速な導入、初期コストの削減、メンテナンスの軽減を望む企業は、クラウドベースのサービスを活用することをお勧めします。クラウドプロバイダーの場合、データと分析はクラウド上に存在するコモディティハードウェア上で実行されます。このようなサービスは、手頃な価格でビッグデータの処理を効率化しますが、いくつかの欠点があります。
第一に、公共のインターネット上にあるものは、ハッカーなどにとって公平なゲームです。次に、インターネットやネットワークプロバイダーのサービス停止は、ビジネスシステムを停止させる可能性があります。既存のフレームワークのユーザーにとっては、Hadoop からレイクハウスアーキテクチャへの移行が必要になるといったことがあるかもしれません。
オンプレミス型プロバイダー
より優れたアップタイム、プライバシー、セキュリティを求めるのであれば、オンプレミスの Hadoop プロバイダーでその 3 つを実現することができます。これらのベンダーは、両者の長所を兼ね備えています。機器、ソフトウェア、サービスを全て提供することで、プロセスを合理化することができます。しかし、インフラはオンプレミスなので、大企業がデータセンターを持つことで得られるようなメリットは全て享受できます。
Hadoop のメリット
- スケーラビリティ:Hadoop は、従来のシステムのようなデータストレージの制限がなく、分散環境で動作するため、スケーラブルです。初期のデータレイクが Hadoop 上に構築された理由は、この特長にありました。詳しくはデータレイクの歴史と進化をご覧ください。
- レジリエンス:Hadoop 分散ファイルシステム (HDFS) は基本的に復元力が備わっています。Hadoop クラスタの任意のノードに格納されたデータは、ハードウェアまたはソフトウェアの障害の可能性に備えて、クラスタの他のノードにもレプリケートされます。この意図的に冗長な設計により、フォールトトレランスが保証され、1 つのノードがダウンしても、クラスタ内で利用可能なデータのバックアップが常に存在します。
- 柔軟性:従来のリレーショナルデータベース管理システムとは異なり、Hadoop を使用する場合は、半構造化形式や非構造化形式を含む任意の形式でデータを格納できます。Hadoop を使用することで、新しいデータソースに簡単にアクセスしてさまざまな種類のデータを活用できます。
Hadoop アーキテクチャの課題
- 複雑さ:Hadoop は、低レベルの Java ベースのフレームワークであり、エンドユーザーが作業するには複雑で困難です。Hadoop アーキテクチャには、セットアップ、保守、およびアップグレードに関する重要な専門知識とリソースが必要になる場合もあります。
- パフォーマンス:Hadoop は、ディスクに対する頻繁な読み取りと書き込みを使用して計算を実行します。これは Apache Spark などの可能な限りメモリ内にデータを格納して処理することを目的とするフレームワークと比較すると、時間がかかり非効率です。
- 長期的な実現性:Hadoop を取り巻く環境は 2019 年に大きく変わりました。Google は、2004 年にMapReduce に関する論文を発表し、Apache Hadoop の開発を支えてきましたが、Google テクニカルインフラストラクチャ担当 SVP のウルス・ヘルツル(Urs Hölzle)氏がツイートで、MapReduce の使用を全面的に中止したことを投稿しました。また、Hadoop の世界では、極めて注目度の高い合併や買収が行われました。Hadoop の大手プロバイダは、 Hadoop を技術ではなく哲学とみなすようになり、2020 年には Hadoop 中心の製品群からの転換を図っています。そして、2021 年はさらなる変化の年となりました。 4 月に ASF による Hadoop エコシステムの 10 のプロジェクトの終了の発表があり、同年の 6 月に、Cloudera が非公開化に合意しています。この決定が Hadoop ユーザーに与える影響は未だ不明ですが、増加する懸念事項と加速するデジタル化の必要性により、多くの企業が Hadoop の利用を見直しています。
どのような企業が Hadoop を利用しているのか?
Hadoop の採用は、成功を収めている多国籍企業やエンタープライズ企業のスタンダードになりつつあります。現在、Hadoop を活用している企業は以下の通りです。
- Adobe :ソフトウェアおよびサービスプロバイダーは、データストレージなどに Apache Hadoop と HBase を使用しています。
- eBay :検索エンジンの最適化とリサーチのためのフレームワークを使用します。
- A9 : アマゾンの子会社で、検索エンジンや検索関連広告に関連する技術を担当。
- LinkedIn : 最も人気のあるソーシャルプロフェッショナルネットワーキングサイトの 1 つとして、同社は Hadoop、Hive、Kafka、Avro、DataFu など多くの Apache モジュールを使用しています。
- Spotify :スウェーデンの音楽ストリーミング大手は、分析およびレポート作成、コンテンツ生成、視聴推奨に Hadoop フレームワークを使用しました。
- Facebook : ソーシャルメディアの巨人は、世界最大の Hadoop クラスタを維持しており、1 日あたり 1/2 PB のデータセットが増加すると報告されています。
- InMobi:モバイルマーケティングプラットフォームは、分析、データサイエンス、機械学習を含む HDFS と Apache Pig/MRUnit タスクを利用しています。
Hadoop の価格は?
Hadoop フレームワーク自体は、オープンソースのJavaベースのアプリケーションである。つまり、他のビッグデータの代替品とは異なり、無料で利用できるのです。もちろん、必要なコモディティソフトウェアのコストは、どのような規模かによって異なります。
Hadoop フレームワークを実装するサービスに関しては、いくつかの価格オプションがあります。
- ノード毎-最も一般的
- TB あたり
- フリーミアム製品で、サブスクリプションのみの技術サポートがあるものとないもの
- 全てのハードウェアとソフトウェアを含むオールインワンパッケージ。
- クラウドベースのサービスには、独自の価格設定オプションがあり、基本的に必要な分だけ支払うことができます。
Hadoop の課題と最新のデータプラットフォームへのシフトについては、当社のブログ記事をご覧ください。