配置 HDFS 访问

Vertica 使用 Hadoop 群集配置中的信息来支持读取数据(COPY 或外部表)。在 Eon 模式下,它还使用此信息来访问 HDFS 上的公共存储。因此,Vertica 节点必须有权访问某些 Hadoop 配置文件。

对于使用 Kerberos 身份验证的共置群集和单独群集,请按照为 Kerberos 身份验证配置 Vertica中的说明为 Kerberos 配置 Vertica。

Vertica 需要访问所有名称节点和数据节点上的 WebHDFS 服务和端口。有关 WebHDFS 端口的详细信息,请参阅 Cloudera 文档中的 HDFS 端口

访问 Hadoop 配置文件

您的 Vertica 节点需要访问某些 Hadoop 配置文件:

  • 如果 Vertica 共置于 HDFS 节点上,那么这些配置文件已经存在。
  • 如果 Vertica 在单独的群集上运行,您必须将所需文件复制到所有数据库节点。实现这一目标的一个简单方法是,将 Vertica 节点配置为 Hadoop 的边缘节点。客户端应用程序在边缘节点上运行;从 Hadoop 的角度来看,Vertica 是一个客户端应用程序。您可以使用 Ambari 或 Cloudera Manager 配置边缘节点。有关详细信息,请参阅 Hadoop 供应商的文档。

验证 HadoopConfDir 配置参数的值(请参阅Hadoop 参数)是否包含一个包括 core-site.xmlhdfs-site.xml 文件的目录。如果您未设置值,Vertica 会在 /etc/hadoop/conf 中查找文件。对于所有 Vertica 用户,该目录由运行 Vertica 服务器进程的 Linux 用户访问。

Vertica 使用这些配置文件中定义的多个属性。这些属性列在 HDFS 文件系统 中。

使用具有高可用性 NameNode 的群集

如果您的 Hadoop 群集使用高可用性 (HA) 名称节点,请验证 dfs.nameservices 参数和各个名称节点是否在 hdfs-site.xml 中定义。

使用多个 Hadoop 群集

在某些情况下,Vertica 群集需要访问多个 HDFS 群集。例如,您的企业可能对不同的区域使用单独的 HDFS 群集,或者您可能需要来自测试和部署群集的数据。

要支持多个群集,请执行以下步骤:

  1. 将所有 HDFS 群集的配置文件复制到您的数据库节点。您可以将复制的文件放置在 Vertica 可读的任何位置。但是,作为最佳实践,您应将它们全部放在同一个目录树中,每个 HDFS 群集有一个子目录。所有数据库节点上的位置必须相同。

  2. 设置 HadoopConfDir 配置参数。该值是一个以冒号分隔的路径,其中包含所有 HDFS 群集的目录。

  3. 创建外部表或复制数据时,在 URL 中使用显式名称节点或名称服务。不要使用 hdfs:///,因为它可能不明确。有关 URL 的详细信息,请参阅 HDFS 文件系统

Vertica 直接连接到名称节点或名称服务;它不以其他方式区分 HDFS 群集。因此,HDFS 名称节点和名称服务的名称必须是全局唯一的。

验证配置

使用 VERIFY_HADOOP_CONF_DIR 函数验证 Vertica 是否可以在 HadoopConfDir 中找到配置文件。

使用 HDFS_CLUSTER_CONFIG_CHECK 函数通过 hdfs 方案测试访问。

有关测试配置的详细信息,请参阅验证 HDFS 配置

更新配置文件

如果您在启动 Vertica 后更新配置文件,请使用下面的语句对其进行刷新:

=> SELECT CLEAR_HDFS_CACHES();

CLEAR_HDFS_CACHES 函数还刷新有关在高可用性 (HA) Hadoop 群集中哪个名称节点处于活动状态的信息。因此,调用此函数后的第一次请求很慢,因为与名称节点的初始连接可能需要 15 秒以上。