前言:
而今朋友们对“apachehive”可能比较关怀,各位老铁们都需要知道一些“apachehive”的相关文章。那么小编也在网络上收集了一些关于“apachehive””的相关知识,希望朋友们能喜欢,看官们一起来学习一下吧!1.hive 基本介绍:
Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL ,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。
Hive的表其实就是HDFS的目录,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据。
2.hive的数据存储
Hive四类数据模型:表(table),外部表(external table),分区(partition), 桶(Bucket)。
2.1.表:
与数据库中的 Table 在概念上是类似
每一个 Table 在 Hive 中都有一个相应的目录存储数据。例如,一个表 test,它在 HDFS 中的路径为:/$warehouse/test。 $warehouse是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的数据仓库的目录
所有的 Table 数据(不包括 External Table)都保存在这个目录中。
删除表时,元数据与数据都会被删除
例:
创建数据文件inner_table.dat
创建表
hive>create table inner_table (key string);
加载数据
hive>load data local inpath '/root/inner_table.dat' into table inner_table;
查看数据
select * from inner_table
select count(*) from inner_table
删除表 drop table inner_table
2.2.分区:
hive表中的一个分区对应表下的一个目录,所有分区的数据都存储在对应的目录中。
2.3.桶:
桶对指定列进行哈希(hash)计算时,根据哈希切分数据,每个桶对应一个文件。
2.4.外部表:
外部表指向已经在hdfs中存在的数据,也可以创建分区。外部表和表在元数据的组织上是相同的,但是实际数据的存储存在较大差异。
3.hive的元数据存储
由于hive的元数据会不断更新、修改和读取。
单用户模式: 此模式连接到一个in-memory 数据库Derby
多用户模式: 通过网络连接到一个数据库中(如:mysql)
远程sever模式: 用户非java客户端访问元数据,在服务端启动一个metastoreserver,客户端利用Thrift协议通过metastoreserver。
注意:Derby引擎的缺点:一次只能打开一个会话,
使用Mysql作为外置存储引擎,多用户同时访问。
4.hive 的组件与体系结构
4.1.用户接口主要有三个:CLI,JDBC/ODBC和 WebUI
CLI,即Shell命令行
JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似.
WebGUI是通过浏览器访问 Hive.
4.2.Hive 将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等
4.3.解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行
4.4.Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务)
5:Hive与传统数据库对比
6: hive的图形化界面
7.hive的运行模式
Hive的运行模式即任务的执行环境
分为本地与集群两种
我们可以通过mapred.job.tracker 来指明
设置方式:
hive > SET mapred.job.tracker=local;
8.hive的三种启动方式
8.1、hive 命令行模式,直接输入#/hive/bin/hive的执行程序,或者输入 #hive --service cli
8.2、 hive web界面的 (端口号9999) 启动方式
#hive --service hwi &
用于通过浏览器来访问hive
8.3、 hive thrift远程服务 (端口号10000) 启动方式
#hive --service hiveserver &
标签: #apachehive