7

私の要件は

  1. Oracle から HDFS にデータを移動する
  2. HDFS でデータを処理する
  3. 処理されたデータを Teradata に移動します。

また、この処理全体を 15 分ごとに実行する必要があります。ソース データの量は 50 GB 近くになる可能性があり、処理されるデータも同じである可能性があります。

インターネットでいろいろ調べた結果、たどり着いたのが

  1. Oracle から HDFS にデータを移動するための ORAOOP (シェル スクリプト内のコードを用意し、必要な間隔で実行するようにスケジュールします)。
  2. カスタム MapReduce または Hive または PIG のいずれかによって大規模な処理を行います。
  3. SQOOP - HDFS から Teradata にデータを移動するための Teradata コネクタ (ここでも、コードを含むシェル スクリプトを用意してスケジュールします)。

これはそもそも正しいオプションであり、必要な期間に実行可能ですか (これは毎日のバッチなどではないことに注意してください)。

私が見つけた他のオプションは次のとおりです

  1. STORM (リアルタイム データ処理用)。しかし、箱から出してすぐにオラクルのスパウトまたはテラデータのボルトを見つけることができません。
  2. Talend や Pentaho などのオープン ソース ETL ツール。

これらのオプションやその他の可能性について、ご意見をお聞かせください。

4

2 に答える 2

5

いくつかの質問があるようですので、それを分解してみましょう。

HDFS へのインポート

Sqoopを探しているようです。Sqoop は、HDFS との間で簡単にデータをやり取りできるツールであり、Oracle を含むさまざまなデータベースにネイティブに接続できます。Sqoop は、Oracle JDBC シン ドライバーと互換性があります。Oracle から HDFS に転送する方法は次のとおりです。

sqoop import --connect jdbc:oracle:thin@myhost:1521/db --username xxx --password yyy --table tbl --target-dir /path/to/dir

詳細については、こちらこちらをご覧ください。Sqoop を使用して Hive テーブルに直接インポートすることもできることに注意してください。これは、分析を行うのに便利です。

処理

お気づきのように、最初はデータがリレーショナルであるため、SQL に似た構文に慣れている可能性があるため、Hive を使用して分析を行うことをお勧めします。Pig はより純粋なリレーショナル代数であり、構文は SQL に似ていません。好みの問題ですが、どちらのアプローチもうまく機能するはずです。

Sqoop を使用してデータを Hive に直接インポートできるため、データはインポート後にすぐに処理できる状態になっているはずです。

Hive では、クエリを実行して、結果を HDFS に書き込むように指示できます。

hive -e "insert overwrite directory '/path/to/output' select * from mytable ..."

TeraData へのエクスポート

Cloudera は昨年、Sqoop 用の Teradata 用のコネクタをここで説明したようにリリースしました。これを行う方法は次のとおりです。

sqoop export --connect jdbc:teradata://localhost/DATABASE=MY_BASE --username sqooptest --password xxxxx --table MY_DATA --export-dir /path/to/hive/output

最終的に問題になるのはクラスターのサイズです。必要に応じてクラスターをスケールアップします。Hive と Sqoop の良い点は、処理がクラスター内で分散されるため、スケジュールを完全に制御できることです。

于 2013-06-03T07:23:04.220 に答える