一、 什么是Hive
Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。
二、 为什么使用Hive
学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
三、 Hive 系统架构
用户接口主要有三个:CLI,JDBC/ODBC和 WebUI
1. CLI,即Shell命令行
2. JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式类似
3. WebGUI是通过浏览器访问 Hive
Metastore(Hive的元数据)
1. 元数据包含了Hive包表的表名、字段分区属性等表的属性信息
2. 默认使用Derby数据库作为默认的元数据仓库(嵌入式,只支持单session回话)
四、 Hive与传统数据的对比
Hive |
RDBMS |
|
查询语言 |
HQL |
SQL |
数据存储 |
HDFS |
Raw Device or Local FS |
执行 |
MapReduce |
Excutor |
执行延迟 |
高 |
低 |
处理数据规模 |
大 |
小 |
索引 |
0.8版本后加入位图索引 |
有复杂的索引 |
五、 Hive与hadoop 的调用关系
六、 Hive安装
1. 下载hive源文件
2. 解压hive文件
3. 进入$HIVE_HOME/conf/修改文件
a) cp hive-env.sh.template hive-env.sh
b) cp hive-default.xml.template hive-site.xml
4. 修改$HIVE_HOME/bin的hive-env.sh,增加以下三行
a) exportJAVA_HOME=/usr/local/jdk1.7.0_45
b) exportHIVE_HOME=/usr/local/hive-0.14.0
c) exportHADOOP_HOME=/usr/local/hadoop-2.6.0
5. 伪分布模式使用默认的Derby就可以直接启动Hive控制台了,但一般都会修改为MySQL
修改$HIVE_HOME/conf/hive-site.xml
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.1.100:3306/crxy_job?
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>admin</value>
</property>
6. 将MySQL的驱动包jar文件存放在HIVE_HOME/lib下
7. 启动Hive,现在就可以执行Sql语句创建表了!
更多精彩内容请关注