为 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-*.jar
和libgplcompression.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 节点上,您应该执行以下操作:
-
将 /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 目录。
-
验证所有必要的文件已复制:
hcatUtil --verifyJars --hcatLibPath=/tmp/hadoop-files
-
将该输出目录(本示例中为 /tmp/hadoop-files)复制到您在安装 HCatalog 连接器时将连接到的 Vertica 节点上的 /opt/vertica/packages/hcat/lib。如果您要更新 Vertica 群集以使用新的 Hadoop 群集(或新版本的 Hadoop),请先移除 /opt/vertica/packages/hcat/lib 中除 vertica-hcatalogudl.jar 以外的所有 JAR 文件。
-
验证所有必要的文件已复制:
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。
注意
使用 hcatUtil 复制的数据现在存储在数据库中。如果您更改 Hadoop 中的任何值,您需要重新运行 hcatUtil 和 install.sql。下面的语句可以返回当前正在使用的库和配置文件的名称:
=> SELECT dependencies FROM user_libraries WHERE lib_name='VHCatalogLib';
现在,您可以按照使用 HCatalog 连接器定义架构中的介绍,创建指向现有 Hadoop 服务的 HCatalog 架构参数。
升级到新版本的 Vertica
升级到新版本的 Vertica 后,请执行以下步骤:
- 使用 uninstall.sql 脚本卸载 HCatalog 连接器。此脚本驻留在 HCatalog 采集器安装路径下的 ddl/ 文件夹中。
- 删除
hcatLibPath
目录中除vertica-hcatalogudl.jar
之外的内容。 - 重新运行 hcatUtil。
- 使用 install.sql 脚本重新安装 HCatalog 连接器。
有关升级 Vertica 的详细信息,请参阅升级 Vertica。
Hadoop 列式文件格式的其他选项
读取 Hadoop 的列式文件格式(ORC 或 Parquet)时,HCatalog 连接器将尝试使用内置读取器。这样做时,它默认使用 WebHDFS。您可以使用已弃用的 LibHDFS++ 库,方法是使用 hdfs
URI 方案且使用 ALTER DATABASE 将 HDFSUseWebHDFS 设置为 0。此设置适用于所有 HDFS 访问,而不仅仅是 HCatalog 连接器。
无论哪种情况,您都必须执行配置 HDFS 访问中描述的配置。