一、前言:
数据仓库主要用来用来存储公司或者企业的历史数据,即日积月累的数据。
1、数据库与数据仓库区别:
关系型数据库是基于事务性的,数据仓库是根据主题构建的。
2、使用示例:
l 用户使用天然气的大数据分析
l 电影票房分析收视率等
l 百度搜索关键词分析热词
二、Hive简介:可爱的小蜜蜂
1、Hive是建立在Hadoop之上的数据仓库基础架构工具,可以将结构化的数据文件映射为一张数据库表。
2、用来进行数据提取--->转化--->加载(ETL:Extract-Transform-Load)
3、Hive定义了简单的类SQL查询语言(HQL),SQL语句转译成M/R(Map/Reduce) Job,然后在Hadoop上执行
4、Hive表其实对应的就是HDFS中的目录
5、Hive表存储的是元数据,真正的数据保存在HDFS中的文件里面
6、Hive表中的数据不用insert入库,而是用Hadoop -put命令上传数据到HDFS目录中
7、Hive数据仓库里面可以创建多个数据库
三、Hive安装部署
1、安装条件:
Hive安装在Hadoop集群上,要求Hadoop集群已正常启动
2、解压安装Hive:
a、从Hive官网下载
https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz
b、将Hive安装包apache-hive-2.1.1-bin.tar.gz复制到/home/lizh/devtool下
c、解压安装 tar -zxvf apache-hive-2.1.1-bin.tar.gz
d、配置Hive的环境变量 /etc/profile,然后执行source /etc/profile使环境变量生效
# Hive environment export HIVE_HOME=/home/lizh/devtool/apache-hive-2.1.1-bin export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH |
四、Hive安装部署——metastore
1、Hive的metastore:Hive元数据
2、metastore是Hive元数据的集中存放地
3、metastore使用hive内嵌的derby数据库作为存储引擎
4、derby缺点:一次只能打开一个会话
5、可以使用MySQL作为Hive的外置存储引擎,存放metastore
五、安装MySQL
l Windows版本
l Linux版本
六、Hive安装部署——配置MySQL
配置MySQL作为Hive metastore的存储
l 上传MySQL的驱动【mysql-connector-java-5.1.31.jar】到
/home/lizh/devtool/apache-hive-2.1.1-bin/lib目录下,MySQL5.6版本需要5.1.31及以上版本。
七、Hive安装部署-配置hive-site
l 配置Hive的hive-site.xml文件,该文件最初不存在,需要在conf目录下复制模板文件【hive-default.xml.template】重命名为【hive-site.xml】,内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://172.10.10.69:3306/hive?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <property> <name>hive.metastore.schema.verification</name> <value>false</value> <description> Enforce metastore schema version consistency. True: Verify that version information stored in metastore matches with one from Hive jars. Also disable automatic schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures proper metastore schema migration. (Default) False: Warn if the version information stored in metastore doesn't match with one from in Hive jars. </description> </property> </configuration> |
八、Hive安装部署-配置hive-env
l 配置Hive的hive-env.sh文件,该文件最初不存在,需要在conf目录下复制模板文件【hive-env.sh.template】重命名为【hive-env.sh】。
l 该配置文件主要用来和Hadoop进行关联。内容如下:
HADOOP_HOME=/home/lizh/devtool/hadoop-2.7.3 export HIVE_CONF_DIR=/home/lizh/devtool/apache-hive-2.1.1-bin/conf export HIVE_AUX_JARS_PATH=/home/lizh/devtool/apache-hive-2.1.1-bin/lib |
九、启动Hive
l 在命令提示符下输入:hive命令,会在MySQL中自动生成Hive数据库。
l 在MySQL中查看Hive的元数据信息。
十、Hive数据仓库学习
1、创建数据仓库:school
create database if not exists school; |
2、在数据仓库中创建表,并查看表
use school; //创建学生表:列用tab分割 create external table student(tid int,tname string) comment '学生表' row format delimited fields terminated by '\t' stored as textfile //查看表结构 desc student; //显示所有表 show tables;
//构造数据文件student.txt 10001 zhangsan 10002 lisi 10003 wangwu 10004 xiaoli 10005 xiaomao 10006 xiaohua 10007 xiaowang 10008 laowang 10009 刘德华 10010 张学友 10011 xiaoli
//把文件导入到Hive数据库 //从本地文件系统中导入数据到Hive表 load data local inpath '/home/lizh/devtool/hadoop-2.7.3/student.txt' into table student; //从HDFS上导入数据到Hive表 load data inpath '/user/lizh/dataHdfs/input/student.txt' into table student; |
3、统计姓名相同的学生人数
select tname,count(*) from student group by tname; |
4、删除表
DROP TABLE student; |
词汇解释:
l 元数据:数据库的名称,所属,包含的表名称,表字段结构等信息称为元数据。
l ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
l start-all.sh 启动Hadoop
l jps查看Hadoop:jps是jdk提供的一个查看当前Java进程的小工具, 可以看做是JavaVirtual Machine Process Status Tool的缩写。非常简单实用。详细【http://blog.csdn.net/wisgood/article/details/38942449】
l Hive中删除表时候,如果提示错误【MySQL server version for the right syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT' at line 1】,说明MySQL版本和mysql-connector-java-5.1.31.jar版本不匹配。
Hadoop后台界面:http://172.10.10.69:50070
导入数据参考:http://blog.csdn.net/lifuxiangcaohui/article/details/40588929
http://www.cnblogs.com/ggjucheng/archive/2013/01/04/2844393.html
http://bestchenwu.iteye.com/blog/2171795