一、产生背景
初代的hadoop的MapReduce写起来非常的麻烦。兼容RDBMS人员的“云化”,方便使用类SQL操作大数据集。
二、架构
根据上图可以知道,Hive的接口可以是命令行、JDBC(JDBC主要的作用就是去MySQL表中取结果信息)、Web等。一条Hive SQL会像一条SQL一样,语法解析,优化器优化,执行器执行。不同的事,执行器执行在分布式存储系统上(HDFS),这样执行器也可以有多种选择(MapReduce、Spark…..)。那HDFS上是文件怎么和关系型数据库的结构化存储联系在一起呢?!MatesStore,里面存储统一的元数据信息。常用的MatesStore有MySQL。 虽然Hive与关系型数据库都是写SQL或者叫类SQL,Hive与关系型数据库还是有不同的地方。关系型数据库更关注的是查询实时性,一个语句不可能等太久。而Hive更关注的是一个大数据仓库的统计和分析,延时性会非常高。
三、Hive部署
3.1 下载Hive CDH版本
下载 cdh版本 hive-
1.1.0-cdh5
.7.0
http://archive
.cloudera.com/cdh5/cdh/
5/hive-
1.1.0-cdh5
.7.0.tar.gz
3.2 解压到指定路径下
tar
-zxvf hive
-1.1.0-cdh5.7.0.tar
.gz
-C ../app
/
3.3 添加环境变量和改变文件所属
1、添加环境变量
vim ~
/.bash_profile
添加
#HIVE
export HIVE_HOME
=/home/hadoop/app/hive
-1.1.0-cdh5.7.0
export PATH
=$HIVE_HOME/bin:
$PATH
2、生效
source ~
/.bash_profile
3、改变hive
-1.1.0-cdh5.7.0文件归属
chown
-R hadoop:hadoop hive
-1.1.0-cdh5.7.0
3.4 拷贝MySQL的连接驱动
因为要连接MySQL来存储统一的元数据信息
cp mysql
-connector-java-5.1.46-bin.jar
/home/hadoop/app/hive
-1.1.0-cdh5.7.0/lib
/
3.5 配置
配置文件在$HIVE_HOME/conf下
1、设置Hive的环境变量中hadoop地址(如果全局变量设置过了$HADOOP_HOME就不用)
cp hive-env.sh.template hive-env.sh
增加
HADOOP_HOME=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0
2、设置MySQL的连接设置 hive-site.xml
vim hive-site.xml
增加以下内容
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL
</name>
<value>jdbc:mysql://hadoop001:3306/myhivedatabase?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>root
</value>
</property>
</configuration>
3、为了防止在上诉第2点中,生成的数据库myhivedatabase对创建表报错,在生成数据库后,对数据库语言使用拉丁字符集
登入mysql
mysql -uroot -proot
修改字符集
alter database myhivedatabase character set latin1;
3.6 启动
启动:
$HIVE_HOME/bin/hive