快速使用HetuEngine访问Hive数据源
本章节指导用户从零开始使用HetuEngine对接Hive数据源,并通过HetuEngine查询本集群Hive数据源的数据库表。
前提条件
- 集群已安装HetuEngine、Hive服务及其所依赖的服务(DBService、KrbServer、Zookeeper、HDFS、Yarn、MapReduce)且运行正常。
- 如集群已启用Kerberos认证,需提前创建HetuEngine的用户并授予相关权限,具体操作请参见创建HetuEngine权限角色。且需要通过Ranger为该用户配置操作数据源的数据库、表、列的管理权限,具体操作请参考添加HetuEngine的Ranger访问权限策略。
- 已安装集群客户端,例如安装目录为“/opt/client”。
访问Hive数据源步骤
- 创建并启动HetuEngine计算实例。
- 使用HetuEngine管理员用户登录FusionInsight Manager,选择“集群 > 服务 > HetuEngine”,进入HetuEngine服务页面。
- 在概览页签下的“基本信息”区域单击“HSConsole WebUI”后的链接,进入HSConsole界面。
- 选择“计算实例 > 创建配置”。
- 在“基本配置”区域中,选择“所属租户”为用户所关联的租户,配置“实例部署超时时间(秒)”和“实例数量”。
- 根据实际资源规划配置“Coordinator容器资源配置”、“Worker容器资源配置”以及“高级配置”区域相关参数,参数详情可参考创建HetuEngine计算实例章节或保持默认值即可。
创建计算实例时的默认配置只申请极少量的资源,仅供基本功能测试。用户需要根据实际业务需求和可用资源进行参数配置,可参考配置HetuEngine资源组和配置HetuEngine Worker节点数量。
- 配置完成后将“立即启动”置为“是”,单击“确定”等待实例配置完成。
- 登录安装有HetuEngine客户端的节点,执行以下命令,切换到客户端安装目录。
cd /opt/client
- 执行以下命令,配置环境变量。
source bigdata_env
- 认证或指定用户。
- 执行以下命令,登录数据源的catalog。支持通过使用“--mode”参数来选择通过ZooKeeper连接或HSFabric连接方式登录数据源。
- 通过ZooKeeper连接(不指定“--mode”参数则默认为该方式)
例如执行以下命令:
hetu-cli --catalog hive
- 通过HSFabric连接(需确保已安装HSFabric实例)
hetu-cli --mode hsfabric --catalog 数据源名称
例如执行以下命令:
hetu-cli --mode hsfabric --catalog hive
- 本集群的Hive数据源名称默认为“hive”。如需对接集群外部的数据源,可参考添加HetuEngine数据源进行操作,在HSConsole界面配置外部数据源。
- 首次登录客户端需要启动后台HetuEngine集群,大约需等待120秒,可以进入客户端界面。
- 开启租户的严格校验模式:适用于MRS 3.3.0及以后版本
HetuEngine提供服务级默认资源队列配置项,如果没指定租户信息,默认使用Yarn为用户指定的默认租户,可能出现多个用户都默认使用相同的租户队列,从而无法达到资源隔离的效果。
如果用户需要进行资源隔离,将SQL分配给指定的资源队列来执行,来达到资源合理分配的目的时,可通过开启租户的严格校验模式来实现该需求,仅需配置“tenant.strict.mode.enabled”参数为“true”并在使用客户端时添加“--tenant”参数指定租户资源队列即可。
登录Manager,选择“集群 > 服务 > HetuEngine > 配置 > 全部配置”,搜索“tenant.strict.mode.enabled”,将参数的值选为“true”并保存。单击“实例”,勾选配置过期的角色实例,选择“更多 > 重启实例”,根据界面提示重启实例以使配置生效。
- 如果开启了租户的严格校验模式,使用HetuEngine的跨域功能,需要配置HetuEngine数据源的“hsfabric.local.tenant”参数,可参考添加跨集群HetuEngine数据源。
参数说明:
- --mode:(可选)指定登录数据源方式。
- --catalog:(可选)指定的数据源名称。
- --tenant:(可选)指定集群启动的租户资源队列,不指定为租户的默认队列。使用此参数时,业务用户需要具有该租户对应角色的权限。MRS 3.3.0及以后版本是否可选根据如下判断:
- 可选:未启用租户的严格校验模式。
- 必选:启用了租户的严格校验模式。
- --schema:(可选)指定要访问数据源下的schema名称。
- --user:(普通模式下必选)指定要登录客户端执行业务的用户名称,该用户至少需要具有“--tenant”指定队列的相应角色的业务用户,且不能是操作系统用户。
- 其他参数可以执行hetu-cli --help查看。
java -Djava.security.auth.login.config=/opt/client/HetuEngine/hetuserver/conf/jaas.conf -Dzookeeper.sasl.clientconfig=Client -Dzookeeper.auth.type=kerberos -Djava.security.krb5.conf=/opt/client/KrbClient/kerberos/var/krb5kdc/krb5.conf -Djava.util.logging.config.file=/opt/client/HetuEngine/hetuserver/conf/hetuserver-client-logging.properties -jar /opt/client/HetuEngine/hetuserver/jars/hetu-cli-*-executable.jar --catalog hive --deployment-mode on_yarn --server https://10.112.17.189:24002,10.112.17.228:24002,10.112.17.150:24002?serviceDiscoveryMode=zooKeeper&zooKeeperNamespace=hsbroker --krb5-remote-service-name HTTP --krb5-config-path /opt/client/KrbClient/kerberos/var/krb5kdc/krb5.conf hetuengine>
- 通过ZooKeeper连接(不指定“--mode”参数则默认为该方式)
- 执行以下命令,查看数据库信息:
show schemas;
Schema -------------------- default information_schema (2 rows) Query 20230228_064136_00023_9kpap@default@HetuEngine, FINISHED, 3 nodes Splits: 36 total, 36 done (100.00%) 0:02 [2 rows, 35B] [0 rows/s, 15B/s]