Hive的安装部署--三种模式

Hive的安装部署

Hive常用的安装分三种(注意:Hive会自动监测Hadoop的环境变量,如有就必须启动Hadoop)

先从本地上传Hive安装文件apache-hive-2.1.1-bin.tar.gz到/root/soft

1 嵌入式模式

使用hive自带默认元数据库derby来进行存储,通常用于测试

  1. 优点:使用简单,不用进行配置

  2. 缺点:只支持单Session。

安装步骤:

1.1 解压hive

并配置环境变量

[root@hd01 local]tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local
#修改Hive的安装路径名,方便以后使用
[root@hd01 local]mv apache-hive-2.1.1-bin/ hive

[root@hd01 local]vi /ect/profile
#添加以下内容
export HIVE_HOME=/usr/local/hive
export PATH=$HIVE_HOME/bin:$PATH

#让profile生效
[root@hd01 local]source /etc/profile

1.2 配置hive-env.sh

如果不存在,就用hive.env.sh.template复制一个

export HIVE_CONF_DIR=/usr/local/hive/conf 
export JAVA_HOME=/usr/local/jdk 
export HADOOP_HOME=/usr/local/hadoop 
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib

1.3 配置hive-site.xml

Hive2.1.1中默认是没有使用hive-site.xml,可以把conf/hive-default.xml.template拷贝过来

[root@hd01 local]cp hive-default.xml.template hive-site.xml

1.4 修改dir

hive-site.xml中有两个重要的配置如下:
Hive的安装部署--三种模式_第1张图片

在linux中新建上面两个目录,并且进行权限赋值

hdfs dfs -mkdir -p /user/hive /warehouse
hdfs dfs -mkdir -p /tmp/hive/
hdfs dfs -chmod 750 /user/hive/ warehouse
hdfs dfs -chmod 777 /tmp/hive 

1.5 修改io.tmpdir路径

[root@hd01 hive] # mkdir iotmp 
[root@hd01 hive] # chmod 777 iotmp

把hive-site.xml 中所有包含 ${system:Java.io.tmpdir}替换成/usr/local/hive/iotmp.

如果系统默认没有指定系统用户名,那么要把配置${system:user.name}替换成当前用户名

root

1.6 启动hadoop

[root@hd01 hadoop]# start-dfs.sh 
[root@hd01 hadoop]# start-yarn.sh
1.7 初始化hive
[root@hd01 hive]# schematool -initSchema -dbType derby
1.8 启动hive

(注:启动之前要启动hdfs sbin/start-dfs.sh 和yarn sbin/start-yarn.sh )

必须在初始化的目录启动hive(默认只有一个当前的session可用)

[root@hd01 hive]# bin/hive 

#进入后可以执行下面命令进行操作: 
hive>show databases; #查看数据库 
hive>show tables; #查看表

简单sql演示执行

# 创建表 
hive> create table dog(id int,name string); 
hive> select * from dog; 
hive> insert into dog values(1,"gougou"); 
hive> desc dog; #查看表结构 
hive> quit # 退出

2 本地模式

(将元数据库放在该台机器上)(多用户模式)

通常使用关系型数据库来进行元数据存储(mysql、oracle等执行带jdbc驱动的数据库)

优点:支持多Session
缺点:需要配置、还需要安装mysql等关系型数据库

2.1 配置安装mysql

安装包准备

#查看mysql是否安装,如果安装了,卸载mysql 
[root@hd01 hive] rpm -qa|grep mysql
#如果出现下面的提示,就说明系统已经 有了mysql,要卸载 
mysql-libs-5.1.73-7.el6.x86_64
# 卸载mysql 
[root@hd01 hive] rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64

安装MySql服务器

1.先从本地上传服务端和客户端到服务器,尽量使用root用户操作)
2.通过命令进行安装:
将下面的解包,得到所有相关的包
[root@hd01 soft]# rpm -ivh mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
将相关包按照顺序依次安装
[root@hd01 soft]# rpm -ivh mysql-community-common-5.7.28- 1.el7.x86_64.rpm
[root@hd01 soft]# yum -y install perl
[root@hd01 soft]# yum -y install net-tools
[root@hd01 soft]# rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
[root@hd01 soft]# rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
[root@hd01 soft]# rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

# 3. 启动mysql服务
# 启动数据库
[root@hd01 soft]# systemctl start mysqld
# 设置开机自启数据库
[root@hd01 soft]# systemctl enable mysqld 20
# 4. 查看产生的随机密码,运行命令后最后显示的xuzmpubKv0(f即为密码
[root@hd01 soft]# grep 'password' /var/log/mysqld.log
2020-04-14T19:20:47.261622Z 1 [Note] A temporary password is generated for root@localhost: xuzmpubKv0(f 
# 5. 用上述密码登录数据库 
[root@hd01 soft]mysql -u root -p 
# 6. 修改密码(root与@与localhost之间不能有空格)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root123@';

2.2 安装步骤说明

步骤(下面三个步骤同嵌入式安装):

1.解压并配置环境变量

2.配置hive的配置文件

​ cp hive-env.sh.template hive-env.sh

​ vi hive-env.sh(可以配置jdk、hive的conf路径)

3.在Hive的conf配置hive的自定义配置文件

​ vi hive-site.xml:添加如下内容

注意:要把原来的默认的derby的连接配置,连接驱动,用户,密码改成mysql 的

添加以下内容

 
<property> 
	<name>javax.jdo.option.ConnectionURLname> 
	<value>jdbc:mysql://localhost:3306/hive? createDatabaseIfNotExist=truevalue> 
	<description>JDBC connect string for a JDBC metastoredescription> 
property> 
 
<property> 
	<name>javax.jdo.option.ConnectionDriverNamename> 
	<value>com.mysql.jdbc.Drivervalue> 
	<description>Driver class name for a JDBC metastoredescription> 
property> 
 
<property> 
	<name>javax.jdo.option.ConnectionUserNamename>
	<value>rootvalue> 
	<description>username to use against metastore databasedescription> 
property> 
 
<property> 
	<name>javax.jdo.option.ConnectionPasswordname> 
	<value>123123value> 
	<description>password to use against metastore databasedescription> 
property>

4.将mysql的驱动包mysql-connector-java-5.1.27-bin.jar上传到上传到$HIVE_HOME/lib下(==

​ 注意:驱动是jar结尾,不是tar结尾==)

5.执行执行先要初始化数据库

[root@hd01 hive]# bin/schematool -initSchema -dbType mysql

6.启动hive

[root@hd01 hive]# bin/hive

7.远程连接mysql服务器

可以先用windows平台的工具访问linux系统上的mysql服务器,如果提示不让远程登录,看下面的解决办法
常见错误分析:
1.不让远程登录的解决办法
首先注意:设置完成后,root的密码变成了mysql

不让远程登录:如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql -uroot -p
#(执行下面的语句	.:所有库下的所有表	%:任何IP地址或主机都可以连接)
输入命令说明:GRANT ALL PRIVILEGES ON . TO ‘用户名’@’%’ IDENTIFIED BY ‘你的密码 ’ WITH GRANT OPTION;
让客户端在远程登录拥有权限,密码重新设置成mysql
输入命令:GRANT ALL PRIVILEGES ON	*.* TO 'root'@'%' IDENTIFIED BY 'mysql'
WITH GRANT OPTION;
输入命令:FLUSH PRIVILEGES;	将命令写入授权表
让客户端在本地登录拥有权限,密码重新设置成mysql
输入命令:grant all privileges on *.* to root@"localhost" identified by "mysql" with grant option;
输入命令:FLUSH PRIVILEGES;

2.执行mysql -uroot -p
或者
第一次安装完mysql后 执行/usr/bin/mysql_secure_installation 脚本,出现 Enter current password for root (enter for none): 点击回车后出现下面的错误
mysql Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
错误原因:/var/lib/mysql目录中socket文件不存在。
连接mysql服务器有两种方式:tcp连接,通过socket文件连接。通过socket文件,启动
mysql服务,mysql服务会自动生成一个sock文件,生成的sock文件默认放在 -- datadir=/var/lib/mysql,mysql默认从/var/lib/mysql目录读取sock文件。

解决办法:
1、看看/var/lib/mysql/mysql 有没有mysql.sock文件
2、没有mysql.sock,重启mysql服务,看看有没有。
3、没有的话,ps aux|grep mysql|grep -v 'grep' 查看mysql服务生成的sock在哪个目录,看看这个目录有没有。
4、如果mysql服务生成在其他目录,解决办法有:

方法一 修改mysql服务生成的目录,在/etc/my.cnf 中[mysqld] socket
首先确认在etc/下有没有my.cnf文件
如果是rpm安装的mysql,默认这里没有.需要将usr/share/mysql下的my-medium.cnf拷贝到/etc/下并改名成my.cnf
cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

方法二 mysql从/var/lib/mysql/读取sock文件,建立一个软连接,或者copy过来

方法三 还可以找到当前的mysql进程,将他删掉,重新启动
情况:第一次启动失败,进程没有关闭,第二次开服务无法启动

3 远程模式

(将元数据库放在其他机器上)(多用户模式)
和本地模式差不多,只是将元数据放在别的服务器上,这种的就是咱们常说的集群模式。 可以有一个hive的server和多个hive的client。

你可能感兴趣的:(大数据,hive,大数据)