hive之beeline连接与操作

一、连接配置

1.连接测试

1.1前提

hadoop集群、hive已正常安装,hadoop集群已启动

1.2启动hive服务

先启动 metastore 服务:

nohup hive --service metastore 2>/usr/data/hive/log/metastore/metastore.err &
#或者
nohup hive --service metastore >/usr/data/hive/log/metastore/metastore.log &

#之后发现其实根本不输出日志到指定文件,所以直接运行如下命令即可:
nohup hive --service metastore &

再启动 hiveserver2 服务:

nohup hiveserver2 2>/usr/data/hive/log/hiveserver2/hiveserver.err &
#或者
nohup hiveserver2 >/usr/data/hive/log/hiveserver2/hiveserver.log &

#之后发现其实根本不输出日志到指定文件,所以直接运行如下命令即可:
nohup hiveserver2 &

启动命令各个参数含义见:参考文档

1.3测试连接

启动 beeline 客户端去连接
方式一:
beeline -u jdbc:hive2://node:10000 -n root

-u : 指定元数据库的链接信息 -n : 指定用户名和密码

方式二:
先执行 beeline
然后输入:!connect jdbc:hive2://node:10000 按回车,
然后输入用户名,这个 用户名就是安装 hadoop 集群的用户名

在这里插入图片描述
发现此时报错:

org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate -n (state=08S01,code=0)

2.问题解决

1.解决方式

1.检查hiveserver2是否启动
2.然后在beeline端的hadoop目录下/etc/hadoop/core-site.xml加入配置:

	<property>
	        <name>hadoop.proxyuser.root.hosts</name>
	        <value>*</value>
	</property>
	<property>
	        <name>hadoop.proxyuser.root.groups</name>
	        <value>*</value>
	</property>

注意配置中的root代表的是一个用户,你异常中User后面的用户写的是哪个,你在这里就配置哪个。
hadoop.proxyuser.root.hosts 配置成*的意义,表示任意节点使用 hadoop 集群的代理用户 root 都能访问 hdfs 集群,hadoop.proxyuser.root.groups 表示代理用户的组所属

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

3.然后在/etc/hadoop/hdfs-site.xml中加入配置:

	<property>
		<name>dfs.webhdfs.enabled</name>
		<value>true</value>
	</property>

将dfs.webhdfs.enabled属性设置为true,否则就不能使用webhdfs的LISTSTATUS、LISTFILESTATUS等需要列出文件、文件夹状态的命令,因为这些信息都是由namenode来保存的
具体参考文档

4.重启hadoop集群与hive的hiveserver2服务,再重新使用beeline连接

5.如果上述步骤都实在不行,则可以将hive的hive-site.xml中添加或修改为该配置(最好不要)

	  <property>
	      <name>hive.server2.enable.doAs</name>
	      <value>false</value>
	  </property>

如果为True:Hive Server会以提交用户的身份去执行语句
如果为False:会以hive server daemon的admin user来执行语句

hive.server2.enable.doAs设置成false,则yarn作业获取到的hiveserver2用户都为hive用户。
设置成true则为实际的用户名

2.连接

本文在上述的步骤4之后则成功连接:
在这里插入图片描述

二、操作

1.beeline操作

使用show databases;命令查看数据库:
在这里插入图片描述
查询表:
在这里插入图片描述

  • 9
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值