Hive是基于Hadoop的一个数据仓库工具,是一种逻辑上的数据库,依赖hdfs文件系统;它把实际的数据文件映射为一张数据库表来作为元数据来管理hdfs上的数据。Hive存在的意义并非数据存储,而是被用来处理数据的,它计算的实质是用sql调用了底层的mapreduce。因为hive的sql的学习成本比较低,几乎和mysql这些数据库近似,所以使用极其广泛。很多公司使用hive几乎都能够撑起整个项目。
Hive几大组件
Driver组件:包括Complier、Optimizer和Excecutor,主要作用是将sql进行解析、编译优化、生成执行计划,然后调用底层的的mapreduce计算框架。
Thrift服务组件:thrift是facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务的开发,hive集成了该服务,能让不同的编程语言调用hive的接口。
Metastore组件:它是元数据服务组件,hive元数据集中存放地。Metastore组件包括两个部分:metastore服务和后台数据的存储。后台数据存储的介质就是关系数据库,例如mysql数据库。Metastore服务是建立在后台数据存储介质之上,并且可以和hive服务进行交互的服务组件,默认情况下,metastore服务和hive服务是安装在一起的,运行在同一个进程当中。也可以把metastore服务从hive服务里剥离出来,metastore独立安装在一个集群里,hive远程调用metastore服务,这样就可以把元数据这一层放到防火墙之后,客户端访问hive服务,就可以连接到元数据这一层,从而提供了更好的管理性和安全保障。使用远程的metastore服务,可以让metastore服务和hive服务运行在不同的进程里,这样也保证了hive的稳定性,提升了hive服务的效率。
客户端组件:包括cli命令行接口;Thrift客户端,实际上像jdbc、odbc这些接口都是建立在thrift客户端之上的;WEBGUI是hive客户端提供网页访问服务,这个接口对应了hive的hwi(hive web interface)组件,使用前要启动hwi服务。
Hive多用户操作配置
Hive-server配置(hive-site.xml):
1 |
<configuration> |