特点
- Hive是建立在Hadoop上的数据仓库基础架构,他提供了一系列工具,可以进行数据提取、转化和加载(ETL)
- Hive定义了简单的类SQL查询语言,称为HQL
- Hive包含SQL解析引擎,它会将SQL语句转译成Map Reduce job任务,然后在hadoop中执行
Hive使用MySQL主要是为了持久地存储元数据,并通过MySQL的JDBC驱动程序实现与Java程序的连接和交互。这样可以更好地管理和操作Hive的元数据,并方便地使用Java编程语言对Hive进行编程和查询操作。
数据存储
- Hive的数据存储基于HDFS
- Hive没有专门的数据存储格式,可以直接加载HDFS中的TextFile、SequenceFile和RCFile等文件
系统架构
用户通过用户接口来操作Hive,生成对应的HQL,然后将HQL编译成对应的Map Reduce job,到hdfs中存储数据,用Map Reduce执行计算任务
元数据存储表的相关元数据,支持的关系数据库有mysql
Hive与MySql的区别
数据库和数据仓库的区别:
- 数据库主要是应用于基本的事务处理,数据仓库主要做一些复杂的分析操作,侧重决策支持,
- 相对数据库而言,数据仓库的数据会大很多,通常都是T级别,数据仓库只支持查询
安装部署
- 解压安装包
- 进入到conf目录下,修改hive-env.sh.template文件名为hive-env.sh,修改hive-default.xml.template文件名为hive-site.xml
- 修改hive-env.sh的内容
# export HIVE_AUX_JARS_PATH=
export JAVA_HOME=/home/env/jdk1.8.0_371
export HAVE_HOME=/home/env/apache-hive-3.1.2-bin
export HADOOP_HOME=/home/env/hadoop-3.2.0
- 修改hive-site.xml
<!-- JDBC配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.79.1:3306/hive?serverTimezone=Asia/Shanghai</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/home/data/log/hive</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/home/data/hive/scratchdir</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/home/data/hive/resources</value>
</property>
- 将mysql的驱动放到hive的lib目录下:mysql-connector-j-8.0.33.jar
- 修改hadoop的core-size文件
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
- 初始化元数据信息,会自动在mysql中创建一些表:bin/schematool -dbType mysql -initSchema
如果报错显示hive-site.xml文件中有问题,是注释部分跨了多行,删除就行