Hive教程
2016-05-13 17:00
197 查看
hive是一个基于hadoop文件系统之上的数据仓库架构。它为数据仓库的管理提供了很多功能:数据ETL(抽取、转换、加载)工具、数据存储管理和大型数据集的查询和分析能力。同时,hive定义了类sql的语言——hive ql。hive ql允许用户进行和sql相似的操作,还允许开发人员方便地使用mapper和reducer操作,这对mapreduce框架是一个强有力的支持。
它是专为OLAP设计;
提供sql类型语言查询,叫做hive ql或hql;
可扩展、可延展性、良好的容错性和低约束的数据输入格式。
安装hive的前提是必需先安装好hadoop环境。本次安装使用hadoop-2.4.1版本。
java版本是java1.7.0_65
hadoop的安装可以使用:
1.单机环境
2.伪分布环境(本次选用伪分布环境)
3.集群环境
元数据信息被存储在hive自带的Derby数据库中;
只允许创建一个连接;
多用于Demo。
2.本地模式
元数据信息被存储在MySQL数据库中;
MySQL数据库与hive运行在同一台物理机上;
多用于开发和测试。
3.远程模式
元数据信息被存储在MySQL数据库中,但是hive和MySQL运行在不同的操作系统上;
允许创建多个连接;
多用于生产环境。
下载hive安装包,hive-0.9.0.tar.gz。
下载mysql安装包,包括三个:
MySQL-client-5.5.31-2.el6.i686.rpm
MySQL-server-5.5.31-2.el6.i686.rpm
mysql-connector-java-5.1.10.jar。
开始安装
解压:
重命名:
配置环境变量:
在文件的最后添加hive的配置环境:
修改后需要使环境变量生效:
配置hive相关文件:
进入hive的conf目录下,修改默认模板:
(1)在该目录下,执行命令
进行重命名。结果如下:
修改hive-log4j.properties:
在命令行输入:hive即可进入hive。
至此,hive的嵌入式模式安装完成!可以建立一个简单的hive表:
查看表:
查看student表的结构:
下面安装独立模式,并选择mysql作为元数据库。
创建mysql元数据库:
删除linux上已经安装的mysql相关库信息(切换至root用户):
检查是否删除干净:
安装mysql服务端:
启动mysql服务端:
安装mysql客户端:
用root账户进入mysql:
为hive创建相应的mysql账户(账户和密码均为hive),创建hive元数据库,并赋予足够的权限:
使之立即生效:
退出mysql,并使用刚才的hive进行连接:
提示输入密码,输入hive即可进入mysql。
使用mysql作为hive的metastore:
把mysql的jdbc驱动包放置到hive的lib目录下:
在hdfs上创建目录,并修改权限:
配置相应的hive-site.xml文件,修改如下信息:
启动hive shell:
或启动静默模式:
至此hive的独立模式安装完毕!
远程模式和独立模式差不多,区别就是mysql安装在另一台设备上面。需要修改:
CLI(命令行)方式(重点介绍)
Web界面方式
远程服务启动方式
输入hive –service cli
常用的CLI命令
清屏:
查看数据仓库中的表:
查看数据仓库中内置的函数:
查看表的结构:
查看HDFS上的文件:
在hive里面操作linux操作系统的命令:
执行HQL语句:
执行SQL的脚本:
在linux操作系系统上执行hive命令:
基本数据类型
复杂数据类型
时间数据类型
float/double:浮点数类型
boolean:布尔类型
string:字符串类型
Map:集合类型,包含key->value键值对,可以通过key来访问元素
Struct:结构类型,可以包含不同数据类型的元素。这些元素可以通过“点语法”的方式来得到所需要的元素
即日期,分为年、月、日。
Timestamp:从hive0.8.0开始支持
与时区无关。
当前系统的时间戳:
一、hive简介
hive是什么?
hive是建立在hadoop体系架构上的一个数据仓库基础工具,用来处理结构化数据,使得查询和分析方便;hive不是
hive不是一个关系型数据库,不提供排序和查询cache功能,不提供在线事务处理,也不提供实时的查询和记录级的更新;hive特点:
它是存储架构在一个数据库中,并处理数据到hdfs;它是专为OLAP设计;
提供sql类型语言查询,叫做hive ql或hql;
可扩展、可延展性、良好的容错性和低约束的数据输入格式。
hive架构
hive组件图的结构:单元名称 | 操作 |
---|---|
用户接口/界面 | Hive是一个数据仓库基础工具软件,可以创建用户和HDFS之间互动。用户界面,Hive支持是Hive的Web UI,Hive命令行,HiveHD洞察(在Windows服务器)。 |
元数据 | Hive选择各自的数据库服务器,用以储存表,数据库,列模式或元数据表,它们的数据类型和HDFS映射。 |
HiveQL处理引擎 | HiveQL类似于SQL的查询上Metastore模式信息。这是传统的方式进行MapReduce程序的替代品之一。相反,使用Java编写的MapReduce程序,可以编写为MapReduce工作,并处理它的查询。 |
执行引擎 | HiveQL处理引擎和MapReduce的结合部分是由Hive执行引擎。执行引擎处理查询并产生结果和MapReduce的结果一样。它采用MapReduce方法。 |
HDFS 或 HBASE | Hadoop的分布式文件系统或者HBASE数据存储技术是用于将数据存储到文件系统。 |
hive工作原理
hive和hadoop之间的工作流程:二、hive的安装部署
系统环境:安装hive的前提是必需先安装好hadoop环境。本次安装使用hadoop-2.4.1版本。
java版本是java1.7.0_65
hadoop的安装可以使用:
1.单机环境
2.伪分布环境(本次选用伪分布环境)
3.集群环境
hive的安装模式
1.嵌入模式元数据信息被存储在hive自带的Derby数据库中;
只允许创建一个连接;
多用于Demo。
2.本地模式
元数据信息被存储在MySQL数据库中;
MySQL数据库与hive运行在同一台物理机上;
多用于开发和测试。
3.远程模式
元数据信息被存储在MySQL数据库中,但是hive和MySQL运行在不同的操作系统上;
允许创建多个连接;
多用于生产环境。
独立模式的安装
准备工作下载hive安装包,hive-0.9.0.tar.gz。
下载mysql安装包,包括三个:
MySQL-client-5.5.31-2.el6.i686.rpm
MySQL-server-5.5.31-2.el6.i686.rpm
mysql-connector-java-5.1.10.jar。
开始安装
解压:
tar -zxvf hive-0.9.0.tar.gz/home/hadoop
重命名:
mv hive-0.9.0 hive
配置环境变量:
vim /etc/profile
在文件的最后添加hive的配置环境:
export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65/ export HADOOP_HOME=/home/hadoop/app/hadoop-2.4.1/ export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HIVE_HOME=/home/hadoop/hive export PATH=$HIVE_HOME/bin:$PATH
修改后需要使环境变量生效:
source /etc/profile
配置hive相关文件:
进入hive的conf目录下,修改默认模板:
(1)在该目录下,执行命令
mv hive-default.xml.template hive-site.xml
mv hive-env.sh.template hive-env.sh
mv hive-log4j.properties.template hive-log4j.properties
进行重命名。结果如下:
-rw-rw-r--. 1 hadoop hadoop 2378 Apr 24 2012 hive-env.sh -rw-rw-r--. 1 hadoop hadoop 2422 Apr 24 2012 hive-exec-log4j.properties.template -rw-rw-r--. 1 hadoop hadoop 2899 May 11 23:02 hive-log4j.properties -rw-rw-r--. 1 hadoop hadoop 48899 May 12 06:48 hive-site.xml
修改hive-log4j.properties:
#log4j.appender.EventCounter=org.apache.hadoop.metrics.jvm.EventCounter log4j.appender.EventCounter=org.apache.hadoop.log.metrics.EventCounter
在命令行输入:hive即可进入hive。
至此,hive的嵌入式模式安装完成!可以建立一个简单的hive表:
create table student ( name string, sex string, age int );
查看表:
show tables;
查看student表的结构:
desc student;
下面安装独立模式,并选择mysql作为元数据库。
创建mysql元数据库:
删除linux上已经安装的mysql相关库信息(切换至root用户):
rpm -e xxxxxxx --nodeps
检查是否删除干净:
rpm -qa |grep mysql
安装mysql服务端:
rpm -i MySQL-server-5.5.31-2.el6.i686.rpm
启动mysql服务端:
mysqld_safe &
安装mysql客户端:
rpm -i MySQL-client-5.5.31-2.el6.i686.rpm
用root账户进入mysql:
mysql -uroot
为hive创建相应的mysql账户(账户和密码均为hive),创建hive元数据库,并赋予足够的权限:
create user 'hive' identified by 'hive';
create database hive;
grant all privileges on *.* to 'hive'@'localhost' identified by 'hive';
使之立即生效:
flush privileges;
退出mysql,并使用刚才的hive进行连接:
mysql -uhive -p
提示输入密码,输入hive即可进入mysql。
使用mysql作为hive的metastore:
把mysql的jdbc驱动包放置到hive的lib目录下:
cp /home/hadoop/mysql-connector-java-5.1.10.jar /home/hadoop/hive/lib
在hdfs上创建目录,并修改权限:
hadoop fs -mkdir /tmp/hive
hadoop fs -chmod -R 777 /tmp/hive
配置相应的hive-site.xml文件,修改如下信息:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property>
启动hive shell:
hive
或启动静默模式:
hive -S
至此hive的独立模式安装完毕!
远程模式和独立模式差不多,区别就是mysql安装在另一台设备上面。需要修改:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://<远程主机IP>:3306/hive</value> </property>
三、hive的操作
安装好了hive以后,就可以使用不同的方式对hive数据仓库中的数据进行管理。hive为我们提供了几种不同的方式来管理数据。hive的启动方式:CLI(命令行)方式(重点介绍)
Web界面方式
远程服务启动方式
CLI(命令行)方式
直接输入hive(hive -S静默模式)输入hive –service cli
常用的CLI命令
清屏:
Ctrl+l或者!clear
查看数据仓库中的表:
show tables;
查看数据仓库中内置的函数:
show functions;
查看表的结构:
desc 表名;
查看HDFS上的文件:
dfs -ls 目录;
在hive里面操作linux操作系统的命令:
! 命令;
执行HQL语句:
select *** from ***;
执行SQL的脚本:
source SQL文件;
在linux操作系系统上执行hive命令:
hive -e 'hive命令'; hive -S -e 'hive命令';(静默模式)
hive的数据类型
hive是一个数据仓库,本质上也是一个数据库。所以可以在hive里面创建表,保存数据。创建表就会有相对应的列,而列就有相对应的类型。hive里面可以将数据类型分为一下三种:基本数据类型
复杂数据类型
时间数据类型
基本数据类型
tinyint/smallint/int/bigint:整数类型float/double:浮点数类型
boolean:布尔类型
string:字符串类型
复杂数据类型
Array:数组类型,由一系列相同数据类型的元素组成Map:集合类型,包含key->value键值对,可以通过key来访问元素
Struct:结构类型,可以包含不同数据类型的元素。这些元素可以通过“点语法”的方式来得到所需要的元素
时间类型
Date:从hive0.12.0开始支持即日期,分为年、月、日。
Timestamp:从hive0.8.0开始支持
与时区无关。
当前系统的时间戳:
select unix_timestamp();
相关文章推荐
- 解决之前App内语言切换的某些bug
- MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结
- DWR 消息推送
- 网络扫盲——NAT(网络地址转换)
- Linux下项目与事务跟踪工具JIRA搭建汉化安装详解
- C++的常量引用
- android SeekBar的自定义样式设置
- Jetty的安装和配置
- java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
- Android中activity保存状态和数据到底该在哪个方法中进行
- Could not obtain transaction-synchronized Session for current thread
- 读nandflash详解
- 判断两条直线是否相交
- java 反编译和引用jar包的方法
- 【搞定配色】超实用!帮你快速搞定网页配色的方法(附配色神器)
- 【BZOJ4439】[Swerc2015]Landscaping【最小割】
- CodeForces - 96B Lucky Numbers (easy)
- POJ 1696 Space Ant Graham-scan
- 励志学习文章精选
- hdu1495非常可乐(BFS)