什么是Hive?Hive的常用配置?hive的运行原理是什么?

一、Hive概述

1.1 什么是Hive

Hive是建立在Hadoop上的数据仓库,提供了一系列工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。

数据库:

mysql、oracle、sqlserver、DB2、sqlite、MDB

数据仓库

Hive,是MR的客户端,也就是说我们不必要在所有的机器上都安装部署Hive

1.2 Hive的特征

1)操作接口是采用SQL语法,我们在Hive中称之为HQL

2)避免了写MapReduce的繁琐过程,内嵌SQL解析引擎,将SQL语句转译成M/R Job然后再Hadoop上执行

3)Hive的表其实就是HDFS的目录/文件,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据

1.3 Hive体系结构

1)Client(用户操作接口)

终端命令行

JDBC--不常使用,相对于前者非常麻烦

2)metastore(元数据存储)

Hive 将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等

3)解释器、编译器、优化器

完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在 HDFS 中,并在随后由 MapReduce 调用执行

4)Server(由Hadoop提供)

Hive的数据存储在HDFS中,用MapReduce进行计算

1.4 HIVE的mateStore

mateStore是Hive存储元数据的地方,默认使用内嵌的derby数据库作为存储引擎

derby弊端:一次只能打开一个会话

mysql:使用mysql作为外置引擎,多用户可以同时访问

二、Hive的常用配置

2.1 修改hive文件存储位置

<property>

    <name>hive.metastore.warehouse.dir</name>

    <value>/user/hive/warehouse</value>

    <description>location of default database for the warehouse</description>

 </property>

2.2 修改hive在HDFS中文件权限

[root@test04 conf]# hadoop fs -chmod 777 /tmp

2.3 显示数据库名称

<!--显示数据库名称以及字段名称-->

<property>

    <name>hive.cli.print.header</name>

    <value>true</value>

    <description>Whether to print the names of the columns in query output.</description>

  </property>

 <!--是否在当前客户端显示当前所在数据库名称-->

 <property>

    <name>hive.cli.print.current.db</name>

    <value>true</value>

    <description>Whether to include the current database in the Hive prompt.</description>

 </property>

三、Hive的运行原理

 

 

 

 

猜你喜欢

转载自blog.csdn.net/qq_44776691/article/details/89219885