为 HCatalog 配置 Vertica

在使用 HCatalog 连接器之前,您必须将特定的 Hadoop 和 Hive 库添加到您的 Vertica 安装中。您还必须复制指定各项连接属性的 Hadoop 配置文件。Vertica 使用这些配置文件中的值创建自己到 Hadoop 的连接。

您只需在群集中的一个节点上执行这些更改。完成此操作后,您就可以安装 HCatalog 连接器。

复制 Hadoop 库和配置文件

Vertica 提供一个工具(即 hcatUtil)来从 Hadoop 收集所需的文件。此工具可将选中的库和 XML 配置文件从 Hadoop 群集复制到 Vertica 群集。此工具可能还需要其他库的访问权限:

  • 如果您打算用 Hive 查询使用 Snappy 压缩的文件,您需要 Snappy 本机库 libhadoop*.so 和 libsnappy*.so 的访问权限。

  • 如果您打算用 Hive 查询使用 LZO 压缩的文件,您需要 hadoop-lzo-*.jarlibgplcompression.so* 库的访问权限。您还必须在 core-site.xml 中编辑 io.compression.codecs 属性以包括 com.hadoop.compression.lzo.LzopCodec

  • 如果您打算将 JSON SerDe 用于 Hive 表,您需要其库的访问权限。这是指您用于配置 Hive 的同一个库;例如:

    hive> add jar /home/release/json-serde-1.3-jar-with-dependencies.jar;
    
    
    
    hive> create external table nationjson (id int,name string,rank int,text string)
          ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
          LOCATION '/user/release/vt/nationjson';
    
  • 如果您要使用任何其他库,而这些库并非所有受支持的 Hadoop 版本的标准配置,则您需要这些库的访问权限。

如果上述任何情况适用于您,请执行下列操作之一:

  • 将路径加入您指定为 --hcatLibPath 的值的路径中,或者

  • 将文件复制到一个已在该路径上的目录。

如果 Vertica 并未共置于 Hadoop 节点上,您应该执行以下操作:

  1. 将 /opt/vertica/packages/hcat/tools/hcatUtil 复制到一个 Hadoop 节点并在那里运行它,指定一个临时的输出目录。您的 Hadoop、HIVE 和 HCatalog 库路径可能不同。在较新版本的 Hadoop 中,HCatalog 目录通常是 HIVE 目录下的子目录,Cloudera 会为配置文件的每个修订版创建一个新目录。将您环境中的值用于以下命令:

    hcatUtil --copyJars
          --hadoopHiveHome="$HADOOP_HOME/lib;$HIVE_HOME/lib;/hcatalog/dist/share"
           --hadoopHiveConfPath="$HADOOP_CONF_DIR;$HIVE_CONF_DIR;$WEBHCAT_CONF_DIR"
          --hcatLibPath="/tmp/hadoop-files"
    

    如果您使用 Hive LLAP,请指定 hive2 目录。

  2. 验证所有必要的文件已复制:

    hcatUtil --verifyJars --hcatLibPath=/tmp/hadoop-files
    
  3. 将该输出目录(本示例中为 /tmp/hadoop-files)复制到您在安装 HCatalog 连接器时将连接到的 Vertica 节点上的 /opt/vertica/packages/hcat/lib。如果您要更新 Vertica 群集以使用新的 Hadoop 群集(或新版本的 Hadoop),请先移除 /opt/vertica/packages/hcat/lib 中除 vertica-hcatalogudl.jar 以外的所有 JAR 文件。

  4. 验证所有必要的文件已复制:

    hcatUtil --verifyJars --hcatLibPath=/opt/vertica/packages/hcat
    

如果 Vertica 共置于部分或全部 Hadoop 节点上,您可以在共享节点上以一个步骤完成此操作。Hadoop、HIVE 和 HCatalog 的 lib 路径可能有所不同;将您环境中的值用于以下命令:

hcatUtil --copyJars
      --hadoopHiveHome="$HADOOP_HOME/lib;$HIVE_HOME/lib;/hcatalog/dist/share"
      --hadoopHiveConfPath="$HADOOP_CONF_DIR;$HIVE_CONF_DIR;$WEBHCAT_CONF_DIR"
      --hcatLibPath="/opt/vertica/packages/hcat/lib"

hcatUtil 脚本具有以下参数:

复制并验证这些文件后,安装 HCatalog 连接器。

安装 HCatalog 连接器

在您将 hcatUtil 中的文件复制到的同一节点上,通过运行 install.sql 脚本安装 HCatalog 连接器。此脚本驻留在 HCatalog 采集器安装路径下的 ddl/ 文件夹中。此脚本将创建库、VHCatSource 和 VHCatParser。

现在,您可以按照使用 HCatalog 连接器定义架构中的介绍,创建指向现有 Hadoop 服务的 HCatalog 架构参数。

升级到新版本的 Vertica

升级到新版本的 Vertica 后,请执行以下步骤:

  1. 使用 uninstall.sql 脚本卸载 HCatalog 连接器。此脚本驻留在 HCatalog 采集器安装路径下的 ddl/ 文件夹中。
  2. 删除 hcatLibPath 目录中除 vertica-hcatalogudl.jar 之外的内容。
  3. 重新运行 hcatUtil。
  4. 使用 install.sql 脚本重新安装 HCatalog 连接器。

有关升级 Vertica 的详细信息,请参阅升级 Vertica

Hadoop 列式文件格式的其他选项

读取 Hadoop 的列式文件格式(ORC 或 Parquet)时,HCatalog 连接器将尝试使用内置读取器。这样做时,它默认使用 WebHDFS。您可以使用已弃用的 LibHDFS++ 库,方法是使用 hdfs URI 方案且使用 ALTER DATABASE 将 HDFSUseWebHDFS 设置为 0。此设置适用于所有 HDFS 访问,而不仅仅是 HCatalog 连接器。

无论哪种情况,您都必须执行配置 HDFS 访问中描述的配置。