Talend-hadoop-distributed-file-system
Talend-Hadoop分散ファイルシステム
この章では、TalendがHadoop分散ファイルシステムとどのように機能するかについて詳しく説明します。
設定と前提条件
HDFSでTalendに進む前に、この目的のために満たすべき設定と前提条件について学習する必要があります。
ここでは、仮想ボックスでClouderaクイックスタート5.10 VMを実行しています。 このVMではホストオンリーネットワークを使用する必要があります。
ホストオンリーネットワークIP:192.168.56.101
また、Cloudera Managerで同じホストを実行する必要があります。
Windowsシステムで、c:\ Windows \ System32 \ Drivers \ etc \ hostsに移動し、次のようにメモ帳を使用してこのファイルを編集します。
同様に、clouderaクイックスタートVMで、次のように/etc/hostsファイルを編集します。
sudo gedit/etc/hosts
Hadoop接続のセットアップ
リポジトリパネルで、メタデータに移動します。 Hadoopクラスターを右クリックして、新しいクラスターを作成します。 このHadoopクラスター接続の名前、目的、および説明を入力します。
Nextをクリックしてください。
clouderaとしてディストリビューションを選択し、使用しているバージョンを選択します。 設定の取得オプションを選択し、「次へ」をクリックします。
以下に示すように、マネージャーの資格情報(URI、ポート、ユーザー名、パスワード)を入力し、[接続]をクリックします。 詳細が正しい場合、検出されたクラスターの下にCloudera QuickStartが表示されます。
[取得]をクリックします。 これにより、HDFS、YARN、HBASE、HIVEのすべての接続と構成が取得されます。
[すべて]を選択し、[完了]をクリックします。
すべての接続パラメーターが自動入力されることに注意してください。 ユーザー名にclouderaを記載し、[完了]をクリックします。
これで、Hadoopクラスターに正常に接続されました。
HDFSへの接続
このジョブでは、HDFSに存在するすべてのディレクトリとファイルをリストします。
まず、ジョブを作成してからHDFSコンポーネントを追加します。 Job Designを右クリックして、新しいジョブhadoopjobを作成します。
次に、パレットから2つのコンポーネント、tHDFSConnectionとtHDFSListを追加します。 tHDFSConnectionを右クリックし、「OnSubJobOk」トリガーを使用してこれら2つのコンポーネントを接続します。
次に、両方のtalend hdfsコンポーネントを構成します。
tHDFSConnectionで、プロパティタイプとしてリポジトリを選択し、前に作成したHadoop clouderaクラスターを選択します。 このコンポーネントに必要なすべての必要な詳細が自動入力されます。
tHDFSListで[既存の接続を使用する]を選択し、コンポーネントリストで構成したtHDFSConnectionを選択します。
[HDFSディレクトリ内のHDFSのホームパス]オプションを指定し、右側の参照ボタンをクリックします。
上記の構成を使用して接続を適切に確立すると、次のようなウィンドウが表示されます。 HDFSホームに存在するすべてのディレクトリとファイルがリストされます。
これを確認するには、clouderaでHDFSを確認します。
HDFSからのファイルの読み取り
このセクションでは、TalendでHDFSからファイルを読み取る方法を理解しましょう。 この目的のために新しいジョブを作成できますが、ここでは既存のジョブを使用しています。
パレットからデザイナーウィンドウに3つのコンポーネント(tHDFSConnection、tHDFSInput、およびtLogRow)をドラッグアンドドロップします。
tHDFSConnectionを右クリックし、「OnSubJobOk」トリガーを使用してtHDFSInputコンポーネントを接続します。
tHDFSInputを右クリックして、メインリンクをtLogRowにドラッグします。
tHDFSConnectionの構成は以前と同様であることに注意してください。 tHDFSInputで「既存の接続を使用」を選択し、コンポーネントリストからtHDFSConnectionを選択します。
[ファイル名]で、読み取りたいファイルのHDFSパスを指定します。 ここでは単純なテキストファイルを読み込んでいるので、ファイルタイプはテキストファイルです。 同様に、入力に応じて、以下で説明するように行セパレーター、フィールドセパレーター、ヘッダーの詳細を入力します。 最後に、[スキーマの編集]ボタンをクリックします。
ファイルにはプレーンテキストが含まれているため、String型の列を1つだけ追加しています。 次に、[OK]をクリックします。
注意-入力に異なるタイプの複数の列がある場合、それに応じてスキーマをここに記述する必要があります。
tLogRowコンポーネントで、[スキーマの編集で列を同期]をクリックします。
出力を印刷するモードを選択します。
最後に、「実行」をクリックしてジョブを実行します。
HDFSファイルの読み取りに成功すると、次の出力を確認できます。
HDFSへのファイルの書き込み
TalendでHDFSからファイルを書き込む方法を見てみましょう。 パレットからデザイナーウィンドウに3つのコンポーネント(tHDFSConnection、tFileInputDelimited、およびtHDFSOutput)をドラッグアンドドロップします。
tHDFSConnectionを右クリックし、「OnSubJobOk」トリガーを使用してtFileInputDelimitedコンポーネントを接続します。
tFileInputDelimitedを右クリックして、メインリンクをtHDFSOutputにドラッグします。
tHDFSConnectionの構成は以前と同様であることに注意してください。
次に、tFileInputDelimitedで、[ファイル名/ストリーム]オプションに入力ファイルのパスを指定します。 ここでは、csvファイルを入力として使用しているため、フィールド区切り文字は「、」です。
入力ファイルに応じて、ヘッダー、フッター、制限を選択します。 1行には列名が含まれ、最初の3行のみをHDFSに書き込むため、制限は3であるため、ヘッダーは1であることに注意してください。
次に、[スキーマの編集]をクリックします。
次に、入力ファイルに従って、スキーマを定義します。 入力ファイルには、次のように3つの列があります。
tHDFSOutputコンポーネントで、列の同期をクリックします。 次に、[既存の接続を使用する]で[tHDFSConnection]を選択します。 また、[ファイル名]で、ファイルを書き込むHDFSパスを指定します。
ファイルタイプはテキストファイル、アクションは「作成」、行区切りは「\ n」、フィールド区切りは「;」になります。
最後に、「実行」をクリックしてジョブを実行します。 ジョブが正常に実行されたら、ファイルがHDFSにあるかどうかを確認します。
ジョブで言及した出力パスを使用して、次のhdfsコマンドを実行します。
hdfs dfs -cat/input/talendwrite
HDFSでの書き込みに成功すると、次の出力が表示されます。