Hive概念及Hive,MySQL安装、配置
目录
一:Hive的概述
1.1 什么是Hive
1.2 Hive优缺点
二:Hive安装部署
2.1 安装Hive
三:MySQL安装
四:Hive 元数据配置到 MySQL
一:Hive的概述
1.1 什么是Hive
- ApacheHive是一款建立在Hadoop之上的开源数据仓库系统,可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为Hive查询语句(HQL),用于访问和分析存储在Hadoop文件中的大型数据集。
- Hive核心是将HQL转换为MapReduce程序,然后将程序提交到Hadoop集群执行。
- Hive由Facebook实现并开源。
1.2 Hive优缺点
优点:
(1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。
(2)避免了去写MapReduce,减少开发人员的学习成本。
(3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合。
(4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。
(5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。
缺点:
1)Hive的HQL表达能力有限
(1)迭代式算法无法表达
(2)数据挖掘方面不擅长,由于MapReduce数据处理流程的限制,效率更高的算法却无法实现。
2)Hive的效率比较低
(1)Hive自动生成的MapReduce作业,通常情况下不够智能化
(2)Hive调优比较困难,粒度较粗
二:Hive安装部署
2.1 安装Hive
1)把 apache-hive-3.1.2-bin.tar.gz 上传到 linux 的/opt/software 目录下
2)解压 apache-hive-3.1.2-bin.tar.gz 到/opt/module/目录下面
[ axing@hadoop102 software ] $ tar - zxvf /opt/software/apache-hive-3.1.2-
bin.tar.gz -C /opt/module/
3)修改 apache-hive-3.1.2-bin.tar.gz 的名称为 hive(方便后面配置环境,也可以不修改)
[ atguigu@hadoop1 02 software ] $ mv /opt/module/apache-hive-3.1.2-bin/
/opt/module/hive
4)修改/etc/profile.d/my_env.sh,添加环境变量
[ atguigu@hadoop102 software ] $ sudo vim /etc/profile.d/my_env.sh
5)添加内容
#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$PATH : $HIVE_HOME/bin
6)解决日志 Jar 包冲突
[axing@hadoop102 software] $ mv $HIVE_HOME/lib/log4j-slf4j-impl2.10.0.jar
$HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak
7)初始化元数据库
[axing@hadoop102 hive] $ bin/schematool -dbType derby -initSchema
8)启动Hive
[axing@hadoop102 hive] $ bin/hive
如果在另外一个CRT窗口开启Hive会报错,原因在于 Hive 默认使用的元数据库为 derby,开启 Hive 之后就会占用元数据库,且不与 其他客户端共享数据,所以我们需要将 Hive 的元数据地址改为 MySQL。
三:MySQL安装
1)检查当前系统是否安装过 MySQL
[axing@hadoop102~] $ rpm -qa | grep mariadb mariadb-libs-5.5.56-2.el7.x86_64
/ /如果存在通过如下命令卸载
[axing@hadoop102~] $ sudo rpm -e --nodeps mariadb-libs
2)将 MySQL 安装包拷贝到/opt/software 目录下
[axing@hadoop102 software] # ll
3)解压 MySQL 安装包
[axing@hadoop102 software] # tar -xf mysql-5.7.28-1.el7.x86_64.rpmbundle.tar
4)在安装目录下执行 rpm 安装
[axing@hadoop102 software] $
sudo rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
注意:按照顺序依次执行
如果 Linux 是最小化安装的,在安装 mysql-community-server-5.7.28-1.el7.x86_64.rpm 时 可能会出现如下错误
[axing@hadoop102 software] $ sudo rpm -ivh mysql-community-server5.7.28-1.el7.x86_64. rp
警告: mysql-community-server-5 . 7 . 2 8 - 1 . el7 . x8 6_64 . rpm : 头 V3 DSA/ SHA1
Signature , 密钥 ID 5 0 7 2e1 f5 : NOKEY 错误:依赖检测失败:
libaio . so . 1 ( ) ( 64bit ) 被 mysql-community-server-5 . 7 . 2 8 - 1 . el7 . x8 6_64
需要
libaio . so . 1 ( LIBAIO_0 . 1 ) ( 64bit ) 被 mysql-community-server-5 . 7 . 2 8 -
1 . el7 . x8 6_64 需要
libaio . so . 1 ( LIBAIO_0 . 4 ) ( 64bit ) 被 mysql-community-server-5 . 7 . 2 8 -
1 . el7 . x8 6_64 需要
通过 yum 安装缺少的依赖,然后重新安装 mysql-community-server-5.7.28-1.el7.x86_64 即 可
[axing@hadoop102 software ] yum install -y libaio
5)删除/etc/my.cnf 文件中 datadir 指向的目录下的所有内容,如果有内容的情况下:
6)初始化数据库
[axing@hadoop102 opt] $ sudo mysqld --initiali ze --user=mysql
7)查看临时生成的 root 用户的密码
[axing@hadoop102 opt] $ sudo cat/var/log/mysqld.log
8)启动 MySQL 服务
[ axing@hadoop1 02 opt ] $ sudo systemctl start mysqld
9)登录 MySQL 数据库
[axing@hadoop1 02 opt ] $ mysql -uroot -p
Enter password : 输入临时生成的密码
10)必须先修改 root 用户的密码,否则执行其他的操作会报错
mysql> set pas sword = pas sword ( "新密码" ) ;
11)修改 mysql 库下的 user 表中的 root 用户允许任意 ip 连接
mysql> update mysql . user set host= ' % ' where user= ' root ' ;
mysql> flush privileges ;
四:Hive 元数据配置到 MySQL
1)拷贝驱动,将 MySQL 的 JDBC 驱动拷贝到 Hive 的 lib 目录下
[axing@hadoop102 software] $ cp /opt/software/mysql-connector-java5.1.37.jar
$HIVE_HOME/lib
2)配置 Metastore 到 MySQL
在$HIVE_HOME/conf 目录下新建 hive-site.xml 文件
[axing@hadoop102 software] $ vim $HIVE_HOME/conf/hive-site.xml
添加如下内容
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc连接的URL -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
</property>
<!-- jdbc连接的Driver-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- jdbc连接的username-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- jdbc连接的password -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>zxlzxzzjx2003</value>
</property>
<!-- Hive元数据存储版本的验证 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!--元数据存储授权-->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<!-- Hive默认在HDFS的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
</configuration>
3)登陆 MySQL
[axing@hadoop102 software] $ mysql -uroot -p密码
3)新建 Hive 元数据库
mysql> create database metastore ;
mysql> quit ;
4) 初始化 Hive 元数据库
[axing@hadoop102 software ] $ schematool -initSchema -dbType mysql -verbose
现在,就可以再次启动hive,并且可以在在CRT 窗口中开启另一个窗口开启 Hive
还没有评论,来说两句吧...