Hive架构及搭建方式

Hive架构及搭建方式

[TOC]

前言

hive的基础知识

基本架构

内嵌服务

hcatalog

hcatalog 架设在metastore上,暴露一组api,使得其它框架,比如Pig,FLink能够使用hive的元数据管理功能,从而以表视角去管理数据

初始化metastore db

其中dbType的取值可以是

参考资料 https://cwiki.apache.org/confluence/display/Hive/AdminManual+Metastore+Administration

启动hiveserver2

上述命令为前台运行,最好以no hang up 加后后台方式运行

启动后hive的web界面对应的端口是:10002

基本客户端部署

软件包分发

将上述hive发型包,同配置,拷贝到需要启动beeline的机器上,即完成客户端的配置。配置文件只需要hive-site.xml,可根据具体机器环境,去修改相应的路径配置信息,不需要hivemetastore-site.xml 和 hiveserver2-site.xml文件

环境变量配置

日志路径配置

同hiveserver一样,根据具体情况,做一些路径配置修改

启动

使用即可连接hiveserver2。

由于hive在hdfs中使用的目录,默认是,所以为了避免权限相关的错,需要在通过beeline链接是加参数,用于指定当前客户端使用的用户。并且该用户要有和其下文件的相关权限,没有的话需要单独加。权限模型,同Linux类似。如果有权限问题,一般的错误类似

带用户名链接为形式为:

这里以hive用户链接到hiveserver

beeline整体使用文档:https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients

hiveserver高可用部署

服务端配置

在所有需要启动hiverserver的机器上,配置hiveserver2-site.xml。在其中做如下配置

同时记住,需要部署的hiverserver的机器,都要有相同metastore的配置,保证他们连得时同一个mysql,可将hivemetastore-site.xml配置拷贝至多个需要启动hiveserver的机器

参考资料:http://lxw1234.com/archives/2016/05/675.htm

客户端连接

用beeline的连接方式如下:

注意其中的jdbc url一定要加引

认证

这里选择Kerberos作为认证选项。其需要配置的三个配置项如下:

使用了kerberos认证后的beeline链接方式

上述命令使用前,一定保证已经通过kinit实现了当前机器的kerberos认证。否者beeline命令会 错,因为没有取到kerberos认证票据。

该命令会自动去读取,当前登录的kerberos用户信息,在执行的命令的时候带上

比如当前kerberos的tgt是test用户,那么该hivesql 对应的owner就是test。实际组件之间的通信认证是使用的hive/master@HAIXUE.COM 用户。但授权粒度会控制到test上。

这个特性是hive配置的的 属性来控制的,该属性为true时,表示运行以提交用户作为最终sql执行的用户

另外,最好我们在hiveserver的配置文件中,将关闭为false. 因为该选项,会允许用户以参数指定一个用户。这样会导致一个用户以自己的kerberos凭证,操作别人的库表。但禁用后,hue就无法将其登录用户做为提交job的人。

基于hive-site.xml的客户端连接

上述记录的连接hiveserver2的方式,是通过jdbc来实现的。但有些依赖hive的程序,则只能通过hive-site.xml 这种方式连接hiveserver。典型的就是hue

hue会去环境变量或者路径下找和两个配置文件,读取其中的信息,实现对hiveserver的连接。

如果集群配置了kerberos,那么需要在hive-site.xml中配置,跟hiveserver2-site.xml一样的kerberos认证配置,例如

像hue 是使用beeline连接,还可以配置beeline-hs2-connection.xml,在其中指定一些些连接hiveserver2的代理用户信息,不过目前发现不配置依然可以使用。如下:

一些错误

错误1 guava

初始化metastore schema是 错

原因是hadoop路径下的guava包同hive的lib下的guava包版本不一致。

解决办法,删除hive的guava包,将hadoop的对应guava包拷贝过来

错误2,mysql驱动

问题原因,hive缺乏mysql的驱动

解决办法,下载一个mysql的驱动,安装到hive的lib下

错误3

当使用beeline客户端:链接,hiveserver2时, 以下错误

我们是以hive用户,启动的hiveserver2。所以,所有客户端,无论以书面用户链接到hiveserver2,最终hiveserver2去访问hadoop集群时,都是以hive的用户去访问的。

但如果你没在hadoop中,做相关的配置,那hadoop默认是不允许hive这个用户作为其他用户的代理用户使用集群的,所以需要在hadoop的core-site.xml中,做以下配置

参考资料

https://cwiki.apache.org/confluence/display/Hive/GettingStarted https://cwiki.apache.org/confluence/display/Hive/HCatalog+InstallHCat https://stackoverflow.com/questions/22533814/what-is-use-of-hcatalog-in-hadoop https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Clients

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年9月18日
下一篇 2021年9月18日

相关推荐