sql >> データベース >  >> NoSQL >> HBase

Hadoopエコシステム–Hadoopコンポーネントの概要

    以前のブログでは、Hadoopの概要について説明しました 詳細に。このブログでは、Hadoopエコシステムとは何か、Hadoopコンポーネントの役割は何かについてお答えします。

    このHadoopコンポーネントのチュートリアルでは、HDFS、MapReduce、YARN、Hive、HBase、Pig、ZookeeperなどのHadoopファミリーのさまざまなエコシステムコンポーネントについて説明します。

    Hadoopエコシステムのこれらすべてのコンポーネントについて、その機能と責任とともに説明します。

    Hadoopエコシステムチュートリアル

    Apache Hadoop ビッグデータの最も強力なツールです。 Hadoopエコシステムは、HDFS、MapReduce、およびYARNの3つの主要コンポーネントを中心に展開しています。これらのHadoopコンポーネントとは別に、Hadoopの機能を強化するために重要な役割を果たす他のHadoopエコシステムコンポーネントもいくつかあります。

    ここで、さまざまなHadoopコンポーネントについて詳しく理解しましょう。

    a。 HDFS

    Hadoop分散ファイルシステム (HDFS)は、Hadoopのプライマリストレージシステムです。 HDFSは、コモディティハードウェアのクラスターで実行されている非常に大きなファイルを保存します。

    これは、膨大な数の小さなファイルではなく、少数の大きなファイルを格納するという原則に従います。 HDFSは、ハードウェアに障害が発生した場合でもデータを確実に保存します。したがって、並行してアクセスすることにより、アプリケーションへの高スループットアクセスを提供します。

    HDFSのコンポーネント:

    • NameNode – Hadoopクラスターでマスターとして機能します。 Namenodeは、メタデータ、つまりブロック数、レプリカ、その他の詳細を格納します。メタデータはマスターのメモリに存在します。 NameNodeは、タスクをスレーブノードに割り当てます。 HDFSの目玉であるため、信頼性の高いハードウェアに展開する必要があります。
    • DataNode – Hadoopクラスターではスレーブとして機能します。 Hadoop HDFSでは、DataNodeが実際のデータをHDFSに保存する役割を果たします。 DataNodeは、クライアントの要求に従って読み取りおよび書き込み操作も実行します。 DataNodeはコモディティハードウェアにデプロイすることもできます。

    b。 MapReduce

    Hadoop MapReduceは、Hadoopのデータ処理レイヤーです。 HDFSに保存されている大規模な構造化データと非構造化データを処理します。 MapReduceは、大量のデータも並行して処理します。

    これは、ジョブ(送信されたジョブ)を一連の独立したタスク(サブジョブ)に分割することによって行われます。 Hadoopでは、MapReduceは、処理をMapとReduceのフェーズに分割することで機能します。

    • 地図– これは処理の最初のフェーズであり、すべての複雑なロジックコードを指定します。
    • 削減– 処理の第2段階です。ここでは、集計/合計などの軽量処理を指定します。

    c。毛糸

    HadoopYARNはリソース管理を提供します。これはHadoopのオペレーティングシステムです。したがって、ワークロードの管理と監視、セキュリティ制御の実装を担当します。これは、Hadoopクラスター全体にデータガバナンスツールを提供するための中央プラットフォームです。

    YARNを使用すると、リアルタイムストリーミング、バッチ処理などの複数のデータ処理エンジンを使用できます。

    YARNのコンポーネント:

    • リソースマネージャー– これはクラスターレベルのコンポーネントであり、マスターマシンで実行されます。したがって、リソースを管理し、YARN上で実行されるアプリケーションをスケジュールします。スケジューラとアプリケーションマネージャの2つのコンポーネントがあります。
    • ノードマネージャー– これはノードレベルのコンポーネントです。各スレーブマシンで実行されます。 Resource Managerと継続的に通信して、最新の状態を維持します

    d。ハイブ

    Apache Hiveは、Hadoopファイルに保存されている大規模なデータセットのクエリと分析に使用されるオープンソースのデータウェアハウスシステムです。 Hadoopで構造化データと半構造化データを処理します。

    Hiveは、HDFSおよびAmazonS3ファイルシステムに保存されている大規模なデータセットの分析もサポートしています。 HiveはHiveQLと呼ばれる言語を使用します (HQL)、これはSQLに似ています。 HiveQLは、SQLのようなクエリをMapReduceジョブに自動的に変換します。

    e。豚

    これは、HadoopHDFSに保存されている巨大なデータセットに対してクエリを実行するために開発された高級言語プラットフォームです。 ピッグラテン は、SQLに非常によく似たpigで使用される言語です。

    Pigはデータをロードし、必要なフィルターを適用して、必要な形式でデータをダンプします。 Pigはまた、すべての操作をHadoopで効果的に処理されるMapおよびReduceタスクに変換します。

    豚の特徴:

    • 拡張可能– Pigユーザーは、特定の処理要件を満たすカスタム関数を作成できます。
    • 自己最適化– Pigを使用すると、システムを自動的に最適化できます。したがって、ユーザーはセマンティクスに集中できます。
    • あらゆる種類のデータを処理します– Pigは、構造化と非構造化の両方を分析します。

    f。 HBase

    Apache HBaseは、Hadoop上で実行されるNoSQLデータベースです。これは、数十億の行と数百万の列を持つ可能性のあるテーブルに構造化データを格納するデータベースです。 HBaseは、HDFSでデータを読み書きするためのリアルタイムアクセスも提供します。

    HBaseのコンポーネント:

    • HBaseマスター– 実際のデータストレージの一部ではありません。ただし、管理(テーブルを作成、更新、削除するためのインターフェース)を実行します。
    • リージョンサーバー– ワーカーノードです。クライアントからの読み取り、書き込み、更新、および削除要求を処理します。リージョンサーバーは、Hadoopクラスター内のすべてのノードで実行も処理します。

    g。 HCatalog

    これは、ApacheHadoopの最上位にあるテーブルおよびストレージ管理レイヤーです。 HCatalogはHiveの主要コンポーネントです。したがって、ユーザーはデータを任意の形式と構造で保存できます。また、さまざまなHadoopコンポーネントをサポートして、クラスターからデータを簡単に読み書きできます。

    HCatalogの利点:

    • データクリーニングおよびアーカイブツールの可視性を提供します。
    • テーブルの抽象化により、HCatalogはユーザーをデータストレージのオーバーヘッドから解放します。
    • データの可用性の通知を有効にします。

    i。 Avro

    これは、Hadoopにデータのシリアル化とデータ交換サービスを提供するオープンソースプロジェクトです。シリアル化を使用すると、サービスプログラムはデータをファイルまたはメッセージにシリアル化できます。

    また、データ定義とデータを1つのメッセージまたはファイルにまとめて保存します。したがって、これにより、プログラムはAvroファイルまたはメッセージに格納されている情報を動的に理解することが容易になります。

    Avroが提供するもの:

    • 永続データを保存するためのコンテナファイル。
    • リモートプロシージャコール。
    • 豊富なデータ構造。
    • コンパクトで高速なバイナリデータ形式。

    j。倹約

    Apache Thriftは、スケーラブルなクロスランゲージサービス開発を可能にするソフトウェアフレームワークです。 ThriftはRPC通信にも使用されます。 Apache Hadoopは多くのRPC呼び出しを行うため、パフォーマンスのためにThriftを使用する可能性があります。

    k。ドリル

    ドリルは大規模なデータ処理に使用されます。ドリルの設計は、数千のノードに拡張し、ペタバイトのデータを照会することです。また、大規模なデータセット向けの低レイテンシの分散クエリエンジンでもあります。

    このドリルは、スキーマフリーモデルを備えた最初の分散SQLクエリエンジンでもあります。

    ドリルの特徴

    • 分散型メタデータのドリル– ドリルには一元化されたメタデータ要件はありません。ドリルユーザーは、データをクエリするためにメタデータでテーブルを作成および管理する必要はありません。
    • 柔軟性– ドリルは、階層的な柱状データモデルを提供します。複雑で非常に動的なデータを表すことができ、効率的な処理も可能になります。
    • 動的スキーマ検出– クエリ実行プロセスを開始するために、Drillはデータの型指定を必要としません。代わりに、ドリルはレコードバッチと呼ばれる単位でデータの処理を開始します。また、処理中にその場でスキーマを検出します。

    l。マハウト

    これは、スケーラブルな機械学習アルゴリズムを作成するために使用されるオープンソースフレームワークです。データをHDFSに保存すると、mahoutは、それらのビッグデータセットで意味のあるパターンを自動的に見つけるためのデータサイエンスツールを提供します。

    m。 Sqoop

    これは主にデータのインポートとエクスポートに使用されます。そのため、外部ソースからHDFS、HBase、Hiveなどの関連するHadoopコンポーネントにデータをインポートします。また、Hadoopから他の外部ソースにデータをエクスポートします。 Sqoopは、Teradata、Netezza、Oracle、MySQLなどのリレーショナルデータベースと連携します。

    n。 Flume

    Flumeは、大量のデータを元の場所から効率的に収集、集約、移動して、HDFSに送り返します。ストリーミングデータフローに基づく非常にシンプルで柔軟なアーキテクチャを備えています。 Flumeはフォールトトレラントであり、信頼性の高いメカニズムでもあります。

    Flumeでは、ソースからHadoop環境へのデータのフローも可能です。これは、オンライン分析アプリケーションを可能にする単純な拡張可能なデータモデルを使用します。したがって、Flumeを使用すると、複数のサーバーからすぐにHadoopにデータを取得できます。

    o。アンバリ

    これは、オープンソースの管理プラットフォームです。これは、Apache Hadoopクラスターをプロビジョニング、管理、監視、および保護するためのプラットフォームです。 Ambariが運用管理のための一貫した安全なプラットフォームを提供するため、Hadoop管理がより簡単になります。

    アンバリのメリット:

    • インストール、構成、管理の簡素化– 大規模なクラスターを簡単かつ効率的に作成および管理できます。
    • 一元化されたセキュリティ設定– Ambariは、プラットフォーム全体でクラスターセキュリティを構成します。また、管理の複雑さも軽減されます。
    • 高度に拡張可能でカスタマイズ可能– Ambariは、カスタムサービスを管理下に置くために非常に拡張性があります。
    • クラスターの状態を完全に可視化– Ambariは、クラスターが健全であり、監視への全体的なアプローチで利用できることを保証します。

    p。動物園の飼育係

    HadoopのZookeeperは一元化されたサービスです。構成情報、命名を維持し、分散同期を提供します。また、グループサービスも提供しています。 Zookeeperは、マシンの大規模なクラスターも管理および調整します。

    Zookeeperの利点:

    • 高速– zookeeperは、データへの読み取りが書き込みよりも一般的であるワークロードで高速です。理想的な読み取り/書き込み比は10:1です。
    • 注文済み– zookeeperは、すべてのトランザクションの記録を保持します。これは、高レベルでも使用できます

    q。 Oozie

    これは、ApacheHadoopジョブを管理するためのワークフロースケジューラシステムです。複数のジョブを順番に1つの論理的な作業単位に結合します。

    したがって、Oozieフレームワークは、アーキテクチャセンターとしてのYARNであるApacheHadoopスタックと完全に統合されています。また、Apache MapReduce、Pig、Hive、およびSqoopのHadoopジョブもサポートしています。

    Oozieはスケーラブルで、非常に柔軟性があります。ジョブを簡単に開始、停止、一時停止、および再実行できます。したがって、Oozieを使用すると、失敗したワークフローを非常に簡単に再実行できます。特定の障害が発生したノードをスキップすることもできます。

    Oozieジョブには2つの基本的なタイプがあります:

    • Oozieワークフロー– MapReduce、Pig、HiveなどのHadoopジョブで構成されるワークフローを保存して実行することです。
    • Oozieコーディネーター– 事前定義されたスケジュールとデータの可用性に基づいてワークフロージョブを実行します。

    結論

    したがって、Hadoopエコシステムは、非常に人気のあるさまざまなコンポーネントを提供します。これらのHadoopコンポーネントにより、いくつかのHadoopジョブロールが利用可能になりました。

    このHadoopエコシステムのチュートリアルが、Hadoopファミリーとその役割を理解するのに大いに役立つことを願っています。ご不明な点がございましたら、コメント欄でお知らせください。


    1. Redisを使用したSparkStructuredStreamingの動的ルックアップ

    2. フィールド名ClassNameがmorphiaによってmongodbに挿入されています

    3. Node.JSでファイルを保存するMongoDBGridFSの問題

    4. Meteorコレクションを挿入時に並べ替えるにはどうすればよいですか?