安装Hive
1.在master节点创建hive的安装目录
mkdir -p /usr/hive
2.解压hive
tar -zxvf /opt/bigbata/apache-hive-2.3.9-bin.tar.gz -C /usr/hive
3.修改环境变量
vi /etc/profile
# 在文件最后添加(注意HIVE_HOME目录)
# Hive env
export HIVE_HOME=/usr/hive/apache-hive-2.3.9-bin
export PATH=$PATH:$HIVE_HOME/bin
# 重载环境变量
source /etc/profile
4.初始化 Hive 元数据库
在master上使用schematool
初始化metastore的schema,初始化的时候注意要将mysql启动
schematool -dbType derby -initSchema
5.启动Hive
hive
6.退出
exit
安装MySQL(rpm)
1.查询并卸载系统自带的数据库:Mariadb
# 找到数据库mariadb,如果有会给出一个结果,结果是mariadb名称
rpm -qa | grep mariadb
# 如果存在就卸载
rpm -e --nodeps [mariadb名称]
2.解压mysql包
# 这里好多人会用tar -zxvf 进行解压会报错,改成
tar -xvf mysql-5.7.38-1.el7.x86_64.rpm-bundle.tar -C /xxx/xxx/
3.执行安装
# 法一
yum localinstall -y install mysql-community-{common,libs,client,server}-*
# 法二
#1、安装依赖common
rpm -ivh --nodeps --force mysql-community-common-5.7.38-1.el7.x86_64.rpm
#2、安装libs
rpm -ivh --nodeps --force mysql-community-libs-5.7.38-1.el7.x86_64.rpm
#
rpm -ivh --nodeps --force mysql-community-libs-compat-5.7.38-1.el7.x86_64.rpm
#3、安装客户端client
rpm -ivh --nodeps --force mysql-community-client-5.7.38-1.el7.x86_64.rpm
#4、安装服务server
rpm -ivh --nodeps --force mysql-community-server-5.7.38-1.el7.x86_64.rpm
注意:
如果安装server时报错缺少依赖libaio,执行:
yum insatll -y libaio
3.1 初始化数据库
mysqld --initialize --user=mysql
cd /usr/local/mysql/bin/
mysqld --initalize-insecure # 无密码初始化
mysqld --initalize # 有密码初始化,会随机生成一段密码,不好记,建议使用无密码初始化,后面再添加密码
4.检验是否安装成功
rpm -qa | grep mysql
5.查看mysql临时密码,复制到别处
grep 'temporary password' /var/log/mysqld.log`
`cat /var/log/mysqld.log
6.启动MySQL
# 启动
systemctl start mysqld 或者 service mysqld start
# 查看MySQL的状态
ps -ef|grep mysql
service mysqld status
7.使用临时密码登录mysql
mysql -uroot -p
# 输入密码
8.修改登录密码
想要把密码设置简单一点需要调整密码校验强度(low=最低)
set global validate_password_policy=LOW;
修改密码长度限制(任意长度)
set global validate_password_length=6;
正式修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
修改后exit退出
利用修改的密码,登陆数据库
9.设置允许远程访问
# 切换到mysql数据
use mysql;
# 查看用户表(user)
select Host,User from user;
# 把root用户的host列修改为%(%为任何IP都可以访问,可换成具体IP地址。)
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
# 刷新立即生效
flush privileges;
10.退出数据库
exit
11.开通/关闭防火墙
# 第一种:关闭防火墙(centos7关闭防火墙的方式和centos6是不同的)
systemctl stop firewalld
# 第二种:开通防火墙,放开对3306的拦截
firewall-cmd --zone=public --list-ports # 查看防火墙所有开放的端口
firewalld-cmd --zone=public --add-port=3306/tcp --permanent # 开放3306端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent #关闭3306端口
firewall-cmd --reload # 配置立即生效
配置Hive
1. 添加数据驱动包
将mysql的驱动jar包mysql-connector-java-5.1.47-bin.jar拷入hive的lib目录下面: /opt/module/hive/apache-hive-2.1.0-bin/lib/ mysql-connector-java-5.1.47.jar
cp /xxx/xxx/mysql-connector-java-5.1.37.jar /usr/hive/hive-3.1.2/lib/
2. 配置文件
配置hive-env.sh
cd /usr/hive/apache-hive-2.1.1-bin/conf
mv hive-env.sh.template hive-env.sh
配置hive-site.xml
进入hive的conf目录下面复制一下hive-default.xml.template名子命名为:hive-site.xml
注意修改URL、密码、元数据要连接的地址、hiveserver2连接的主机名
cp hive-default.xml.template hive-site.xml
vim 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://master: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>123456</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>
<!-- 指定存储元数据要连接的地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://master:9083</value>
</property>
<!-- 指定hiveserver2连接的主机名 -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>master</value>
</property>
<!-- 指定hiveserver2连接的端口号 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
</configuration>
3、解决jline的版本冲突
将hive安装目录下的lib目录下的jline复制至hadoop目录下,具体操作如下
cd /usr/hive/apache-hive-2.1.1-bin/lib
cp jline-2.12.jar /usr/hadoop/hadoop-2.7.3/share/hadoop/yarn/lib
4. 登陆 MySQL
mysql -u root -p
5.启动hive验证
每次启动hive前要先启动hadoop集群
在master上操作
cd /usr/hadoop/hadoop-2.7.3
start-dfs.sh
start-yarn.sh
slave1上执行,初始化数据库
schematool -dbType mysql -initSchema
slave1上执行
cd /usr/hive/apache-hive-2.1.1-bin
bin/hive --service metastore
master上执行
cd /usr/hive/apache-hive-2.1.1-bin
bin/hive
输入命令show databases;
附. 初始化 Hive 元数据库
在master上使用schematool 初始化metastore的schema,初始化的时候注意要将mysql启动
schematool -initSchema -dbType mysql -verbose
附 安装MySQL(解压版)
1.查询并卸载系统自带的数据库:Mariadb
# 找到数据库mariadb,如果有会给出一个结果,结果是mariadb名称
rpm -qa | grep mariadb
# 如果存在就卸载
rpm -e --nodeps [mariadb名称]
2.创建mysql用户和用户组
为了方便数据库管理,对于安装的MySQL数据库,生产上我们都会建立一个mysql用户和mysql用户组。
# 先检查mysql用户和用户组有没有被使用
cat /etc/group | grep mysql
cat /etc/passwd | grep mysql
#查看mysql用户及用户组
more /etc/passwd | grep mysql
more /etc/group | grep mysql
more /etc/shadow | grep mysql
#删除mysql用户及用户组
userdel mysql
groupdel mysql
# 添加mysql用户组
groupadd mysql
# 添加mysql用户并加入用户组
useradd -g mysql mysql
# 修改mysql用户的登陆密码(这里根据需要设置,可以略过)
passwd mysql
######
useradd -r -g mysql mysql(创建mysql用户并将其添加至mysql用户组)
3.获取安装包和修改名称
# 解压安装包,解压后会有一个mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz包
tar -xvf mysql-5.7.30-linux-glibc2.12-x86_64.tar # 不是gz包不需要z
# 解压mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz包
tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz -C /xxx/xxx/
# 此时会生成一个目录mysql-5.7.30-linux-glibc2.12-x86_64,将其改名为mysql
mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql
4.目录授权操作
# 按照下面的操作执行
cd /usr/local/
chown -R mysql mysql/
chgrp -R mysql mysql/
cd mysql/
mkdir data
chown -R mysql:mysql data
附
3.进入mysql文件夹中创建data和log目录用于存放数据和日志
cd mysql
mkdir data
mkdir log
3.将mysql文件夹的所有者改为mysql所属
chown -R mysql:mysql /usr/local/mysql
5.编辑mysql配置文件my.cnf,centos中在etc文件夹下默认有my.cnf文件(vim /etc/my.cnf)需要修改的配置如下:
socket=/temp/mysql.sock(socket通信设置)
basedir=/usr/local/mysql(mysql安装目录)
datadir=/usr/local/mysql/data(数据文件文职)
max_connections=1024(允许最大连接数)
lower_case_table_names(表名是否区分大小写,linux下mysql默认是要区分表名大小写的,0为区分 1为不区分)
附
默认这个配置文件是不存在的,需要创建,并且填入配置信息。
# 在/usr/local/mysql/目录下创建文件并编辑(使用vi或者vim)
vim my.cnf
具体配置信息:
[mysql]
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8
[mysqld]
socket=/var/lib/mysql/mysql.sock
port=3306
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
lower_case_table_names=1
max_allowed_packet=16M
explicit_defaults_for_timestamp=true
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysql.server]
user=mysql
basedir=/usr/local/mysql
6.安装数据库
进入/usr/local/mysql/
目录下,执行安装操作
# 进入目录
cd /usr/local/mysql/
# 执行安装命令
bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/
安装成功输出的日志如下:
2019-03-08 18:11:07 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2019-03-08 18:11:24 [WARNING] The bootstrap log isn't empty:
2019-03-08 18:11:24 [WARNING] 2019-03-08T10:11:07.208602Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead
安装成功后设置文件及目录权限:
# 此时还是在mysql目录下执行
cp ./support-files/mysql.server /etc/init.d/mysqld
chown 777 my.cnf
chmod +x /etc/init.d/mysqld
附
6.初始化MySQL
cd /usr/local/mysql/bin/
mysqld --initalize-insecure(无密码初始化)
mysqld --initalize(有密码初始化,会随机生成一段密码,不好记,建议使用无密码初始化,后面再添加密码)
安装成功后如下图所示:
如果初始化报错mysqld: error while loading shared libraries: libaio.so.1则执行以下命令:
yum install libaio-devel.x86_64
service mysqld start(启动mysql服务)
service mysqld stop(停止服务)
service mysqld restart(重启服务)
7.配置环境变量添加mysql安装地址
# 修改配置文件/etc/profile,增加export PATH=$PATH:/usr/local/mysql/bin
vim /etc/profile
增加export PATH=$PATH:/usr/local/mysql/bin(在profile文件末尾添加)
# 立即生效
source /etc/profile
8.启动MySQL
# 启动脚本
/etc/init.d/mysqld restart
9.获取mysql初始密码
cat /root/.mysql_secret
# 输出的结果如下
Password set for user 'root@localhost' at 2019-03-08 17:40:42
poc3u0mO_luv # 这个就是对应的初始密码,随机生成的
修改密码和存在的问题解决方案
mysql -uroot -p # 登陆数据库
mysql -u root -p # 无密码初始化直接登录,有密码初始化输入随机生成的那串密码登录
# 此时输入密码后可能出现下面的问题
Can't connect to local MySQL server through socket '/tmp/mysql.sock'
# 解决方案如下:
# 首先保证在my.cnf文件中socket的配置如下:
[mysqld]
socket = /var/lib/mysql/mysql.sock
# 然后对/tmp/mysql.sock和/var/lib/mysql/mysql.sock建立软连接
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
上面的问题解决后重新输入用户名密码即可进入到mysql,可以将密码修改成自己的
-- 执行语句如下
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges;
-- 操作结束后,通过exit命令退出,然后重新登录,验证修改的密码是否生效
修改root密码
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
10.添加远程访问权限
-- 登录数据
-- 切换到mysql数据库
use mysql;
-- 更新权限
update user set host='%' where user = 'root';
-- 查询一下是否修改成功
select host,user from user;
-- 结果如下表示成功,root用户的host已经修改为'%'
--+-----------+---------------+
--| host | user |
--+-----------+---------------+
--| % | root |
--| localhost | mysql.session |
--| localhost | mysql.sys |
--+-----------+---------------+
-- 上面的修改结束后,退出数据库,重启数据库服务生效
/etc/init.d/mysqld restart
附
开启数据库远程连接,默认只允许本机连接;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION; (允许root用户可以从任何主机连接到mysql服务;如果要指定ip连接的话将%改为要允许连接的ip即可)
FLUSH PRIVILEGES;(使其生效)
11.设置开机自启动服务
# 将mysqld服务加入到系统服务
chkconfig --level 35 mysqld on
# 检查mysqld服务是否已经生效
chkconfig --list mysqld
# 增加mysqld服务控制脚本执行权限
chmod +x /etc/init.d/mysqld
附
添加服务并设置开机自启
1、将mysql脚本复制到etc资源目录
cp -a /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
2、修改资源目录下mysqld的可执行权限
chmod +x /etc/rc.d/init.d/mysqld
3、添加为系统服务
chkconfig --add mysqld(添加为系统服务)
chkconfig --list(查看系统服务列表,如果mysqld 3/4/5状态为on则表添加成功)
chkconfig --level 345 mysqld on(如果3/4/5为off则执行该命令开启)
4、启动MySQL
service mysqld start(启动mysql服务)
service mysqld stop(停止服务)
service mysqld restart(重启服务)
12.开通/关闭防火墙
# 第一种:关闭防火墙(centos7关闭防火墙的方式和centos6是不同的)
systemctl stop firewalld
# 第二种:开通防火墙,放开对3306的拦截
firewall-cmd --zone=public --list-ports # 查看防火墙所有开放的端口
firewalld-cmd --zone=public --add-port=3306/tcp --permanent # 开放3306端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent #关闭3306端口
firewall-cmd --reload # 配置立即生效