Hive(二)--架构和组件

Hive(二)--架构和组件

hive与关系数据库的区别,具体如下:
    hive和关系数据库存储文件的系统不同,hive使用的是hadoop的HDFS(hadoop的分布式文件系统),关系数据库则是服务器本地的文件系统;
    hive使用的计算模型是mapreduce;而关系数据库则是自己设计的计算模型;
    hive则是为海量数据做数据挖掘设计的,实时性很差;而关系数据库都是为实时查询的业务进行设计的;
    Hive很容易扩展自己的存储能力和计算能力,这个是继承hadoop的,而关系数据库在这个方面要比数据库差很多。


一、hive的架构图:
        
由上图可知,hadoop和mapreduce是hive架构的根基。Hive架构包括如下组件:CLI(command line interface)、JDBC/ODBC、Thrift Server、WEB GUI、metastore和Driver(Complier、Optimizer和Executor),这些组件我可以分为两大类:服务端组件和客户端组件。

服务端组件:
  Driver组件:该组件包括Complier、Optimizer和Executor,它的作用是将我们写的HiveQL(类SQL)语句进行解析、编译优化,生成执行计划,然后调用底层的mapreduce计算框架。
  Metastore组件:元数据服务组件,这个组件存储hive的元数据,hive的元数据存储在关系数据库里,hive支持的关系数据库有derby、mysql。元数据对于hive十分重要,因此hive支持把metastore服务独立出来,安装到远程的服务器集群里,从而解耦hive服务和metastore服务,保证hive运行的健壮性,这个方面的知识,我会在后面的metastore小节里做详细的讲解。
  Thrift服务:thrift是facebook开发的一个软件框架,它用来进行可扩展且跨语言的服务的开发,hive集成了该服务,能让不同的编程语言调用hive的接口。

客户端组件:
  CLI:command line interface,命令行接口。
  Thrift客户端:上面的架构图里没有写上Thrift客户端,但是hive架构的许多客户端接口是建立在thrift客户端之上,包括JDBC和ODBC接口。
  WEBGUI:hive客户端提供了一种通过网页的方式访问hive所提供的服务。这个接口对应hive的hwi组件(hive web interface),使用前要启动hwi服务。
  



二、Hive的执行流程如下图所示:



三、一个简单的例子,看看hive是怎么操作的。
首先我们创建一个普通的文本文件,里面只有一行数据,该行也只存储一个字符串,命令如下:
echo  ‘sharpxiajun’ > /home/hadoop/test.txt

然后我们建一张hive的表:
hive –e “create table test (value string);

接下来加载数据:
Load data local inpath ‘home/hadoop/test.txt’ overwrite into table test

最后我们查询下表:
hive –e ‘select *from test’;










猜你喜欢

转载自www.cnblogs.com/sunziying/p/9068666.html
今日推荐