一、简介
百度百科HIVE定义:
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
解读:1.基于hadoop的应用
2.可提供类似sql查询,但是是以MapReduce的方式进行的,数据量小也慢。
3.存储是数据文件(在HDFS)和元数据(mysql)分离。
元数据
MySQL数据中 -> hive数据元 -> hive数据仓库中的数据元信息 DBS:记录Hive中的库信息 TBLS:记录Hive中的表信息 COLUMNS_V2:记录Hive中的表结构信息(所属的表,列名,类型,顺序)
在HDFS上以文件的形式存储
hive管理的库 -> HDFS文件夹 -> warehouse(default库所在的路径) -> 其他的库以.db结尾 hive管理的表 -> HDFS文件夹 -> 相应的库文件夹下 -> 存储的是表的数据 hive管理的表的数据 -> HDFS文件 -> 相应的表文件夹下
hive 上传数据的方式
是读时模式----->数据在读取时,再用表单结果信息对数据进行容错性校验。(数据库先对数据进行校验再更新到表-->写时模式) 大数据量时----直接以文件的形式上传到HDFS上的指定目录。 小数据量时----没上传一次,在指定目录下生成一分文件。
二、安装
1.将hive的压缩包上传到指定目录并解压
tar -zvxf apache-hive-1.2.2-bin.tar.gz
2.配置环境变量
vi .bash_profile(解压用户的配置文件)
HIVE_HOME=安装目录
PATH=$PATH:$HIVE_HOME/bin
wq退出,source .bash_profile
3.修改配置文件
配置hive-site.xml
先以 mysql -u -root -h hostname -p 登录mysql,确认该登录方式是否可用
不可用则用可登录用户登录mysql,然后更新user表
updata mysql.user set password = password('root') where user = 'root';
set password = password(''); //若更新user表报错时执行这一句
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://SZ01:3306/hive?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root</value> </property> <!-- <property> <name>hive.hwi.war.file</name> <value>lib/hive-hwi-1.2.2.war</value> </property> --> </configuration>
配置hive-log4j.properties
hive.log.dir=/home/${user.name} 设置日志目录和文件名
hive.log.file=hive.log
4.拷贝 mysql的jar包至 解压目录的lib文件夹下
mysql-connector-java-5.1.46-bin.jar
5.打开hive的远程连接
nohup hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10010 & nohup的作用:使得该服务在当前会话关闭时也不退出 &的作用:ctrl+c 也不会退出服务,在后台运行。