Hive的安装部署

Hive的安装部署

##Hive的安装部署

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

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

### 2.1. 内嵌模式

> 使用hive自带默认元数据库derby来进行存储,通常用于测试
>
> 1. 优点:使用简单,不用进行配置
> 2. 缺点:只支持单session。

#### 2.1.1 安装步骤

1)解压hive并配置环境变量

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

[root@qf01 local]# vi /etc/profile
# 添加如下内容:
export HIVE_HOME=/usr/local/hive-3.1.2
export PATH=$HIVE_HOME/bin:$PATH

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

2) 配置hive-env.sh

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

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

3) 配置hive-site.xml

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

[root@qf01 conf]# cp hive-default.xml.template hive-site.xml
[root@qf01 conf]# vi hive-site.xml
在vi命令中修改替换操作
:%s#${system:java.io.tmpdir}#/usr/local/hive-3.1.2/iotmp#g
把hive-site.xml 中所有包含 ${system:java.io.tmpdir}替换成/usr/local/hive-3.1.2/iotmp

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

扩展:hive-site.xml中有两个重要的配置说明

<!-- 该参数主要指定Hive的数据存储目录  -->
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
  </property>

<!-- 该参数主要指定Hive的临时文件存储目录  -->
 <property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
  </property>

在linux中新建上面两个目录,并且进行权限赋值(可选操作,hive会自动创建)

[root@qf01 hive] # hdfs dfs -mkdir -p /user/hive/warehouse 
[root@qf01 hive] # hdfs dfs -mkdir -p /tmp/hive/ 
[root@qf01 hive] # hdfs dfs -chmod 750 /user/hive/warehouse 
[root@qf01 hive] # hdfs dfs -chmod 777 /tmp/hive
  1. 启动hadoop
[root@qf01 hadoop]# start-dfs.sh
[root@qf01 hadoop]# start-yarn.sh
  1. 初始化hive
[root@qf01 hive]# schematool --initSchema -dbType derby
  1. 启动hive

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

[root@qf01 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,"wangcai");
hive> desc dog; #查看表结构
hive> quit # 退出

2.2. 本地模式

使用mysql替换derby进行元数据的存储,hive的相关进程都是在同一台机器上,即本地模式。mysql因为是独立的进程,所以mysql可以和hive在同一机器上,也可以在其他机器上。

说明:

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

  • 优点:支持多session

  • 缺点:需要配置、还需要安装mysql等关系型数据库

2.2.1 配置安装mysql
  1. 安装包准备

    通过SSH工具,将MySQL的RPM安装包上传到Linux的 ~/software 目录下。
    
    MySQL的RPM安装包,可以在MySQL的官网下载,也可以直接使用课程提供的资料。 注意事项:
    - 在官网下载安装包的时候,注意版本号
    - mysql-8.0.26-1.el7.x86_64.rpm-bundle.tar
    - 这里的el7,表示适用于CentOS7的版本。注意,不要下载el6的。
    - x86_64: 这个表示arm版本的CentOS,如果是amd64架构的,可以选择x64。
    
  2. 安装前准备

     # CentOS7中,系统默认采用的数据库是mariadb,这个数据库与MySQL冲突!
    # 因此,在安装MySQL之前,需要先将其卸载!
    [root@qianfeng01 ~]# rpm -qa | grep mariadb 	# 查询是否已经安装了mariadb 
    mariadb-libs-5.5.68-1.el7.x86_64 				# 查询结果。如果没有这个结果,说明没有安装。
    
    # 强制卸载mariadb
    # --nodeps: 强制卸载,RPM卸载程序的时候,如果这个程序被其他的程序依赖,是无法卸载的。
    # 			此时,就需要使用--nodeps,忽略依赖,强制卸载。
    # 下面的卸载命令中,卸载的包是上方查询到的包
    [root@qianfeng01 ~]# rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps
    
  3. 安装MySQL

     # 安装MySQL, 其实就需要安装 mysql-community-server, 但是它依赖其他的包
    [root@qianfeng01 mysql]# rpm -ivh mysql-community-common-8.0.26-1.el7.x86_64.rpm
    [root@qf01 mysql]# rpm -ivh mysql-community-client-plugins-8.0.26-1.el7.x86_64.rpm
    [root@qf01 mysql]# rpm -ivh mysql-community-libs-8.0.26-1.el7.x86_64.rpm 
    [root@qf01 mysql]# rpm -ivh mysql-community-libs-compat-8.0.26-1.el7.x86_64.rpm 
    [root@qf01 mysql]# rpm -ivh mysql-community-client-8.0.26-1.el7.x86_64.rpm 
    [root@qf01 mysql]# yum install -y net-tools perl
    [root@qf01 mysql]# rpm -ivh mysql-community-server-8.0.26-1.el7.x86_64.rpm
    
  4. 启动MySQL的服务

     # 查看MySQL服务的运行状态
    [root@qf01 ~]# systemctl status mysqld 
    # 如果MySQL服务没有开启,则开启
    [root@qf01 ~]# systemctl start mysqld
    
  5. 登录到MySQL

     # 在第一次开启MySQL服务的时候,会自动生成一个随机的密码
    [root@qf01 ~]# grep password /var/log/mysqld.log 
    # 到mysqld.log文件中查找 password
    2020-12-16T07:47:14.117739Z 1 [Note] A temporary password is generated for root@localhost: pVLJs6&o(QQe
    # 使用这个随机密码登录到MySQL 
    [root@qf01 ~]# mysql -u root -p 
    pVLJs6&o(QQe # 这里用自己的密码登录
    
  6. 修改密码

    # 1. 修改MySQL的密码策略(安全等级)
    # MySQL默认的密码安全等级有点高,在设置密码的时候,必须同时包含大小写字母、数字、特殊字符,以及对位数有要求
    show variables like '%validate_password%';
    set global validate_password.policy=LOW;
    set global validate_password.length=4;
    set global validate_password.mixed_case_count=0;
    set global validate_password.number_count=0;
    set global validate_password.special_char_count=0;
    # 2. 修改密码
    alter user root@localhost identified by '123456';
    # 3. 远程授权
    create user root@'%' identified by '123456';
    grant all privileges on *.* to 'root'@'%' with grant option;
    FLUSH PRIVILEGES;
    
  7. 重新登录

    试着退出MySQL,用新的密码重新登录。如果可以登录成功,那么MySQL的安装就到此结束!
    MySQL在安装完成后,是不需要配置环境变量的。因为RPM的安装特性,启动脚本会被放到/usr/bin下。这个路径本来 就在环境变量里面,不需要单独配置。
    
2.2.2 配置hive的环境

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:添加如下内容

**注意:**前三步和内嵌模式一样

4、找到下面四个属性进行修改对应的值。

<!--配置mysql的连接字符串-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://qf01:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=latin1</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<!--配置mysql的连接驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<!--配置登录mysql的用户-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<!--配置登录mysql的密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>

注意:在hive-site.xml的第3215行有一个特殊的字符,由于编码,执行程序时不识别,需要手动修改(删除就可以了)

注意:hive的元数据在mysql库里创建的数据库hive的编码最好设置成latin1

show variables like 'character%';

5、将mysql的驱动包mysql-connector-java-8.0.26.jar上传到$HIVE_HOME/lib下(注意:驱动是jar结尾,不是tar结尾)

6、执行执行先要初始化数据库

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

7、启动hive

[root@qf01 hive]# bin/hive

说明: hive命令会默认启动元数据服务项(metastore)

2.3. 远程模式

2.3.1 简介

将hive中的相关进程比如hiveserver2或者metastore这样的进程单独开启,使用客户端工具或者命令行进行远程连接这样的服务,即远程模式。客户端可以在任何机器上,只要连接到这个server,就可以进行操作。客户端可以不需要密码。

2.3.2 服务端的配置

1) 修改 hive-site.xml

<!--hive仓库在hdfs的位置-->
<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
</property>

<!-- 该参数主要指定Hive的临时文件存储目录  -->
<property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
</property>

<!--连接mysql的url地址-->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://qf03:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=latin1</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>


<!--hive工作的本地临时存储空间-->
<property>
    <name>hive.exec.local.scratchdir</name>
    <value>/usr/local/hive/iotmp/root</value>
</property>
<!--如果启用了日志功能,则存储操作日志的顶级目录-->
<property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>/usr/local/hive/iotmp/root/operation_logs</value>
</property>
<!--Hive运行时结构化日志文件的位置-->
<property>
    <name>hive.querylog.location</name>
    <value>/usr/local/hive/iotmp/root</value>
</property>
<!--用于在远程文件系统中添加资源的临时本地目录-->
<property>
    <name>hive.downloaded.resources.dir</name>
    <value>/usr/local/hive/iotmp/${hive.session.id}_resources</value>
</property>

说明:使用远程模式,需要在hadoop的core-site.xml文件中添加一下属性

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>
2.3.3 hive的两种服务说明

第一种服务:hiveserver2

1. 该服务端口号默认是10000
2. 可以单独启动此服务进程,供远程客户端连接;此服务内置metastore服务。
3. 启动方式:

    方法1:
        直接调用hiveserver2。会进入监听状态不退出。
    方法2:
        hive --service hiveserver2 & 进入后台启动
    方法3:
        hive --service hiveserver2 >/dev/null 2>&1 &; #信息送入黑洞。

第二种服务:metastore(hive链接方式)

1. 此服务才是真正连接元数据库的服务进程
2. 也可以让远程客户端连接
3. 启动方式:
	方法1:
		- hive --service metastore &
	方法2:
    	- hive --service metastore 2>&1 >/dev/null &; #信息送入黑洞。
2.3.4 客户端连接hiveserver2服务

说明:

-1. 将qianfeng01的hive发送到qianfeng02中,qianfeng02连接此服务的hive客户端,需要配好环境变量
-2. 修改hive-site.xml,修改hive.server2.thrift.bind.host的值为hiveserver2的服务端
-3. 只能使用hive中的beeline连接工具进行连接此服务,beeline是hive的一个轻量级的连接客户端工具

连接方式:

方式1:
   	step1. beeline 回车
   	step2. !connect jdbc:hive2://ip:10000 回车
   	step3. 输入用户名 回车
   	step4. 输入密码 回车
方法2(直连):
	1. beeline -u jdbc:hive2://ip:10000 -n 用户名
退出 !quit	

解析: 
	hive2,是hive的协议名称
	ip:  hiveserver2服务所在的主机IP。
	10000,是hiveserver2的端口号d
2.3.5 客户端连接metastore服务

注意:想要连接metastore服务的客户端必须配置如下属性和属性值

<property>
	<name>hive.metastore.uris</name> 
	<value>thrift://ip:9083</value>
</property>

使用的是bin下的hive命了

解析:thrift:是协议名称
	 ip为metastore服务所在的主机ip地址
     9083是默认端口号
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小小大数据

你的打赏是我活下去的动力哟~~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值