CDP中的Hive3系列之启动Apache Hive3

简介: 由于Hive3版本的变动,在我们使用Hive3前需要我们了解如何正确的启动Hive3.

这是CDP中Apache Hive3用户指南系列之一,之前的文章请参考<

CDP的Hive3系列之Hive Metastore介绍>和<CDP中的Hive3系列之Apache Hive3的特性>

1. 在不安全的集群上启动 Hive

如果您想使用 Apache Hive 进行快速测试,您可以使用 Hive 默认授权模式来执行此操作,假设您位于不安全的集群上(没有 Kerberos Ranger 策略)。默认授权模式下,只有用户hive可以访问Hive。启动 Hive shell 的步骤,不要与 CDP 不支持的 Hive CLI 混淆,包括如何登录到集群。

在集群命令行中,您可以在集群的命令行上键入hive以启动 Hive shell。在后台,Beeline 启动 Hive shell

1)     Cloudera Manager 中,单击主机>所有主机。

图片 1.png

2)    记下集群中某个节点的 IP 地址或主机名,例如 myhost-vpc.cloudera.com

3)    使用 ssh 登录集群。例如:

ssh myhost-vpc.cloudera.com

4)    键入hive以从命令行启动 Hive

5)    输入 Hive 查询。

SHOW DATABASES;
CREATE TABLE students (name VARCHAR(64), age INT, gpa DECIMAL(3,2));
INSERT INTO TABLE students VALUES ('fred flintstone', 35, 1.28), ('barney rubble', 32, 2.32);

原文链接:https://docs.cloudera.com/cdp-private-cloud-base/latest/starting-hive/topics/hive_start_hive.html

2  使用密码启动 Hive

您可以使用 Beeline 命令启动 Hive shell,以作为 Apache Ranger 授权的最终用户查询 Hive。作为管理员,您在操作系统和 Ranger中设置最终用户。

在第一次启动 Hive 之前,您可能需要检查您是否受基本操作所需的 Ranger 策略的保护,如以下步骤所示。所有用户都需要使用default数据库,执行列出数据库名称等操作,以及查询信息模式。在preloaded default database tables columnsinformation_schema databaseRanger政策覆盖组public(所有用户)。如果禁用这些策略,则无法使用默认数据库、无法执行列出数据库名称等基本操作或查询信息架构。例如,如果default database tables columns策略被禁用,如果您尝试使用default数据库,则会出现以下错误:

hive> USE default;
Error: Error while compiling statement: FAILED: HiveAccessControlException 
Permission denied: user [hive] does not have [USE] privilege on [default]

1)    访问 Ranger 控制台:从 Cloudera Manager,单击 Ranger Admin Web UI 链接,输入您的 Ranger Admin 用户名和密码,然后单击登录。

2)    在最右侧,单击Ranger > 服务名称>,其中预加载服务的服务名称是 HADOOP SQL 或旧版本的 cm_hive

图片 2.png

3)    在允许条件中,编辑all - database, table, column.

4)    将您的用户名或组名添加到Hive 策略以授予对 Hive 的完全访问权限。

例如,将 admins 组名添加到可以访问 Hive 的组列表中。

图片 3.png

5)    检查是否为public 组启用了预加载default database tables columns information_schema database策略。

图片 4.png

6)     Cloudera Manager 中,单击主机>所有主机。

图片 5.png

7)    记下集群中某个节点的 IP 地址或主机名,例如 myhost-vpc.cloudera.com

8)    使用 ssh 登录集群。

例如:

ssh myhost-mydomain.com

您可以获得有关启动 Hive shell 的帮助。在命令行中,键入

hive -h

输出是:

Connect using simple authentication to HiveServer2 on localhost:10000
beeline -u jdbc:hive2://localhost:10000 username password
Connect using simple authentication to HiveServer2 on hs.local:10000 using -n for username and -p for password
beeline -n username -p password -u jdbc:hive2://hs2.local:10012
Connect using Kerberos authentication with hive/localhost@mydomain.com as HiveServer2 principal
beeline -u "jdbc:hive2://hs2.local:10013/default;principal=hive/localhost@mydomain.com"
Connect using SSL connection to HiveServer2 on localhost at 10000
beeline "jdbc:hive2://localhost:10000/default;ssl=true;sslTrustStore=/usr/local/truststore;trustStorePassword=mytruststorepassword"
Connect using LDAP authentication
beeline -u jdbc:hive2://hs2.local:10013/default <ldap-username> <ldap-password>

9)    Cloudera Manager > Hosts > Role(s) 中使用集群中的节点的完全限定域名或 IP 地址,并查看角色列表以查找HiveServer (HS2) 角色。

此节点具有 HiveServer 角色,因此您可以在 Beeline 中使用名称或 IP 地址。

10)  启动 Hive shell

a)    如果设置了集群安全性,请使用您的用户名。

b)     使用用户名hive而不使用密码。

HiveServer (HS2) 主机的名称或 IP 地址替换为 10.65.13.98

简单认证:

beeline -u jdbc:hive2://10.65.13.98:10000 -n <your user name> -p

Kerberos

beeline -u "jdbc:hive2://10.65.13.98:10000/default;principal=hive/_HOST@CLOUDERA.SITE"

11)  输入 Hive 查询。

SHOW DATABASES;
CREATE TABLE students (name VARCHAR(64), age INT, gpa DECIMAL(3,2));
INSERT INTO TABLE students VALUES ('fred flintstone', 35, 1.28), ('barney rubble', 32, 2.32);

原文链接:https://docs.cloudera.com/cdp-private-cloud-base/latest/starting-hive/topics/hive_start_hive_as_authorized_user.html

3  运行 Hive 命令

您可以从集群中节点的命令行运行大多数将配置变量推送到 Hive SQL 脚本的 Hive 命令。您可以使用关键字和选项在Beeline 中启动这些命令。

Hive 支持从命令行运行 Hive 命令。您输入的命令在后台启动Beeline-e后跟 Hiveset命令的标志列出了系统变量。

CDP 集群中某个节点的命令行上,输入 hive命令以将配置属性发送到标准输出。

> hive -e set

出现支持的命令。Beeline 支持所有过时的 Hive CLI 命令,但配置 Hive Metastore set key=value命令除外。

输出包括系统变量设置:

+----------------------------------------------------------------+
|                           set                                |
+----------------------------------------------------------------+
| _hive.hdfs.session.path=/tmp/hive/hive/91ecb...00a             |
| _hive.local.session.path=/tmp/hive/91ecb...00a                 |                                 |
 ...

原文链接:https://docs.cloudera.com/cdp-private-cloud-base/latest/starting-hive/topics/hive_run_hive_command.html

4   Hive CLI 脚本转换为 Beeline

如果您有使用 Hive CLI 从边缘节点运行 Hive 查询的遗留脚本,您必须解决这些脚本中变量替换的潜在不兼容性。CDP 支持 Beeline 而不是 Hive CLI。您可以使用 Beeline 运行遗留脚本,但有一些注意事项。

在此任务中,您将解决旧 Hive CLI 脚本和 Beeline 中的不兼容问题:

·       配置变量

n  问题:除非允许,否则您不能使用hiveconf命名空间在脚本中引用配置参数。

n  解决方案:您将该参数包含在 HiveServer 许可名单(白名单)中。

·       命名空间问题

n  问题:Beeline 不支持命名空间的变量 systemenv

n  解决方案:您可以使用本任务中描述的转换技术从脚本中删除这些命名空间引用。

1)    创建一个名为的转换脚本env_to_hivevar.sh,用于删除envSQL 脚本中的引用。

#!/usr/bin/env bash
CMD_LINE=""
#Blank conversion of all env scoped values
for I in `env`; do
  CMD_LINE="$CMD_LINE --hivevar env:${I} "
done
echo ${CMD_LINE}

2)    例如,在集群中某个节点的命令行中,定义并导出一个名为 HIVEVAR 的变量,并将其设置为执行转换脚本。

export HIVEVAR=`./env_to_hivevar.sh`

3)    定义和导出变量以保存一些用于测试转换的变量。

export LOC_TIME_ZONE="US/EASTERN"
export MY_TEST_VAR="TODAY"

4)    在集群节点的命令行上,测试转换:执行引用HIVEVAR的命令解析SQL语句,去除不兼容的 env命名空间,执行剩余的SQL

hive ${HIVEVAR} -e 'select "${env:LOC_TIME_ZONE}";'
+-------------+
|     _c0    |
+-------------+
| US/EASTERN  |
+-------------+

5)    创建一个名为init_var.sql模拟遗留脚本的文本文件,该脚本设置两个配置参数,一个在有问题的 env命名空间中。

set mylocal.test.var=hello;
set mylocal.test.env.var=${env:MY_TEST_VAR};

6)    在许可名单中包含这些配置参数: Cloudera Manager 中,转到Clusters > HIVE_ON_TEZ-1 > Configuration,然后搜索 hive-site

7)    hive-site.xml HiveServer2 高级配置片段(安全阀)中,添加属性键: hive.security.authorization.sqlstd.confwhitelist.append

8)    向许可名单提供一个或多个属性值,例如: mylocal\..*|junk

这个动作追加mylocal.test.var mylocal.test.env.var参数的允许列表。

9)    保存配置更改,并根据需要重新启动任何组件。

10)  执行引用 HIVEVAR 的命令来解析 SQL 脚本,移除不兼容的env命名空间,并执行剩余的 SQL,包括由 hiveconf:.

hive -i init_var.sql ${HIVEVAR} -e 'select "${hiveconf:mylocal.test.var}","${hiveconf:mylocal.test.env.var}";'                  
+--------+--------+
|  _c0  |  _c1   |
+--------+--------+
| hello  | TODAY |
+--------+--------+

原文链接:https://docs.cloudera.com/cdp-private-cloud-base/latest/starting-hive/topics/hive_use_variables.html

目录
相关文章
|
1月前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
1月前
|
SQL 分布式计算 Java
Apache Hudi与Hive集成手册
Apache Hudi与Hive集成手册
71 0
|
1月前
|
存储 数据采集 Apache
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍
随着业务在金融、保险和商城领域的不断扩展,众安保险建设 CDP 平台以提供自动化营销数据支持。早期 CDP 平台依赖于 Spark + Impala + Hbase + Nebula 复杂的技术组合,这不仅导致数据分析形成数据孤岛,还带来高昂的管理及维护成本。为解决该问题,众安保险引入 Apache Doris,替换了早期复杂的技术组合,不仅降低了系统的复杂性,打破了数据孤岛,更提升了数据处理的效率。
众安保险 CDP 平台:借助阿里云数据库 SelectDB 版内核 Apache Doris 打破数据孤岛,人群圈选提速4倍
|
7月前
|
SQL 关系型数据库 MySQL
Hive报错:HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
Hive报错:HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.me
147 0
|
3月前
|
SQL 分布式计算 安全
HIVE启动错误:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeExcept
HIVE启动错误:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.SafeModeExcept
136 0
|
4月前
|
SQL 存储 Apache
流数据湖平台Apache Paimon(四)集成 Hive 引擎
流数据湖平台Apache Paimon(四)集成 Hive 引擎
139 0
|
4月前
|
SQL 分布式计算 MaxCompute
Apache Flink目前不支持直接写入MaxCompute,但是可以通过Hive Catalog将Flink的数据写入Hive表
Apache Flink目前不支持直接写入MaxCompute,但是可以通过Hive Catalog将Flink的数据写入Hive表
58 3
|
5月前
|
SQL 分布式计算 Java
Apache Hive简单概述
Apache Hive简单概述
15 0
|
6月前
|
SQL 资源调度 大数据
大数据平台 CDP 中如何配置 hive 作业的 YARN 队列以确保SLA?
大数据平台 CDP 中如何配置 hive 作业的 YARN 队列以确保SLA?
|
8月前
|
SQL 资源调度 Java
Apache Doris Broker快速体验之Hive安装部署(2)3
Apache Doris Broker快速体验之Hive安装部署(2)3
108 0

推荐镜像

更多