赞
踩
Hive常用的安装分三种(注意:Hive会自动监测Hadoop的环境变量,如有就必须启动Hadoop)
先从本地上传Hive安装文件apache-hive-2.3.7-bin.tar.gz到/root/softwares
使用Hive自带默认元数据库derby来进行存储,通常用于测试
(多用户模式)(hive服务和metastore服务运行在同一个进程中,MySql是单独的进程,可以同一台机器,也可以在远程机器上。)
通常使用关系型数据库来进行元数据存储(MySql、oracle等执行带jdbc驱动的数据库)
优点:支持多Session
缺点:需要配置、还需要安装MySql等关系型数据库
通过SSH工具,将MySql的mysql-connector-java-8.0.26.jar和mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar安装包上传到Linux的 ~/softwares 目录下。
# CentOS7中,系统默认采用的数据库是mariadb,这个数据库与MySql冲突!
# 因此,在安装MySql之前,需要先将其卸载!
rpm -qa | grep mariadb# 查询是否已经安装了mariadb
mariadb-libs-5.5.44-2.el7.centos.x86_64
# 查询结果。如果没有这个结果,说明没有安装。
# 强制卸载mariadb
# --nodeps: 强制卸载,RPM卸载程序的时候,如果这个程序被其他的程序依赖,是无法卸载的。
# 此时,就需要使用--nodeps,忽略依赖,强制卸载。
# 下面的卸载命令中,卸载的包是上方查询到的包
rpm -e mariadb-libs-5.5.44-2.el7.centos.x86_64 --nodeps
# 安装MySql, 其实就需要安装 mysql-community-server, 但是它依赖其他的包 #先将安装包解压,得到所有需要安装的rpm包 mkdir /usr/local/mysql tar -xvf mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar -C /usr/local/mysql/ cd /usr/local/mysql 然后一个一个按照顺序的安装 rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm yum install -y net-tools yum install -y perl rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm
# 查看MySql服务的运行状态
systemctl status mysqld
# 如果Mysql服务没有开启,则开启
systemctl start mysqld
# 在第一次开启MySql服务的时候,会自动生成一个随机的密码
grep password /var/log/mysqld.log # 到mMysqld.log文件中查找password
2020-12-16T07:47:14.117739Z 1 [Note] A temporary password is generated for root@localhost: pVLJs6&o(QQe
# 使用这个随机密码登录到MySql
mysql -u root -p
pVLJs6&o(QQe # 这里用自己的密码登录
# 1. 修改MySql的密码策略(安全等级) # MySql默认的密码安全等级有点高,在设置密码的时候,必须同时包含大小写字母、数字、特殊字符,以及对位数有要求 # 修改密码 alter user root@localhost identified by 'MYSQL123456@sparename'; show variables like '%validate_password%'; # 查看密码策略 set global validate_password.policy=LOW; # 修改密码策略等级为LOW set global validate_password.length=4; # 密码的最小长度 set global validate_password.mixed_case_count=0; # 设置密码中至少要包含0个大写字母和小写字母 set global validate_password.number_count=0; # 设置密码中至少要包含0个数字 set global validate_password.special_char_count=0; # 设置密码中至少要包含0个特殊字符 show variables like '%validate_password%'; # 2. 修改密码 alter user root@localhost identified by '123456'; # 3. 远程授权 use mysql 再查看root用户的host属性 select host,user from user; update user set host='%' where user='root'; grant all privileges on *.* to root@'%' with grant option; flush privileges; #关闭防火墙,就可以用navicat连接了
试着退出MySql,用新的密码重新登录。如果可以登录成功,那么MySql的安装就到此结束!
MySql在安装完成后,是不需要配置环境变量的。因为RPM的安装特性,启动脚本会被放到/usr/bin下。这个路径本来就在环境变量里面,不需要单独配置。
解压并配置环境变量
cd /root/softwares
tar -zxvf apache-hive-2.3.7-bin.tar.gz -C /usr/local
#修改Hive安装路径名,方便以后使用
mv apache-hive-2.3.7-bin/ hive-2.3.7
vi /etc/profile
# 添加如下内容:
export HIVE_HOME=/usr/local/hive-2.3.7/
export PATH=$HIVE_HOME/bin:$PATH
#让profile生效
source /etc/profile
#查看是否成功
hive --version
在Hive的conf配置Hive的自定义配置文件
首先进入conf目录把所有带template后缀的文件移除后缀。
其中hive-default.xml移除后缀后,需要修改名为hive-site.xml
cd /usr/local/hive-2.3.7/conf
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
vi hive-site.xml:添加如下内容
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- 该参数主要指定Hive的数据存储目录 --> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <!-- 该参数主要指定Hive的临时文件存储目录 --> <property> <name>hive.exec.scratchdir</name> <value>/data/hive</value> </property> <!--配置mysql的连接字符串--> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop:3306/hive?createDatabaseIfNotExist=true</value> </property> <!--配置mysql的连接驱动--> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <!--配置登录mysql的用户--> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <!--配置登录mysql的密码--> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://hadoop:9083</value> </property> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <property> <name>hive.cli.print.current.db</name> <value>true</value> </property> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> </configuration>
vi hive-env.sh
JAVA_HOME=/usr/local/jdk1.8.0_171
HADOOP_HOME=/usr/local/hadoop-2.7.7
export HIVE_CONF_DIR=/usr/local/hive-2.3.7/conf
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$HADOOP_HOME/lib:$HIVE_HOME/lib
配置日志地址, 修改hive-log4j.properties文件
#配置日志地址, 修改hive-log4j.properties文件
cp hive-log4j2.properties.template hive-log4j.properties
vim hive-log4j.properties
#将hive.log日志的位置改为${HIVE_HOME}/tmp目录
hive.log.dir=/usr/local/hive-2.3.7/tmp/
#创建tmp目录
mkdir ${HIVE_HOME}/tmp
配置hive-config.sh文件
cd /usr/local/hive-2.3.7/bin
vi hive-config.sh
#添加如下内容
export JAVA_HOME=/usr/local/jdk1.8.0_171
export HADOOP_HOME=/usr/local/hadoop-2.7.7
export HIVE_HOME=/usr/local/hive-2.3.7
HIVE_CONF_DIR=$HIVE_HOME/conf
4.将MySql的驱动包mysql-connector-java-8.0.27.jar上传到$HIVE_HOME/lib下(注意:驱动是jar结尾,不是tar结尾)
5.执行初始化数据库
schematool -initSchema -dbType mysql
6.启动Hive元数据
启动元数据服务之前一定要将将HDFS启动并可用
启动Metastore服务
# 先启动hadoop
start-all.sh
# 启动Metastore服务,执行Hive前, 须先启动metastore服务, 否则会报错
./hive –service metastore # 此时在hive的bin目录
启动hive
hive --service metastore &
hive
(多用户模式)(Hive服务和metastore在不同的进程内,可能是不同的机器)
和本地模式差不多,只是将元数据放在别的服务器上,这种的就是咱们常说的集群模式。
可以有一个Hive的server和多个hive的
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。