当前位置:   article > 正文

hive集群搭建

hive集群搭建

安装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组和用户是否存在,如果没有则创建

cat /etc/group|grep mysql

groupadd mysql

useradd -r -g mysql mysql  #useradd -r参数表示mysql用户是系统用户,不可用于登录系统

刚开始查看是否创建MySQL组,是没有的。
在这里插入图片描述

操作完之后再运行cat /etc/group|grep mysql命令,显示的是
在这里插入图片描述

4、安装数据库
创建data目录

cd

/usr/local/mysql-5.7.28

mkdir data

在这里插入图片描述
在这里插入图片描述

5、将/usr/local/mysql-5.7.28的所有者及所属组改为mysql

chown -R mysql.mysql /usr/local/mysql-5.7.28

在这里插入图片描述

6、在/usr/local/mysql-5.7.28/support-files目录下创建my_default.cnf

vi 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)

cp my_default.cnf /etc/my.cnf

在这里插入图片描述

8、初始化MySQL
进入到cd /usr/local/mysql-5.7.28 进入以下命令操作

./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql-5.7.28/ --datadir=/usr/local/mysql-5.7.28/data/

在这里插入图片描述

9、初始化完成后查看日志获取临时密码

cat /usr/local/mysql-5.7.28/data/mysqld.log

在这里插入图片描述

#root@localhost: QgY29+&NONqB
10、把启动脚本放到开机初始化目录

cp support-files/mysql.server /etc/init.d/mysql

在这里插入图片描述

启动MySQL

service mysql start

在这里插入图片描述

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’;
在这里插入图片描述

flush privileges;

在这里插入图片描述

12、添加远程访问
#use mysql;
在这里插入图片描述

#update user set host=‘%’ where user = ‘root’;
在这里插入图片描述

如果报错:ERROR 1062 (23000): Duplicate entry ‘%-root’ for key ‘PRIMARY’
执行这个命令

GRANT ALL PRIVILEGES ON . TO ‘root’@‘%’ IDENTIFIED BY ‘123456’ WITH GRANT OPTION;在这里插入图片描述

#flush privileges;
在这里插入图片描述

quit; #退出

重启生效
#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、配置环境变量

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
在这里插入图片描述

5、source /etc/profile使配置文件生效
6、测试
#hive --version
在这里插入图片描述

7、配置hive-site.xml

/usr/local/apache-hive-2.3.3-bin/conf

新建一个hive-site.xml文件
#touch hive-site.xml

vi 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
在这里插入图片描述

脚本权限要授予一下

chmod 777 ./student.sh

查询结果如下
在这里插入图片描述

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

./student.sh

结果如下:
在这里插入图片描述

Hive数据库里面的表也有数据了:
在这里插入图片描述

7、通过crontab -e添加定时任务

Example of job definition:

.---------------- minute (0 - 59)

| .------------- hour (0 - 23)

| | .---------- day of month (1 - 31)

| | | .------- month (1 - 12) OR jan,feb,mar,apr …

| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

| | | | |

* * * * * user-name command to be executed

测试
#检测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
定时任务

crontab -e

*/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}”

定时任务

crontab -e

*/2 * * * * /bin/sh -x /opt/lm/student.sh
解析:/bin/sh -x

  1. 表明这个脚本是用sh来解析的,因为各种shell的语法还是有细微差别的,比如其他的shell还有bash
    2.-x 是调试用的,加了这个,就会把脚本中的每条命令的执行情况打印出来
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号