hive的安装部署,网上有很多教程,我在这边就不再重复了,这次我要讲的是hive如何提交hql语句到hive上执行。
一共有以下几种方式:
第一、 hiveserver
通过搭建hiveserver来提供thrift接口,接收来自远程提交的hql语句执行。
这样做的好处是不需要hive客户端,简化部署方式,但是对于数据分析工程需要一定的研发能力来实现thrift协议,不过可以设计一个公用的组件来简化数据分析师的工作量。弥补数据分析师不熟悉开发的欠缺。
第二、hive client
hive client的部署方式,需要安装部署hive和hadoop作为客户端。数据分析师可以采用hive -e 的方式提交hql语句。
hive client的元数据,一般设置为local模式,hive在启动过程中,通过jdbc连接hive的元数据数据库得到元数据。但这样最大的问题是暴露了hive元数据数据库的用户名和密码,而且在mysql服务端,也无法对权限做精细化控制。
hive client的元数据可以通过remote的方式来控制,通过设置hive.metastore.uris 参数,连接远程服务器的remote元数据,那么hive client端不需要提供msyql的用户名和密码,大大提高了安全性。同时msyql服务端可以通过精细化的控制权限。
部署方式
选择一台服务器,安装hive,msyql的jdbc驱动,配置mysql的数据库、用户名、密码。执行 bin/hive --service metastore & 启动服务。
hive client 配置hive.metastore.uris 参数(此处可以把数据库的配置信息和jdbc驱动去掉),将hive.metastore.uris 设置成 thrift://$ip:9083
执行hql bin/hive -e "select ****"