Sqoop チュートリアル: Apache Sqoop とは何ですか? Archi構造と例

Hadoop の SQOOP とは何ですか?

Apache SQOOP (SQL-to-Hadoop) は、リレーショナル データベース、エンタープライズ データ ウェアハウス、NoSQL システムなどの構造化データ ストアから HDFS へのデータの一括エクスポートとインポートをサポートするように設計されたツールです。これは、新しい外部システムへの接続を提供するプラグインをサポートするコネクタ アーキテクチャに基づくデータ移行ツールです。

Hadoop Sqoop の使用例は、夜間に Sqoop インポートを実行して、運用トランザクション RDBMS からその日のデータをロードする企業です。 ハイブ さらなる分析のためのデータウェアハウス。

次に、この Apache Sqoop チュートリアルでは、Apache Sqoop アーキテクチャについて学習します。

スクープ Archi構造

既存のすべて データベース管理システム で設計されています SQL 標準を念頭に置いています。 ただし、DBMS ごとに方言が多少異なります。 したがって、この違いは、システム間のデータ転送に関して課題を引き起こします。 Sqoop コネクタは、これらの課題を克服するのに役立つコンポーネントです。

Sqoop Hadoop と外部ストレージ システム間のデータ転送は、Sqoop のコネクタを利用して可能になります。

Sqoop には、次のようなさまざまな一般的なリレーショナル データベースを操作するためのコネクタがあります。 MySQL, PostgreSQL, Oracle、SQL Server、DB2です。これらのコネクタはそれぞれ、関連するDBMSとやり取りする方法を知っています。また、サポートするデータベースに接続するための汎用JDBCコネクタもあります。 JavaのJDBCプロトコル。さらに、Sqoop Big Dataは最適化された MySQL (NAIST) と PostgreSQL データベース固有の API を使用して一括転送を効率的に実行するコネクタ。

スクープ Archi構造
スクープ Archi構造

これに加えて、ビッグ データの Sqoop には、エンタープライズからデータ ストアまでのさまざまなサードパーティ コネクタがあります。 データウェアハウス (Netezza、Teradata、および Oracle) を NoSQL ストア (Couchbase など) に転送します。ただし、これらのコネクタには Sqoop バンドルは付属していません。これらは個別にダウンロードする必要があり、既存の Sqoop インストールに簡単に追加できます。

なぜ Sqoop が必要なのでしょうか?

Hadoop を使用した分析処理では、さまざまなソースから大量のデータを Hadoop クラスターにロードする必要があります。異種ソースから大量のデータを Hadoop にロードして処理するこのプロセスには、いくつかの課題が伴います。データの一貫性を維持して確保し、リソースを効率的に利用できるようにするなど、データ ロードの適切なアプローチを選択する前に考慮すべき要素がいくつかあります。

主要課題:

1. スクリプトを使用したデータロード

スクリプトを使用してデータをロードする従来のアプローチは、Hadoop への一括データのロードには適していません。 このアプローチは非効率的で、非常に時間がかかります。

2. Map-Reduce アプリケーションを介した外部データへの直接アクセス

マップリデュース アプリケーションに対して (Hadoop にロードせずに) 外部システムに存在するデータへの直接アクセスを提供すると、これらのアプリケーションが複雑になります。 したがって、このアプローチは実現不可能です。

3. Hadoop は膨大なデータを扱う能力に加え、さまざまな形式のデータを扱うことができます。そのため、このような異種データを Hadoop にロードするために、さまざまなツールが開発されてきました。 スクープ (NAIST) と 用水路 は、そのようなデータ読み込みツールの XNUMX つです。

次に、例を示したこの Sqoop チュートリアルでは、Sqoop、Flume、HDFS の違いについて学びます。

Hadoop における Sqoop 対 Flume 対 HDFS

スクープ 用水路 HDFS
Sqoop は、RDBMS などの構造化データ ソースからデータをインポートするために使用されます。 Flume は、大量のストリーミング データを HDFS に移動するために使用されます。 HDFS は、Hadoop エコシステムがデータを保存するために使用する分散ファイル システムです。
Sqoop にはコネクタ ベースのアーキテクチャがあります。コネクタは、それぞれのデータ ソースに接続してデータを取得する方法を知っています。 Flume はエージェントベースのアーキテクチャを採用しています。ここでは、データの取得を処理するコード (「エージェント」と呼ばれます) が記述されます。 HDFS は、データが複数のデータ ノードに分散される分散アーキテクチャを備えています。
HDFS は、Sqoop を使用したデータのインポート先です。 データは XNUMX 個以上のチャネルを通じて HDFS に流れます。 HDFS は、データ ストレージの最終的な保存先です。
Sqoop データのロードはイベント駆動型ではありません。 Flume データロードはイベントによって駆動できます。 HDFS は、何らかの手段で提供されたデータを保存するだけです。
構造化データ ソースからデータをインポートするには、Sqoop コマンドのみを使用する必要があります。これは、そのコネクタが構造化データ ソースと対話し、そこからデータをフェッチする方法を知っているためです。 Twitter上で生成されたツイートやWebサーバーのログファイルなどのストリーミングデータを読み込むには、Flumeを使用する必要があります。 Flume エージェントは、ストリーミング データを取得するために構築されています。 HDFS には、データを格納するための独自の組み込みシェル コマンドがあります。 HDFS はストリーミング データをインポートできません