ビッグデータアーキテクチャ:データ収集・処理・分析・ツール導入hadoop

Hadoop は、Apache ベースのオープンソース分散コンピューティング プラットフォームであり、コンピューター クラスター上で実行でき、信頼性が高くスケーラブルな分散コンピューティング機能を提供します。Hadoop の中心となるのは、分散ファイル システム (HDFS) と並列プログラミング フレームワーク MapReduce です。

歴史

Hadoop は次の 3 つの論文から切り離せません。

  • 2003 年、Google は、大規模なデータ ストレージの問題を解決するために使用できる分散ファイル システム GFS に関する論文を発表しました。
  • 2004 年、Google は、大量のデータ コンピューティングの問題を解決するために使用できる MapReduce に関する論文を発表しました。
  • 2006 年に Google は、基盤となるデータ ストレージとして GFS に基づく分散ストレージ システムである BigTable に関する論文を発表しました。

GFS、MapReduce、BigTable は、私たちがよく「3 台車」と呼ぶものです。Hadoop とこれら 3 つの論文の関係は次のとおりです。

  • Hadoop の HDFS は、GFS のオープンソース実装です。
  • Hadoop の MapReduce は、Google の MapReduce のオープンソース実装です。
  • Hadoop の HBase は、Google の BigTable のオープンソース実装です。

Hadoopの機能

Hadoop の機能は次のとおりです。

  • クロスプラットフォーム: hadoop は Java 言語に基づいて開発されており、優れたクロスプラットフォームを備えており、Linux プラットフォーム上で実行できます。
  • 高い信頼性: Hadoop の HDFS は分散ファイル システムであり、大量のデータを異なるマシン ノードに冗長的に分散して保存できます。マシン コピーに障害が発生した場合でも、他のマシン コピーは正常に実行できます。
  • 高い耐障害性: HDFS は、さまざまなマシン ノードにファイルを分散して保存し、複数のコピーを自動的に保存できるため、障害後に特定のノード上のタスクを自動的に再分散することもできます。
  • 効率: Hadoop のコアコンポーネントである HDFS と MapReduce は、1 つは分散ストレージを担当し、もう 1 つは分散処理を担当し、PB レベルのデータを処理できます。
  • 低コストと高い拡張性: Hadoop は安価なコンピューター クラスター上で実行できるため、コストが比較的低く、数千のコンピューター ノードに拡張して大量のデータの保存と計算を完了できます。

エコシステムの構成要素

関連商品

Hadoop エコシステムには多くのサブシステムが含まれており、一般的なサブシステムのいくつかを次に示します。

HDFS: 分散ファイル システム

HDFS は Hadoop 分散ファイル システムであり、Hadoop エコシステムの中核プロジェクトの 1 つであり、分散コンピューティングにおけるデータ ストレージ管理の基礎です。HDFS には、ハードウェア障害を検出して対応できる耐障害性の高いデータ バックアップ メカニズムがあり、低コストの汎用ハードウェア上で実行されます。さらに、HDFS はストリーミング データ アクセス機能を備えており、高スループットのアプリケーション データ アクセス機能を提供し、大規模なデータ セットを含むアプリケーションに適しています。

MapReduce: 分散コンピューティング フレームワーク

MapReduce は、大規模なデータ セット (1 TB を超える) の並列コンピューティングのためのコンピューティング モデルです。「Map」は、データセット上の独立した要素に対して指定された操作を実行して、キーと値のペアの形式で中間結果を生成します。「Reduce」は、中間結果内の同じ「キー」のすべての「値」を削減して、最終結果を取得します。MapReduce の「分割統治」の考え方により、プログラマは分散並列プログラミングを行わずに分散システム上でプログラムを実行することが大幅に容易になります。

Yarn: リソース管理フレームワーク

Yarn (Yet Another Resource Negotiator) は Hadoop 2.0 のリソース マネージャーであり、統合されたリソース管理と上位層アプリケーションのスケジューリングを提供できます。

Sqoop: データ移行ツール

Sqoop は、オープン ソース データのインポートおよびエクスポート ツールであり、主に Hadoop と従来のデータベース間のデータ変換に使用され、リレーショナル データベース (MySQL、Oracle など) から Hadoop の HDFS にデータをインポートでき、HDFS データもインポートできます。リレーショナル データベースにエクスポートできるため、データの移行が非常に便利になります。

Mahout: データ マイニング アルゴリズムのライブラリ

Mahout は Apache のオープンソース プロジェクトであり、機械学習の分野における古典的なアルゴリズムのスケーラブルな実装を提供し、開発者がインテリジェントなアプリケーションをより便利かつ迅速に作成できるようにすることを目的としています。Mahout には、クラスタリング、分類、推奨フィルタリング、頻繁なサブ項目マイニングなどの多くの実装が含まれています。さらに、Apache Hadoop ライブラリを使用することで、Mahout をクラウドに効率的に拡張できます。

Hbase: 分散ストレージ システム

HBase は Google Bigtable クローンであり、構造化データ用のスケーラブルで信頼性が高く、高性能の分散型の列指向の動的スキーマ データベースです。従来のリレーショナル データベースとは異なり、HBase は BigTable のデータ モデルを採用しています。これは、拡張されたスパース ソート マッピング テーブル (キー/値) であり、キーは行キーワード、列キーワード、およびタイムスタンプで構成されます。HBase は、大規模データへのランダムでリアルタイムの読み取りおよび書き込みアクセスを提供すると同時に、HBase に保存されたデータは、データ ストレージと並列コンピューティングを完全に組み合わせた MapReduce を使用して処理できます。

Zookeeper: 分散コラボレーション サービス

Zookeeper は、分散型のオープンソース分散アプリケーション調整サービスであり、Google の Chubby のオープンソース実装であり、Hadoop および HBase の重要なコンポーネントです。これは、分散アプリケーションに一貫したサービスを提供するソフトウェアです。その機能には、構成保守、ドメイン名サービス、分散同期、グループ サービスなどが含まれます。分散アプリケーションを構築し、分散アプリケーションによって実行される調整タスクを軽減するために使用されます。

Hive: Hadoop ベースのデータ ウェアハウス

Hive は、Hadoop をベースとした分散データ ウェアハウス ツールで、構造化データ ファイルをデータベース テーブルにマップし、SQL ステートメントを MapReduce タスクに変換して実行できます。その利点は、簡単な操作、低学習コスト、シンプルな MapReduce 統計が SQL のようなステートメントによって迅速に実現できること、特別な MapReduce アプリケーションを開発する必要がないこと、そしてデータ ウェアハウスの統計分析に非常に適していることです。

Flume: ログ収集ツール

Flume は、Cloudera が提供する高可用性、高信頼性、分散型大規模ログ収集、集約、送信システムです。Flume は、データ収集のためのログ システム内のさまざまなデータ送信者のカスタマイズをサポートします。同時に、Flume は、次の機能をサポートします。データを処理し、さまざまなデータ受信者に書き込むだけです (カスタマイズ可能)。

Pig: MapReduce の抽象化

すべてのデータ処理操作は、Apache Pig を使用して Hadoop で実行できます。データ分析プログラムを作成するために、Pig は Pig Latin と呼ばれる高級言語を提供します。この言語には、プログラマがデータの読み取り、書き込み、操作のための独自の関数を開発できるさまざまな演算子が用意されています。これにより、Java プログラムの作成が苦手なプログラマーでもビッグ データを分析および処理できるようになります。

Spark: 一般的なコンピューティング エンジン

Spark は MapReduce に依存せず、独自のデータ処理フレームワークを使用します。Spark は計算にメモリを使用するため、はるかに高速です。Spark 自体はエコシステムです。コア API に加えて、Spark エコシステムには、Spark SQL、Spark Streaming、Spark MLlib、Spark GraphX など、ビッグ データ分析および機械学習の分野でより多くの機能を提供できる他の追加ライブラリも含まれています。 、BlinkDB、タキオンなど。

Impala: 新しいクエリ システム

Impala は Cloudera によって開発された新しいクエリ システムであり、SQL セマンティクスを提供し、Hadoop の HDFS および HBase に保存されている PB レベルのビッグ データをクエリできます。既存の Hive システムも SQL セマンティクスを提供しますが、Hive の基盤となる実行では MapReduce エンジンが使用されるため、依然としてバッチ プロセスであり、クエリの対話型の性質を満たすことが困難です。これに対し、Impala の最大の特徴であり、最大のセールスポイントはそのスピードです。Impala は Hive と組み合わせて使用​​でき、Hive のメタデータ データベースを直接使用できます。

Kafka: 分散メッセージキュー

Kafka は、メッセージ キューの機能に似た、パブリッシュ/サブスクライブ ベースの分散メッセージ システムであり、プロデューサー (Web サービス、ファイル、HDF、HBASE など) からデータを受信し、キャッシュして送信できます。消費者(同上)へのバッファと適応の役割を果たします。

Ambari: ビッグ データ クラスター管理システム

Ambari は、Hadoop クラスターの作成、管理、監視に使用できるオープンソースのビッグ データ クラスター管理システムであり、ユーザーが管理するための WEB ビジュアル インターフェイスを提供します。

Oozie: ワークフロー スケジューリング エンジン

Oozie は、Hadoop プラットフォーム用のオープンソース ワークフロー スケジューリング エンジンです。Hadoop ジョブを管理するために使用されます。これは Web アプリケーションに属し、Oozie クライアントと Oozie サーバーの 2 つのコンポーネントで構成されます。Oozie サーバーは、Java サーブレット コンテナ (Tomcat) で実行される Web プログラムです。

おすすめ

転載: blog.csdn.net/weixin_29403917/article/details/128111987