Hive的连接和运行模式

Posted bqwzy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive的连接和运行模式相关的知识,希望对你有一定的参考价值。

原文链接:

https://www.toutiao.com/i6771018203687551495/

 

Hive的连接

启动hadoop的时候将history也启动,如果出问题,可以方便我们后续定位

 

技术图片

首先将Hive变成对外开放

技术图片

启动hiveserver2

技术图片

我们查看下

技术图片

如果杀掉需要用kill -9 PID的方式

启动beeline

技术图片技术图片

查看帮助信息

技术图片

简单使用下,和mysql中显示一样

官网

技术图片技术图片技术图片

我们往下拉

!connect jdbc:hive2://localhost:10000

技术图片

我们直接使用root登录,不被允许

技术图片

User: root is not allowed to impersonate root(state=08S01,code=0)

错误原因是

在core-site.xml中,有一个配置

技术图片

这个地方可以理解为

hadoop.proxyuser.xxx.hosts和hadoop.proxyuser.xxx.groups

xxx设置为root(即你的错误日志中显示的User:xxx为什么就设置为什么)

“*”表示可通过超级代理“xxx”操作hadoop的用户、用户组和主机

 

主要原因是hadoop引入了一个安全伪装机制,使得hadoop 不允许上层系统直接将实际用户传递到hadoop层,而是将实际用户传递给一个超级代理,由此代理在hadoop上执行操作,避免任意客户端随意操作hadoop

 

而hadoop内部还是延用linux对应的用户和权限。即你用哪个linux用户启动hadoop,对应的用户也就成为hadoop的内部用户

 

修改core-site.xml(我之前这个地方写的其它用户)

技术图片

重新连接

技术图片

退出

技术图片

登录之后,可以使用一些命令

技术图片技术图片

JDBC连接

技术图片技术图片

我们新建项目执行代码

技术图片

执行代码

技术图片

我们看hive中,已经新建了表格,其它语句可以完成官网示例,不再一一练习

技术图片

Hive的运行模式

依据Hive的安装和metastore的设置机器,分为下面三个模式:

嵌入模式:使用自带的derby数据库

本地模式:将metastore放在mysql,并且mysql和hive安装在同一台机器上

远程模式:将metastore放在mysql,并且mysql和hive安装在不同一台机器上

其中配置远程的配置文件是

技术图片

配置内容是

技术图片

指定hive连接数据库(mysql所在的机器)

端口号默认是9083

技术图片

也可以启动服务:bin/hive –service metastore &(不建议这种方式)

有时候我们发现hive会跑mapreduce有时候不会,那是因为fetch模式

在hive-site.xml.template中

技术图片技术图片

None模式

不管写什么SQL都会跑mapreduce

Minimal模式

当select*、针对分区字段进行过滤、以及limit不会跑mapreduce

More模式

当select*、过滤、以及limit不会跑mapreduce

虚拟列

官网

技术图片技术图片技术图片技术图片

我们查询下

进入db_deptemp,执行语句

select *, INPUT__FILE__NAME,BLOCK__OFFSET__INSIDE__FILE from emp;

技术图片

 

以上是关于Hive的连接和运行模式的主要内容,如果未能解决你的问题,请参考以下文章

hive2.1.1安装部署

hive beeline详解

将 Hive 配置为在本地模式下运行

使用 Hadoop YARN 在本地模式下运行 Hive 查询

Hive Beeline 官方文档学习

如何使用Beeline连接Impala