Hive学习总结
1、Hive是什么?
Hive 是建立在 Hadoop上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive定义了简单的类 SQL 查询语言,称为 QL ,它允许熟悉SQL 的用户查询数据。同时,这个语言也允许熟悉MapReduce 开发者的开发自定义的mapper 和 reducer 来处理内建的 mapper 和reducer 无法完成的复杂的分析工作。
Hive是SQL解析引擎,它将SQL语句转译成M/R Job然后在Hadoop执行。
Hive的表其实就是HDFS的目录/文件,按表名把文件夹分开。如果是分区表,则分区值是子文件夹,可以直接在M/R Job里使用这些数据。
优点:
基于Hadoop的大数据的计算/扩展能力
支持SQL like查询语言
统一的元数据管理
简单编程
Hive介绍:https://blog.****.net/u013063153/article/details/54313201
Hive实战:https://blog.****.net/u013063153/article/details/54313217
2、Hive的系统架构
•用户接口,包括 CLI,JDBC/ODBC,WebUI •元数据存储,通常是存储在关系数据库如 mysql, derby 中 •解释器、编译器、优化器、执行器 •Hadoop:用 HDFS 进行存储,利用 MapReduce 进行计算
|
Ø 用户接口主要有三个:CLI,JDBC/ODBC和 WebUI
Ø CLI,即Shell命令行
Ø JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似
Ø WebGUI是通过浏览器访问 Hive
Ø Hive 将元数据存储在数据库中(metastore),目前只支持 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等
Ø 解释器、编译器、优化器完成HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划(plan)的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行
Ø Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from table 不会生成 MapRedcue 任务)
3、Hive的安装
把hive-0.9.0.tar.gz复制到/usr/local
解压hive-0.9.0.tar.gz与重命名
#cd /usr/local
#tar -zxvf hive-0.9.0.tar.gz
#mv hive-0.9.0 hive
修改/etc/profile文件。#vi /etc/profile
增加export HIVE_HOME=/usr/local/hive
修改
exportPATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HIVE_HOME/bin
保存退出
cd $HIVE_HOME
mv hive-env.sh.template hive-env.sh
mv hive-default.xml.template hive-site.xml
1.修改hadoop的hadoop-env.sh(否则启动hive汇报找不到类的错误)
exportHADOOP_CLASSPATH=.:$CLASSPATH:$HADOOP_CLASSPATH:
$HADOOP_HOME/bin
2.修改$HIVE_HOME/bin的hive-config.sh,增加以下三行
export JAVA_HOME=/usr/local/jdk
export HIVE_HOME=/usr/local/hive
export HADOOP_HOME=/usr/local/hadoop
启动:#hive
hive>show tables;
hive>create table test(id int,namestring);
hive>quit;
观察:#hadoop fs -ls /user/hive
参数:hive.metastore.warehouse.dir
4、Hive与传统数据库