Hive - 简介和安装
程序员文章站
2022-04-29 20:59:18
...
一、产生背景
- 初代的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>
<!--连接MysqlURL-->
<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
上一篇: hive简介与安装
下一篇: FreeMarker导出Word