Talend Hadoop 分布式文件系统


在本章中,让我们详细了解 Talend 如何与 Hadoop 分布式文件系统一起工作。

设置和学习前提


在我们使用 HDFS 进入 Talend 之前,我们应该了解为此目的应满足的设置和学习前提。

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

仅主机网络 IP:192.168.56.101

Pre Requisites

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

Cloudera Manager

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

Windows System

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

sudo gedit /etc/hosts

Hosts

设置 Hadoop 连接


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

点击下一步。

Hadoop Connection

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

Hadoop Configuration

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

Manager Credentials

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

选择全部并单击完成。

Click Fetch

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

Connection Parameters

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

Hadoop Cluster

连接到 HDFS


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

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

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

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

Connecting Hdfs

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

Property Type

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

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

Browse Button

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

Hdfs Browse

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

Checking Hdfs

从 HDFS 读取文件


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

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

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

右键单击 tHDFS输入 并将主链接拖动到 tLogRow。

Reading File

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

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

Edit schema Button

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

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

Multiple Columns

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

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

Select Mode

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

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

Successful Reading

将文件写入 HDFS


让我们看看如何在 Talend 中从 HDFS 写入文件。将 3 个组件 - tHDFSConnection、tFile输入Delimited 和 tHDFS输出 从调色板拖放到设计器窗口。

右键单击 tHDFSConnection 并使用“OnSubJobOk”触发器连接 tFile输入Delimited 组件。

右键单击 tFile输入Delimited 并将主链接拖动到 tHDFS输出。

Main Link

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

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

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

现在,单击编辑架构。

Select Header

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

输入 File

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

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

Row Separator

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

Executed Successfully

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

hdfs dfs -cat /input/talendwrite

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

Writing Successful