hive:基于Hadoop的一个数据仓库管理工具,可以将结构化的数据文件映射为数据库表,提供sql查询统计功能(Hive定义了简单的类SQL查询语言,称为HQL),其底层实现是:将SQL语句转换为MapRecuce程序任务执行对应的查询功能(Yarn集群启动)。
实现同样的查询统计功能,Hive只要简单的SQL语句(通过Hive框架转换为对应的MapReduce程序,并对其优化,最后提交Hadoop运行),而编写MapReduce程序往往需要很长时间才能实现,若经验不足,编写的程序运行效率往往不高。
Hive往往做为数据仓库管理的工具,数据仓库中的数据往往很少进行更改,或者不更改,可以用来做联机分析处理(OLAP);
Hive往往用来处理GB,TB,PB级别的数据离线分析查询,所以查询结果在20分钟响应结果是正常的。
Hive安装(内嵌模式)
安装配置步骤:
1:拷贝下载包到Hadoop集群中的任意一台服务器上进行解压。
tar -zxvf apache-hive-2.1.1-bin.tar.gz
mv apache-hive-2.1.1-bin hive
2.配置Hive
cd /opt/mysoft/hive/conf
mv hive-env.sh.template hive-env.sh
vi hive-env.sh //修改启动配置项
//若当前机器上已经配置了JAVA_HOME环境变量,则可以省略(一般都配置过了)
//export JAVA_HOME=/opt/mysoft/jdk
HADOOP_HOME=/opt/mysoft/hadoop
export HIVE_CONF_DIR=/opt/mysoft/hive/conf
export HIVE_AUX_JARS_PATH=/opt/mysoft/hive/bin
mv hive-default.xml.template hive-site.xml
vi hive-site.xml //修改hive核心配置文件
//hive数据存储目录(HDFS上路径)
hive.metastore.warehouse.dir : /hive/warehouse (注意:HDFS提前手动创建目录,并赋权)
//hive工作时数据临时目录,如:Hive提交MR程序到Yarn上运行时产生的数据文件
hive.exec.scratchdir : /tmp/hive (注意:HDFS提前手动创建目录,并赋权)
//hive本地工作时产生的数据临时目录
hive.exec.local.scratchdir /opt/mysoft/hive/myTmp (注意:在安装Hive客户端的目录下,手动创建)
//替换文件中的所有变量: ${system:java.io.tmpdir} 为:/opt/mysoft/hive/myTmp
mv hive-exec-log4j2.properties.template hive-exec-log4j2.properties
vi hive-exec-log4j2.properties
//修改配置如下:
property.hive.log.dir = /opt/mysoft/hive/myTmp
property.hive.log.file = hive.log
mv hive-log4j2.properties.template hive-log4j2.properties
vi hive-log4j2.properties
//修改配置如下:
property.hive.log.dir =/opt/mysoft/hive/myTmp
property.hive.log.dir =/opt/mysoft/hive/myTmp
3.初始化Hive(Hive2以后要求先初始化)
进入/opt/mysoft/hive/bin
schematool -initSchema -dbType derby
4.启动Hive
./bin/hive
缺点:
1.内嵌模式基于Hive自带的derby数据库作为元数据管理,只能同时允许一个会话连接(一个窗口使用),不适合团队中多人同时操作,多用来本地学习测试用。
2.首次使用,先初始化(创建metastore_db文件,并初始化里面相关信息)后,系统会在启动Hive的当前目录下生成:metastore_db 元数据库文件。下次启动务必要在同样的当前目录进行启动,否则,只会在其他目录下生成metastore_db文件(Hive命令启动时,会先检查当前目录下是否有metastore_db,若没有,就创建开空的metastore_db文件),但是没有初始化,同样启动失败,很不方便!
Hive安装(本地模式)
元数据库改为MySQL,配置如下:
在内嵌模式基础上进行修改如下:
1:修改hive-site.xml文件:
javax.jdo.option.ConnectionURL
默认为derby:
jdbc:derby:;databaseName=metastore_db;create=true 修改为MySQL(若不存在,则自动创建):
jdbc:mysql://localhost:3306/myHive?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriverName
默认为derby:
org.apache.derby.jdbc.EmbeddedDriver
修改为MYSQL:
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
默认为derby: APP
修改为MySQL:root
javax.jdo.option.ConnectionPassword
默认为derby:mine
修改为MySQL:123456(mysql数据库的密码)
增加配置项:(元数据库相关信息校验核实取消)
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
2.拷贝MySql驱动到hive/lib目录
将mysql jar包复制到hive/lib目录下
3.删除内嵌模式下生成的HDFS上元数据信息文件
hdfs dfs -rmr /hive/warehouse/*
hdfs dfs -rmr /tmp/hive/*
rm -rf myTmp/*
hdfs dfs -mkdir -p /hive/warehouse
hdfs dfs -mkdir -p /tmp/hive
hdfs dfs -chmod 777 /tmp/hive/
hdfs dfs -chmod 777 /hive/warehouse
4.重新初始化HIVE
schematool -initSchema -dbType mysql
5.启动Hive
cd hive/bin
hive (./bin/hive)