(不知道为什么大数据比赛要用hive1.2.1这么旧的版本)
一、卸载CentOS7自带的MariaDB,并安装Hive
CentOS7已经不支持MySQL,所以内部集成了MariaDB。
而安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB。
以下为卸载MariaDB,安装MySQL的步骤。
(0) su root
(1)列出所有被安装的MariaDB rpm package
rpm -qa|grep mariadb
发现有一个自带的mariadb
(2)强制卸载mariadb-libs-5.5.68-1.el7.x86_64
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
(3)下载mysql的repo源
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
(4)安装mysql-community-release-el7-5.noarch.rpm包
rpm -ivh mysql-community-release-el7-5.noarch.rpm
(5)安装MySQL服务器
yum install mysql-server
过程中要输入y的地方输入y回车即可。
1)启动MySQL服务:
service mysqld start
或
systemctl start mysqld.service
2)关闭MySQL服务:
service mysqld stop
或
systemctl stop mysqld.service
3)查看MySQL服务状态:
service mysqld status
或
systemctl status mysqld.service
以root用户登录mysql,(注意这里的root是数据库的root用户,不是系统的root用户)。默认情况下root用户没有密码,可以通过下面的方式登录:
mysql -uroot
二、安装Hive1.2.1 并简单试用
(1)上传
把apache-hive-1.2.1-bin.tar.gz上传到/opt/software目录下
(2)解压
把这个包解压到/opt/module下
tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module
(3)改名
把那一长串名字改成hive
mv apache-hive-1.2.1-bin/ hive
(4)查看目录结构
(5)修改hive/conf目录下的hive-env.sh.template 名称为hive-env.sh
mv hive-env.sh.template hive-env.sh
(6)配置hive-env.sh
注意,这里我们应当已经配置完了Hadoop,如果没有配置,那么应当首先去配置完Hadoop再来看Hive。
vim hive-env.sh
我们主要配置的是这两个,我们这里用的Hadoop是2.7.6
添加两行:
export HADOOP_HOME=/opt/module/hadoop-2.7.6
export HIVE_CONF_DIR=/opt/module/hive/conf
(7)启动hadoop集群
步骤同前
(8)启动hive(注意,最好先配置完MySQL再启动!!!)
在hive文件夹下
bin/hive
(9)hive目录多了两个文件
(10)试用Hive(注意,最好先配置完MySQL再启动!!!)
show databases;
use default;
create table student(id int,name string) ;
show tables;
insert into table student values(1,'wolf');
可以发现实际上在做一个MapReduce操作:
去Hadoop的web查看:
select * from student;
这种不需要计算的可以直接查到,跟MySQL差不多:
再加一个student:
insert into table student values(2,'xiaoming');
发现又多了一个文件 :
如果是需要计算的,比如求总人数,那么就需要MR计算:
select count(*) from student;
三、将本地文件导入Hive案例(注意,最好先配置完MySQL再启动!!!)
需求
在本地目录有一个stu.txt,想要导入数据库中,内容如下:
202301 panghu
202302 libai
202303 zhangliang
202304 xiaohong
202305 zhangbo
202306 xiaoli
202307 baibai
202308 tiezhu
这个指令是 hive特有而MySQL没有的:
load data local inpath '/home/wolf/stu.txt' into table student;
如果想从HDFS加载就把local去掉。
可以看到很快就加载完了,我们查看一下:
发现有问题,
原因是分隔符不一样或建表时未定义分隔符,说明整个表的格式应当保持一致。
所以我们建一个新表,定义好分隔符为'\t':
create table stu(id int,name string) row format delimited fields terminated by '\t';
导入stu.txt到stu表:
load data local inpath '/home/wolf/stu.txt' into table stu;
查看一下:
select * from stu;
正确了。
四、使用MySQL数据库
Hive默认的数据库是Derby数据库,是一种单用户数据库,无法同时打开多个客户端,所以我们可以把它替换成MySQL。
由于我们一开始安装了MySQL,所以我们可以直接进行配置。
1、MySQL用户密码配置
先以root用户登录MySQL:
mysql -uroot
设置密码:
SET PASSWORD = PASSWORD('000000');
退出:
exit;
以后想要以root用户登录MySQL可以用:
mysql -uroot -p000000
2、设置MySQL中user表中主机配置
配置成只要是root用户+密码,在任何主机上都能登录MySQL数据库。
(1)进入MySQL
mysql -uroot -p000000
(2)显示数据库
show databases;
(3)使用mysql数据库
use mysql;
(4)展示mysql中所有的表
show tables;
(5)展示user表的结构
desc user;
(6)查询user表
select User,Host,Password from user;
(7)修改user表,把Host表内容修改为%
update user set host='%' where host = 'localhost';
(8)删除root用户其他的host
delete from user where Host='hadoop102';
delete from user where Host='127.0.0.1';
delete from user where Host='::1';
(9)刷新
flush privileges;
(10)退出
quit;
五、配置Hive
(1)加载驱动
把mysql-connector-java-5.1.49.jar上传到本地目录:
复制这个文件到/opt/module/hive/lib/
cp ./mysql-connector-java-5.1.49.jar /opt/module/hive/lib/
(2)修改Hive配置文件
来到hive的conf文件夹
touch hive-site.xml
vim hive-site.xml
根据官方文档配置参数,拷贝数据到hive-site.xml中:
可能要修改的地方:hadoop102、root、000000
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop102:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>000000</value>
<description>password to use against metastore database</description>
</property>
</configuration>
保存退出,重启hive即可。
(3)初始化元数据库
bin/schematool -dbType mysql -initSchema --verbose
六、Hive常用交互命令
bin/hive -help
(1)-e 不进入hive交互窗口执行sql语句
eg:
bin/hive -e "select id from student;"
(2)-f 读取一个文件,这个文件里面应该写着SQL语句。
eg:
bin/hive -f xxx.hql
(3)在hive cli命令窗口中查看hdfs文件系统
dfs -ls /;
(4)在hive cli命令窗口中查看本地文件系统
! ls /opt/module/;
(5)查看在hive中输入的所有历史命令
1)进入到当前用户的根目录/root或/home/wolf
2)查看.hivehistory文件
cat .hivehistory
至此,Hive和MySQL的安装配置基本完成,接下来是学习使用HQL语句相关内容。