创建 HDInsight 群集时添加自定义 Apache Hive 库
了解如何在 HDInsight 上预加载 Apache Hive 库。 本文档包含有关在群集创建过程中使用脚本操作预加载库的信息。 使用本文档中的步骤添加的库在 Hive 中全局可用 - 不需使用 ADD JAR 来加载。
工作原理
创建群集时,可以使用脚本操作修改创建的群集节点。 本文档中的脚本接受一个参数,即库的位置。 此位置必须位于 Azure 存储帐户中,并且库必须作为 jar 文件存储。
在群集创建过程中,该脚本将枚举文件、将这些文件复制到头节点和工作节点上的 /usr/lib/customhivelibs/
目录,然后将它们添加到 core-site.xml
文件中的 hive.aux.jars.path
属性。 在基于 Linux 的群集中,它还会针对文件位置更新 hive-env.sh
文件。
使用本文中的脚本操作,可以在使用适用于 WebHCat 和 HiveServer2 的 Hive 客户端时使用这些库。
脚本
脚本位置
https://hdiconfigactions.blob.core.windows.net/setupcustomhivelibsv01/setup-customhivelibs-v01.ps1
要求
这些脚本必须同时应用于“头节点”和“辅助角色节点”。
要安装的 jar 必须存储在单个容器中的 Azure Blob 存储中。
在创建期间,包含 jar 文件的库的存储帐户必须链接到 HDInsight 群集。 它必须是默认的存储帐户,或者是通过“存储帐户设置”添加的帐户。
必须指定容器的 WASB 路径作为脚本操作的参数。 例如,如果 jar 存储在名为 mystorage 的存储帐户上名为 libs 的容器中,则该参数应为
wasbs://libs@mystorage.blob.core.chinacloudapi.cn/
。注意
本文档假定已创建存储帐户、blob 容器,并已将文件上传到该容器。
如果尚未创建存储帐户,可以通过 Azure 门户创建该帐户。 然后可以使用实用程序(如 Azure 存储资源管理器)在帐户中创建一个容器并将文件上传到该容器。
使用脚本创建群集。
按照预配 Linux 上的 HDInsight 群集中的步骤开始预配群集,但不要完成预配。 也可以使用 Azure PowerShell 或 HDInsight .NET SDK 来使用此脚本创建群集。 有关使用这些方法的详细信息,请参阅使用脚本操作自定义 HDInsight 群集。 对于 Azure 门户,请在“配置 + 定价”选项卡中选择“+ 添加脚本操作”。
对于“存储”,如果包含 jar 文件库的存储帐户与用于群集的帐户不同,请填写“其他存储帐户”。
对于“脚本操作”,提供以下信息:
属性 Value 脚本类型 - Custom 名称 库 Bash 脚本 URI https://hdiconfigactions.blob.core.windows.net/linuxsetupcustomhivelibsv01/setup-customhivelibs-v01.sh
节点类型 头节点、工作器节点 parameters 输入包含 jar 的容器和存储帐户的 WASB 地址。 例如, wasbs://libs@mystorage.blob.core.windows.net/
。注意
对于 Apache Spark 2.1,请使用此 bash 脚本 URI:
https://hdiconfigactions.blob.core.windows.net/linuxsetupcustomhivelibsv01/setup-customhivelibs-v00.sh
。继续按预配 Linux 上的 HDInsight 群集中所述预配群集。
群集创建完成后,则可以使用通过此脚本从 Hive 添加的 jar,而无需使用 ADD JAR
语句。
后续步骤
有关使用 Hive 的详细信息,请参阅将 Apache Hive 与 HDInsight 配合使用。