添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
微笑的海龟  ·  Spark On ...·  3 月前    · 
八块腹肌的盒饭  ·  const ...·  4 月前    · 
飞奔的口罩  ·  python requests ...·  10 月前    · 
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

这是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 columns与information_schema database的Ranger政策覆盖组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 不支持命名空间的变量 system和env。

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} "
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

CDP中的Hive3系列之配置Apache Hive3
升级到 CDP 并迁移旧表后,您可能希望暂时切换到 Hive 旧行为。旧行为可能会解决数据迁移期间脚本的兼容性问题,例如,在运行 ETL 时。 默认情况下,执行 CREATE TABLE 语句会在 Hive 元存储中创建一个托管的 Apache Hive 3 表。您可以更改默认行为以使用旧的 CREATE TABLE 行为。配置旧行为时,CREATE TABLE 会生成外部表。由于完整 ACID 事务表相对于外部表的优势,仅在升级期间建议使用旧行为。 CentOS7 Apache/Nginx/MySQL/php-fpm启动重启停止命令大全
CentOS7系统下Apache/Nginx/MySQL/php-fpm启动、重启及停止命令大全,LAMPLNMP分享: 注意:是Linux CentOS7系统下 Apache启动/重启/停止命令 启动命令:systemctl start httpd 重启命令:systemctl restart.
云服务器吧 Apache Spark中国社群 有奖投稿通道 启动啦!
感谢对 Apache Spark 中国社区的关注和支持!如果您有意为 Apache Spark 中国社区投稿请关注如下的内容。 投稿内容要求: 内容要求是 Apache Spark 相关的技术内容,可以是对 Apache Spark 的分析,也可以是 Apache Spark 的实践。
社区小助手 Apache Flink 入门到实战 - Flink开源社区出品 基于 Apache Dubbo 的大规模微服务集群实践调优 Apache RocketMQ:如何从互联网时代演进到云 Hadoop 分布式文件系统 HDFS Hadoop快速入门