带有 camel-hdfs2 的 Kerberos
Posted: Mon Mar 24, 2025 4:17 am
最近我必须使用 Camel 连接到 Hadoop 集群。如果您进行快速搜索,您将看到一个可以使用的 hdfs2 组件。显然,我认为这只需几分钟就可以完成,为什么它没有一个骆驼组件。将组件指向正确的集群并开始移动文件!想象一下,当我发现我必须使用 Kerberos 时我有多么惊讶。在这篇文章中我不会详细讨论 Kerberos 本身(简而言之我不喜欢它)。您只需在网上查找就能找到好的帖子。我发现这篇文章对于解释基础知识很有用。
当您查看 camel-hdfs2 组件的文档页面时,您将找不到有关如何使用 Kerberos 连接到 hdfs 的任何提示。查看代码你也不会找到任何参考。因此我决定尝试使用 FileSystem.class 通过 HDFS SDK 连接到集群。
长话短说,最简单的方法是使用几个文件,一个用于定义集群,一个用于定 Coinbase 数据 义 Kerberos 设置,还有一个 keytab 文件来定义它。有了它,您可以相对轻松地连接到集群。
在集群配置中,您必须定义集群设置、集群的命名节点等。这允许您在集群端触发故障转移时自动切换节点。
如果你用谷歌搜索,通常会发现它是通过文件完成的。由于我不喜欢这样,因为我们所有的配置都存储在数据库中,所以我开始寻找一种基于一些代码来实现的方法。本质上您必须创建一个名为 Configuration 的对象。
<span class="copy">Copy</span>
此方法创建 Configuration 对象并添加几个配置参数。首先,它将身份验证设置为 Kerberos。其次,它创建集群中的命名节点列表。对于每个namedNode,都会添加一个设置URI的新条目。配置的最后一项是默认的文件系统。在我们的例子中,namedService 始终是 hdfsNamedService。
现在我们有了集群配置,我们还需要在 Kerberos 服务器本身上指定一些详细信息。这是在 Kerberos 配置文件中完成的(此处解释。
当您查看 camel-hdfs2 组件的文档页面时,您将找不到有关如何使用 Kerberos 连接到 hdfs 的任何提示。查看代码你也不会找到任何参考。因此我决定尝试使用 FileSystem.class 通过 HDFS SDK 连接到集群。
长话短说,最简单的方法是使用几个文件,一个用于定义集群,一个用于定 Coinbase 数据 义 Kerberos 设置,还有一个 keytab 文件来定义它。有了它,您可以相对轻松地连接到集群。
在集群配置中,您必须定义集群设置、集群的命名节点等。这允许您在集群端触发故障转移时自动切换节点。
如果你用谷歌搜索,通常会发现它是通过文件完成的。由于我不喜欢这样,因为我们所有的配置都存储在数据库中,所以我开始寻找一种基于一些代码来实现的方法。本质上您必须创建一个名为 Configuration 的对象。
<span class="copy">Copy</span>
此方法创建 Configuration 对象并添加几个配置参数。首先,它将身份验证设置为 Kerberos。其次,它创建集群中的命名节点列表。对于每个namedNode,都会添加一个设置URI的新条目。配置的最后一项是默认的文件系统。在我们的例子中,namedService 始终是 hdfsNamedService。
现在我们有了集群配置,我们还需要在 Kerberos 服务器本身上指定一些详细信息。这是在 Kerberos 配置文件中完成的(此处解释。