Talend - Hadoop 分布式文件系统

在本章中,我们将详细了解 Talend 如何与 Hadoop 分布式文件系统配合使用。

设置和先决条件

在继续使用 Talend 和 HDFS 之前,我们应该了解为此目的应满足的设置和先决条件。

这里我们在虚拟机上运行 Cloudera quickstart 5.10 VM。此 VM 中必须使用仅主机网络。

仅主机网络 IP:192.168.56.101

先决条件

您还必须在 cloudera manager 上运行相同的主机。

Cloudera Manager

现在在您的 Windows 系统上,转到 c:\Windows\System32\Drivers\etc\hosts 并使用记事本编辑此文件,如下所示。

Windows System

同样,在您的 cloudera quickstart VM 上,编辑您的 /etc/hosts 文件,如下所示。

sudo gedit /etc/hosts

Hosts

设置 Hadoop 连接

在存储库面板中,转到元数据。右键单击 Hadoop 集群并创建一个新集群。为此 Hadoop 集群连接提供名称、用途和描述。

单击下一步。

Hadoop 连接

选择发行版为 cloudera,并选择您正在使用的版本。选择检索配置选项,然后单击下一步。

Hadoop Configuration

输入管理器凭据(带有端口、用户名、密码的 URI),如下所示,然后单击连接。如果详细信息正确,您将在发现的集群下获得 Cloudera QuickStart。

Manager Credentials

单击获取。这将获取 HDFS、YARN、HBASE、HIVE 的所有连接和配置。

选择全部并单击完成。

单击获取

请注意,所有连接参数都将自动填充。在用户名中提及 cloudera 并单击完成。

连接参数

这样,您就成功连接到 Hadoop 集群了。

Hadoop 集群

连接到 HDFS

在此作业中,我们将列出 HDFS 上存在的所有目录和文件。

首先,我们将创建一个作业,然后向其中添加 HDFS 组件。右键单击作业设计并创建一个新作业 - hadoopjob。

现在从面板中添加 2 个组件 - tHDFSConnection 和 tHDFSList。右键单击 tHDFSConnection 并使用"OnSubJobOk"触发器连接这两个组件。

现在,配置两个 talend hdfs 组件。

Connecting Hdfs

在 tHDFSConnection 中,选择存储库作为属性类型,并选择您之前创建的 Hadoop cloudera 集群。它将自动填充此组件所需的所有必要详细信息。

属性类型

在 tHDFSList 中,选择"使用现有连接",然后在组件列表中选择您配置的 tHDFSConnection。

在 HDFS 目录选项中提供 HDFS 的主路径,然后单击右侧的浏览按钮。

浏览按钮

如果您已使用上述配置正确建立连接,您将看到如下所示的窗口。它将列出 HDFS 主目录中存在的所有目录和文件。

Hdfs Browse

您可以通过在 cloudera 上检查 HDFS 来验证这一点。

Checking Hdfs

从 HDFS 读取文件

在本节中,让我们了解如何在 Talend 中从 HDFS 读取文件。您可以为此目的创建新作业,但这里我们使用现有作业。

将 3 个组件 - tHDFSConnection、tHDFSInput 和 tLogRow 从调色板拖放到设计器窗口。

右键单击 tHDFSConnection 并使用"OnSubJobOk"触发器连接 tHDFSInput 组件。

右键单击 tHDFSInput 并将主链接拖到 tLogRow。

Reading File

请注意,tHDFSConnection 将具有与之前类似的配置。在 tHDFSInput 中,选择"使用现有连接",然后从组件列表中选择 tHDFSConnection。

在文件名中,提供要读取的文件的 HDFS 路径。这里我们读取的是一个简单的文本文件,因此我们的文件类型是文本文件。同样,根据您的输入,填写行分隔符、字段分隔符和标题详细信息,如下所示。最后,单击"编辑架构"按钮。

编辑架构按钮

由于我们的文件只有纯文本,因此我们只添加一个字符串类型的列。现在,单击"确定"。

注意 − 当您的输入包含多个不同类型的列时,您需要在此处相应地提及架构。

多列

在 tLogRow 组件中,单击编辑架构中的同步列。

选择要打印输出的模式。

选择模式

最后,单击运行以执行作业。

成功读取 HDFS 文件后,您可以看到以下输出。

成功读取

将文件写入 HDFS

让我们看看如何在Talend。将 3 个组件 - tHDFSConnection、tFileInputDelimited 和 tHDFSOutput 从调色板拖放到设计器窗口。

右键单击 tHDFSConnection 并使用"OnSubJobOk"触发器连接 tFileInputDelimited 组件。

右键单击 tFileInputDelimited 并将主链接拖到 tHDFSOutput。

Main Link

请注意,tHDFSConnection 将具有与之前类似的配置。

现在,在 tFileInputDelimited 中,在文件名/流选项中提供输入文件的路径。这里我们使用 csv 文件作为输入,因此字段分隔符为","。

根据您的输入文件选择页眉、页脚、限制。请注意,此处我们的标题为 1,因为第 1 行包含列名,限制为 3,因为我们仅将前 3 行写入 HDFS。

现在,单击编辑架构。

选择标题

现在,根据我们的输入文件定义架构。我们的输入文件有 3 列,如下所示。

输入文件

在 tHDFSOutput 组件中,单击同步列。然后,在"使用现有连接"中选择 tHDFSConnection。此外,在文件名中,提供要写入文件的 HDFS 路径。

请注意,文件类型为文本文件,操作为"创建",行分隔符为" ",字段分隔符为";"

Row Separator

最后,单击运行以执行您的作业。作业成功执行后,请检查您的文件是否在 HDFS 上。

Executed Successfully

使用您在作业中提到的输出路径运行以下 hdfs 命令。

hdfs dfs -cat /input/talendwrite

如果您成功在 HDFS 上写入,您将看到以下输出。

Writing Successful