Hive数据仓库
一、概述
1、Hive是Hadoop的子项目,后来被独立出来成为了一个Apache的顶级项目
2、Hive是Apache提供的一套基于Hadoop的进行数据仓库管理的工具,提供了读写以及管理海量数据的功能
3、Hive提供了大量的类SQL(Hive QL,简称为HQL)来对Hadoop(HDFS)上的数据进行操作,底层会将HQL语句转
换为MapReduce程序执行,所以适合离线开发
4、Hive可以管理HDFS上的数据,使用表结构的形式来管理HDFS上的数据
5、默认情况下,Hive的元数据信息不是存储在HDFS的,而是存储在Hive自带的Derby文件型数据库中
6、Hive安装完成之后实际开发中通常要替换元数据库,到目前为止Hive只支持Derby和MySQL两种数据库,需要
将Derby替换为MySQL
7、Derby存在的问题:
①Derby数据库是一种文件型数据库,在进入检查的时候当前目录下是否存在metastore.db文件夹,该文件夹
用来存储数据库数据的,如果有则直接使用如果没有就会默认创建一个新的目录,一旦更换目录那么意味着元数据
就丢失了
②Derby数据是一个单用户的数据库,无法支持多用户同时操作,而Hive使用Derby作为元数据库那么意味着也只能支持单用户操作,这就导致了数据量大且链接多的情况下会产生大量的连接积压
二、配置Hive的元数据库
1、编辑环境变量:vim /etc/profile
添加配置:
1 2 3 4
| JAVA_HOME=/home/software/jdk1.8 HADOOP_HOME=/home/software/hadoop-2.7.6 HIVE_HOME=/home/software/hive-2.3.7 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:
|
配置完成之后需要重新生效:source /etc/profile
2、配置Hive的conf目录下的hive-env.sh文件
①复制模版文件:cp hive-env.sh.template hive-env.sh
②添加配置:
1 2 3 4
| export JAVA_HOME=/home/software/jdk1.8 export HADOOP_HOME=/home/software/hadoop-2.7.6 export HIVE_CONF_DIR=/home/software/hive-2.3.7/conf export HIVE_AUX_JARS_PATH=/home/software/hive-2.3.7/lib
|
3、编辑hive-site.xml文件
添加配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <!-- 指定Hive的数据存储目录 --> <name>hive.metastore.warehouse.dir</name> <value>/home/software/hive-2.3.7/warehouse</value> </property> <property> <!-- 配置MySQL的连接字符串 --> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop01:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value> </property> <property> <!-- 配置MySQL的连接驱动 --> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <!-- 配置登录MySQL的用户名称 --> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <!-- 配置登录MySQL的密码 --> <name>javax.jdo.option.ConnectionPassword</name> <value>Root123456~!</value> </property> <property> <!-- 配置Hive的慢查询日志目录 --> <name>hive.querylog.location</name> <value>hdfs:///ns/user/hive/log</value> </property> <property> <!-- hive的server2的连接端口 --> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <property> <!-- hive的sever2的连接主机 --> <name>hive.server2.thrift.bind.host</name> <value>192.168.232.128</value> </property> <property> <!-- hive的元数据服务的uri --> <name>hive.metastore.uris</name> <value>thrift://192.168.232.128:9083</value> </property> </configuration>
|
4、将MySQL的驱动包拷贝至Hive的lib目录下
1
| cp mysql-connector-java-5.1.38-bin.jar /home/software/hive-2.3.7/lib/
|
5、执行初始化操作
1
| schematool -initSchema -dbType mysql
|
6、进入MySQL数据库会出现hive数据库,并且在该库下会出现57张数据表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| mysql> show tables; +---------------------------+ | Tables_in_hive | +---------------------------+ | AUX_TABLE | | BUCKETING_COLS | | CDS | | COLUMNS_V2 | | COMPACTION_QUEUE | | COMPLETED_COMPACTIONS | | COMPLETED_TXN_COMPONENTS | | DATABASE_PARAMS | | DBS | | DB_PRIVS | | DELEGATION_TOKENS | | FUNCS | | FUNC_RU | | GLOBAL_PRIVS | | HIVE_LOCKS | | IDXS | | INDEX_PARAMS | | KEY_CONSTRAINTS | | MASTER_KEYS | | NEXT_COMPACTION_QUEUE_ID | | NEXT_LOCK_ID | | NEXT_TXN_ID | | NOTIFICATION_LOG | | NOTIFICATION_SEQUENCE | | NUCLEUS_TABLES | | PARTITIONS | | PARTITION_EVENTS | | PARTITION_KEYS | | PARTITION_KEY_VALS | | PARTITION_PARAMS | | PART_COL_PRIVS | | PART_COL_STATS | | PART_PRIVS | | ROLES | | ROLE_MAP | | SDS | | SD_PARAMS | | SEQUENCE_TABLE | | SERDES | | SERDE_PARAMS | | SKEWED_COL_NAMES | | SKEWED_COL_VALUE_LOC_MAP | | SKEWED_STRING_LIST | | SKEWED_STRING_LIST_VALUES | | SKEWED_VALUES | | SORT_COLS | | TABLE_PARAMS | | TAB_COL_STATS | | TBLS | | TBL_COL_PRIVS | | TBL_PRIVS | | TXNS | | TXN_COMPONENTS | | TYPES | | TYPE_FIELDS | | VERSION | | WRITE_SET | +---------------------------+ 57 rows in set (0.01 sec)
|
7、开启Hive的元数据服务
1
| hive --service metastore &
|