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进行处理,非常感谢!