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