使用beeline客户端
与本地模式不同的是,远程模式只需要安装hive即可,不需要对其进行hive-site.xml的配置
启动metastore服务
hive本地模式和远程模式都要用的服务
启动方式:
使用hive的bin目录下的hive命令:bin/hive --service metabase
启动hiveserver2服务
hiveserver2又简称 HS2 是hive远程模式,beeline要用到的服务
不知道诸佬是否还记得我们之前在配置hadoop102的hive-site.xml时添加过一下这段code
<!-- H2S运行绑定host -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
<!-- 此处的10000就是hiveserver2需要占用的端口需要保证在启动此服务前此端口没有被占用 -->
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>hadoop102</value>
</property>
这段code就是用来把hiveserver2(HS2)绑定到host(hadoop102)的,正常情况下,这些都是我们配置好的
启动方式:
使用hive的bin目录下的hive命令:bin/hive --service hiveserver2
hiveserver2服务启动比较慢,可能会显示几个ID后才能完全启动
启动不成功会造成后续beeline客户端连接不到hadoop102
检查是否启动成功的方式很简单,就是看HS2的端口是否被HS2占用了,使用命令sudo netstat -anp|grep 10000
,在此命令查询到任何信息前都可视作没有启动成功
使用beeline客户端连接到hadoop102
还记得hadoop中的core-site.xml中的code吗
<!-- 整合hive -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
用做整合hive
到此正常情况下,这些配置都是正常的,所以我们可以直接在集群打开,两个服务启动后连接hadoop102了
在hadoop103中运行beeline
在hive根目录下使用bin/beeline
即可
进入beeline后使用命令! connect jdbc:hive2://hadoop102:10000
访问1000端口来连接到hadoop102
会让输入账号密码,账号密码都是如上我们之前在hadoop102的core-site.xml中设置的,根据上面的code,账号就是root,密码就是空
回车
观察到
恭喜连接成功了
如果连接失败则可检查上述的两段代码处是否配置正确,修改之后切记一定要重启集群后再尝试连接
但本蒟蒻在此wa了无数次,背后原因令人&%¥#@
我在登录时输入root和密码空后显示一堆错误
后来也没查找到原因,但本蒟蒻注意到自己平时都是在使用cheetah这个用户进行操作的,可能这里输入root会有问题吧,于是我又回到core-site.xml中添加了cheetah用户和密码空,保存,重启集群,再试一遍,过了!离谱,不管了
不管这里是用什么用户登录的,要确保此用户对HDFS有读写权,这样才能更改或查询HDFS中的内容
番外_更加好的hivesql编程体验
在beeline中编写sql,没有任何提示,很不方便
后续本蒟蒻会用DataGrip(DG)来继续hive的学习
配置DataGrip
加载Apache Hive 启动文件
Database栏一般在(DG)的侧边栏中
加载hive的驱动
注意驱动版本需要与自己的hive版本一致。
创建新会话
这样就可以在会话中进行sql编写了,至于其他的功能,就请诸佬探索吧
??\(\mathcal{The}\) \(\mathcal{End}\)??