赞
踩
安装hive
1、安装在hadoop的namenode上,
拷贝安装文件到linux中,/usr/software
2、解压到指定的目录 tar -zxvf apache-hive-2.3.3-bin.tar.gz -C /usr/local/
3、添加环境变量
vi /etc/profile
export HIVE_HOME=/usr/local/apache-hive-2.3.3-bin
export PATH=
P
A
T
H
:
PATH:
PATH:HIVE_HOME/bin
#source /etc/profile
4、输入hive命令,就可以进入hive sql了
安装mysql作为hive的Metastore
1、首先检查是否装了MySQL
使用rpm -qa | grep -i mysql检查
结果:无
如果有安装得MySQL,先删除
删除命令:
yum -y remove mysql-libs*
2、安装MySQL
下载压缩MySQL包
解压安装包/usr/software,并重命名
mv mysql-5.7.28-linux-glibc2.12-x86_64 mysql-5.7.28
把安装包移动到指定得位置
mv mysql-5.7.28 /usr/local/
3、检查mysql组和用户是否存在,如果没有则创建
刚开始查看是否创建MySQL组,是没有的。
操作完之后再运行cat /etc/group|grep mysql命令,显示的是
4、安装数据库
创建data目录
5、将/usr/local/mysql-5.7.28的所有者及所属组改为mysql
6、在/usr/local/mysql-5.7.28/support-files目录下创建my_default.cnf
把这些放入上面文件
[mysqld]
#设置mysql的安装目录
basedir =/usr/local/mysql-5.7.28
#设置mysql数据库的数据存放目录
datadir = /usr/local/mysql-5.7.28/data
#设置端口
port = 3306
socket = /tmp/mysql.sock
#设置字符集
character-set-server=utf8
#日志存放目录
log-error = /usr/local/mysql-5.7.28/data/mysqld.log
pid-file = /usr/local/mysql-5.7.28/data/mysqld.pid
#允许时间类型的数据为零(去掉NO_ZERO_IN_DATE,NO_ZERO_DATE)
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
7、拷贝,是否覆盖,是(y后Enter)
8、初始化MySQL
进入到cd /usr/local/mysql-5.7.28 进入以下命令操作
9、初始化完成后查看日志获取临时密码
#root@localhost: QgY29+&NONqB
10、把启动脚本放到开机初始化目录
启动MySQL
11、进入MySQL 修改密码
在 cd /usr/local/mysql-5.7.28/目录下
执行./bin/mysql -u root -p
#set password=password(‘Zwq@_123456’);
#grant all privileges on . to root@‘%’ identified by ‘Zwq@_123456’;
12、添加远程访问
#use mysql;
#update user set host=‘%’ where user = ‘root’;
如果报错:ERROR 1062 (23000): Duplicate entry ‘%-root’ for key ‘PRIMARY’
执行这个命令
#flush privileges;
重启生效
#service mysql start
13设置开机自启MySQL
在vi /etc/rc.local
#追加内容
service mysqld start
14、MySQL登录
需要进入/usr/local/mysql-5.7.28
执行./bin/mysql -u root -p
密码:Zwq@_123456
15、远程连接测试
配置hive
1、Hive 安装在一台电脑上就行;
2、首先保证hdfs和mysql是正确启动的;
3、上传hive得tar包,解压到/usr/local下
4、配置环境变量
export HIVE_HOME=/usr/local/apache-hive-2.3.3-bin
export PATH=
P
A
T
H
:
PATH:
PATH:HIVE_HOME/bin
5、source /etc/profile使配置文件生效
6、测试
#hive --version
7、配置hive-site.xml
新建一个hive-site.xml文件
#touch hive-site.xml
该成自己的ip username和password
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> javax.jdo.option.ConnectionURL jdbc:mysql://172.1.3.113:3306/hive?createDatabaseIfNotExist=true javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName root javax.jdo.option.ConnectionPassword 123456 hive.metastore.schema.verification false hive.exec.local.scratchdir /usr/local/apache-hive-2.3.3-bin/tmp Local scratch space for Hive jobs hive.downloaded.resources.dir /usr/local/apache-hive-2.3.3-bin/tmp/resources Temporary local directory for added resources in the r emote file system. hive.querylog.location /usr/local/apache-hive-2.3.3-bin/tmp Location of Hive run time structured log file hive.server2.logging.operation.log.location /usr/local/apache-hive-2.3.3-bin/tmp/operation_logs Top level directory where operation logs are stored if logging functionality is enabled hive.cli.print.current.db true hive.server2.support.dynamic.service.discovery true hive.server2.zookeeper.namespace hiveserver2 hive.zookeeper.quorum master:2181,slaver1:2181,slaver2:2181 hive.server2.thrift.bind.host master 8、配置hive-env.sh文件 把hive-env.sh.tmeple 复制一份改名为hive-env.sh HADOOP_HOME=/usr/local/hadoop-2.7.3 HIVE_CONF_DIR=/usr/local/apache-hive-2.3.3-bin/conf HIVE_AUX_JARS_PATH=/usr/local/apache-hive-2.3.3-bin/lib 9、把mysql的连接驱动放到hive/lib下 ![在这里插入图片描述](https://img-blog.csdnimg.cn/d7b46898138243ef932744d34890a9b2.png)10、此时保证hadoop启动着
Hdfs是启动的,因为hive是基于hdfs的。
11、初始化操作/hive/bin 下
#./schematool -initSchema -dbType mysql
12、执行hive命令
在/usr/local/apache-hive-2.3.3-bin/bin路径下执行
./hive
操作hive
Hiveserver2 是远程服务端
Beeline是远程客户端
1、创建数据库
#Create schema 数据库名字
2、删除数据库
Drop schema 数据库名称
3、创建表
create table students(Sno int,Sname string,Sex string,Sage int,Sdept string)row format delimited fields terminated by ','stored as textfile;
create table course(Cno int,Cname string) row format delimited fields terminated by ‘,’ stored as textfile;
create table sc(Sno int,Cno int,score int)row format delimited fields terminated by ‘,’ stored as textfile;
3、加载数据/上传数据
数据文件先上传到/opt/lm/目录下
在hive里面操作:
load data local inpath “/opt/lm/student.txt”overwrite into table students;
4、查询
hive -e ‘select * from userdb.students’
5、写脚本做查询
#!/bin/sh
sql1=‘select * from userdb.students’
hive -e “${sql1}”
echo $sql1
脚本权限要授予一下
查询结果如下
6、做数据清洗
把原来表里的数据使用shell脚本,清洗到新建的表里面(清洗一两个字段,或者需要的字段)
脚本内容:
#!/bin/sh
sql1=‘insert into table userdb.student select sno,sname from userdb.students’
hive -e “${sql1}”
echo $sql1
#chmod 777 ./student.sh
结果如下:
Hive数据库里面的表也有数据了:
7、通过crontab -e添加定时任务
测试
#检测cron定时服务是否自启用
systemctl is-enabled crond.service
#enable表示已启用自启动
#disable标识未启用自启动
#启动
systemctl enable crond.service
#禁用
systemctl disable crond.service
#使脚本具有执行权限
chmod +x ./test.sh
#手动执行判断是否成功
./test.sh
测试脚本
#脚本内容 >表示覆盖 >>表示追加
#!/bin/bash
echo “$(date +”%Y-%m-%d %T")Hello World !" >> >>/opt/lm/test.txt
定时任务
*/1 * * * * /opt/lm/test.sh
student.sh脚本
#!/bin/sh
source /etc/profile
sql1=‘insert into table userdb.student select sno,sname from userdb.students’
hive -e “${sql1}”
定时任务
*/2 * * * * /bin/sh -x /opt/lm/student.sh
解析:/bin/sh -x
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。