HIVE的搭建配置及关联MySQL

举报
扶醉 发表于 2020/12/31 00:57:11 2020/12/31
【摘要】 概念: Hive是由Facebook实现并开源。是基于Hadoop的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供HQL(Hive SQL)查询功能。其底层数据时存储在HDFS上。Hive的本质是将SQL语句转换为MapReduce任务运行,使部署需MapReduce的用户很方便地利用HQL处理和计算HDFS上的结构化数据,使用于离线的批量数据计...

概念:

Hive是由Facebook实现并开源。是基于Hadoop的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供HQL(Hive SQL)查询功能。其底层数据时存储在HDFS上。Hive的本质是将SQL语句转换为MapReduce任务运行,使部署需MapReduce的用户很方便地利用HQL处理和计算HDFS上的结构化数据,使用于离线的批量数据计算。

一、下载

前提: 配置好hadoop分布式环境,我在上一篇博文写到Hadoop从零开始搭建完全分布式

官网下载hive,这里我用hive-1.2.2版本:官网下载地址:http://mirrors.shu.edu.cn/apache/hive/hive-1.2.2/

我这里选择下载到本地然后通过xftp上传到虚拟机上。

解压:

tar -xzvf apache-hive-1.2.2-bin.tar.gz

  
 
  • 1

重命名

mv apache-hive-1.2.2-bin hive-1.2.2

  
 
  • 1

二、配置

(1)配置环境变量

vi /etc/profile

  
 
  • 1

将以下添加在末尾

export HIVE_HOME=/software/hive-1.2.2
PAHT=$PATH:$HIVE_HOME/bin

  
 
  • 1
  • 2

刷新

source /etc/profile

  
 
  • 1

查看

source /etc/profile

  
 
  • 1


(2)配置文件
修改software/hive-1.2.2/conf/hive-env.sh.template为hive-env.sh。

cd /software/hive-1.2.2/conf/
cp hive-env.sh.template hive-env.sh

  
 
  • 1
  • 2
  • 配置HADOOP_HOME=/Hadoop所在路径
export HADOOP_HOME=/software/hadoop2.7.2

  
 
  • 1
  • 配置HIVE_CONF_DIR=/Hive中conf文件夹路径
export HIVE_CONF_DIR=/software/hive-1.2.2/conf

  
 
  • 1

三、启动

(1)启动HDFS
在hadoop01机上

start-dfs.sh

  
 
  • 1

(2)启动YARN
在hadoop02机上

start-yarn.sh

  
 
  • 1

通过jps检测启动情况

(3)在HDFS上创建/tmp和/user/hive/warehouse

hadoop fs -mkdir /tmp
hadoop fs -mkdir -p /user/hive/warehouse

  
 
  • 1
  • 2

(4)修改文件夹权限,同组可写

hadoop fs -chmod 775 /tmp
hadoop fs -chmod 775 /user/hive/warehouse

  
 
  • 1
  • 2

(5)启动Hive

hive

  
 
  • 1

四、hive基本操作

1.基本操作(语法类似于MySQL)
2.显示所有数据库:show databases;
3.使用数据库(默认数据库default):use 数据库名;
4.显示使用数据库下所有表:show tables;
5.创建表:create table 表名(字段1 类型,字段2 类型…)
6.插入数据(map reduce):insert into 表名 (字段1,字段2…) values (数据1,数据2…)
7.查询数据:select 字段 from 表名;
8.删除表:drop table 表名;
9.退出:exit

五、安装mysql####

1. 卸载Mariadb

CentOS7自带的是 Mariadb
(1)查找

rpm -qa|grep mariadb

  
 
  • 1

(2)删除

rpm -e --nodeps 上面查出来的文件名

  
 
  • 1

(3)删除配置文件

rm /etc/my.cnf

  
 
  • 1
2.下载mysql 8.0

这里我通过rpm安装
官网下载:mysql8.0.15

(1)解压

tar -xvf mysql-8.0.15-1.el7.x86_64.rpm-bundle.tar 

  
 
  • 1


(2)安装
解决一些依赖

yum -y install numactl yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6
yum update libstdc++-4.4.7-4.el6.x86_64
yum search libaio
yum install libaio
yum install net-tools
yum install openssl-devel

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

按次序安装

rpm -ivh MySQL-client-5.6.43-1.el7.x86_64.rpmrpm -ivh mysql-community-common-8.0.15-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-8.0.15-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-8.0.15-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-8.0.15-1.el7.x86_64.rpm

  
 
  • 1
  • 2
  • 3
  • 4

(3)初始化

mysqld --initialize --user=mysql --basedir=/usr --datadir=/var/lib/mysql

  
 
  • 1

(4)启动

systemctl start mysqld

  
 
  • 1

(5)修改密码

  • 编辑配置文件
    vim /etc/my.cnf
    在[mysqld]下添加skip-grant-tables
    保存退出
  • 重启mysql服务
    systemctl restart mysqld
  • 通过mysql -uroot -p
    登录,密码直接回车即可
  • 选择mysql数据库
    use mysql;
  • 将默认密码清空
    update user set authentication_string=’’ where user=‘root’;
    exit命令退出
  • 删除 /etc/my.cnf 文件刚刚添加的 skip-grant-tables
    vim /etc/my.cnf
    选中skip-grant-tables所在行按两下d键即可删除
    保存退出
  • 重启mysql服务
    systemctl restart mysqld
  • 再次登录
    mysql -uroot -p
    登录,密码直接回车即可
  • 设置密码(我这里将密码设为root)
    选择mysql数据库
    use mysql;
    ALTER user ‘root’@‘localhost’ IDENTIFIED BY ‘root’;
  • 设置远程访问
    update user set host=’%’ where user=‘root’;
  • 重启
    exit退出
    重启服务systemctl restart mysqld
    重新通过mysql -uroot -proot登录
  • 远程连接
    我通过navicat远程连接,
  • 设置开机启动
    systemctl enable mysqld

至此,mysql安装完成。

六、hive关联mysql####

1.下载驱动jar

我安装的是mysql8.0.15版本,我找对应版本的jar
平时个人比较喜欢到mvnrepository去找jar,附上地址:https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.15

将下载好的jar放到hadoop01虚拟机中hive安装目录的lib文件夹下

2.配置hive-site.xml

创建hive-site.xml

cd /software/hive-1.2.2/conf
vim hive-site.xml

  
 
  • 1
  • 2

将以下添加进去(灵活应变)

<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://192.168.17.134:3306/myhive?createDatabaseIfNotExist=true</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>root</value>
 </property>
</configuration>


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
3.重启整个集群

(1)在Hadoop02上

stop-yarn.sh

  
 
  • 1

(2)在Hadoop01上

stop-dfs.sh

  
 
  • 1

(3)在Hadoop01上

start-dfs.sh

  
 
  • 1

(4)在Hadoop02上

start-yarn.sh

  
 
  • 1

(5)在Hadoop01上重启mysql

systemctl restart mysqld

  
 
  • 1
4.启动
hive

  
 
  • 1


启动完成后用navicat查看发现已经自动创建了myhive数据库。

也可以通过命令行查看

mysql -uroot -proot
show databases;

  
 
  • 1
  • 2

5.其他配置(看需求)

hive-site.xml中

#数据库存放位置
<property>
<name>hive.metastore.warehouse.dir</name> 
<value>/user/hive/warehouse</value>
<description>location of default database for the warehouse</description> 
</property> 
#查询时显示字段名称和数据库名
<property> 
<name>hive.cli.print.header</name>
<value>true</value> 
</property> 
<property> 
<name>hive.cli.print.current.db</name>
 <value>true</value> 
</property> 


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

七、测试

(1)进入数据库

create database fuzui;
use fuzui;

  
 
  • 1
  • 2

(2)创建表

create table student( id int, name string, age int, sex string)
row format delimited fields terminated by ',';

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在mysql中会看到创建这个表的字段信息

(3)退出hive

exit

  
 
  • 1

(4)创建本地文件上传到HDFS
<1>我直接用的root用户,所以我在root目录下创建

cd /root
vim fz.txt

  
 
  • 1
  • 2

添加如下内容

201501,wangze,22,man
201502,wangchen,20,man
201503,liyu,20,woman
201504,zhangna,21,woman
201505,songxin,19,woman
201506,changyi,18,man
201507,liuni,20,woman
201508,zhaoming,22,man

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

保存退出
<2>上传hdfs

  • 创建文件夹
    hadoop fs -mkdir /myhive
  • 上传
    hadoop fs -put /root/fz.txt /myhive
  • 查看
    hadoop fs -cat /myhive/fz.txt

    (5)进入hive
hive

  
 
  • 1

(6)导入hive表

  • 进入数据库
    use fuzui

  • 导入
    load data inpath '/myhive/fz.txt' into table student;

  • 查看数据
    select * from student;

  • 稍微复杂点的查询
    查询最小的女生多少岁
    select min(age) from student where sex = 'woman';
    这时,就开始一系列运行了,速度会慢。

至此,HIVE搭建成功!

文章来源: fuzui.blog.csdn.net,作者:极客时代,版权归原作者所有,如需转载,请联系作者。

原文链接:fuzui.blog.csdn.net/article/details/89003922

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。