Talend - Hadoop 分布式文件系统


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

设置和先决条件

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

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

仅主机网络 IP:192.168.56.101

先决条件

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

Cloudera管理器

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

Windows系统

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

sudo gedit /etc/hosts

主办方

设置 Hadoop 连接

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

点击下一步。

Hadoop 连接

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

Hadoop配置

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

经理资质

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

选择全部并单击完成。

单击获取

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

连接参数

至此,您已成功连接到 Hadoop 集群。

Hadoop集群

连接到 HDFS

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

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

现在从调色板添加 2 个组件 – tHDFSConnection 和 tHDFSList。右键单击 tHDFSConnection 并使用“OnSubJobOk”触发器连接这两个组件。

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

连接HDFS

在 tHDFSConnection 中,选择 Repository 作为 Property Type,然后选择您之前创建的 Hadoop cloudera 集群。它将自动填写该组件所需的所有必要详细信息。

财产种类

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

在HDFS Directory选项中给出HDFS的主路径,然后单击右侧的浏览按钮。

浏览按钮

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

HDFS浏览

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

检查HDFS

从HDFS读取文件

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

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

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

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

读取文件

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

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

编辑架构按钮

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

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

多列

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

选择您希望打印输出的模式。

选择模式

最后,单击“运行”来执行作业。

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

成功阅读

将文件写入HDFS

让我们看看如何在 Talend 中从 HDFS 写入文件。将 3 个组件 – tHDFSConnection、tFileInputDelimited 和 tHDFSOutput 从选项板拖放到设计器窗口。

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

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

主链接

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

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

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

现在,单击编辑架构。

选择标题

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

输入文件

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

请注意,文件类型为文本文件,操作为“create”,行分隔符为“\n”,字段分隔符为“;”

行分隔符

最后,单击“运行”来执行您的作业。作业成功执行后,检查您的文件是否位于 HDFS 上。

执行成功

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

hdfs dfs -cat /input/talendwrite

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

写作成功