Talend - Hadoop分布式文件系统



本章节,我们将详细学习Talend如何与Hadoop分布式文件系统协同工作。

设置和先决条件

在开始使用Talend操作HDFS之前,我们应该了解为此目的需要满足的设置和先决条件。

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

主机专用网络IP:192.168.56.101

Pre Requisites

您必须在Cloudera Manager上运行相同的主机。

Cloudera Manager

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

Windows System

同样,在您的Cloudera quickstart虚拟机上,编辑您的/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组件。右键单击作业设计并创建一个新作业 – hadoopjob。

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

现在,配置这两个Talend HDFS组件。

Connecting Hdfs

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

Property Type

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

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

Browse Button

如果您已使用上述配置正确建立连接,您将看到如下所示的窗口。它将列出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路径。这里我们读取一个简单的文本文件,所以我们的文件类型是文本文件。同样,根据您的输入,填写如下所示的行分隔符、字段分隔符和标题详细信息。最后,单击“编辑模式”按钮。

Edit schema Button

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

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

Multiple Columns

在tLogRow组件中,单击编辑模式中的同步列。

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

Select Mode

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

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

Successful Reading

将文件写入HDFS

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

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

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

Main Link

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

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

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

现在,单击编辑模式。

Select Header

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

Input File

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

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

Row Separator

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

Executed Successfully

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

hdfs dfs -cat /input/talendwrite

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

Writing Successful
广告