Hive安装与配置

本文档详细介绍了在Hadoop环境下,如何从删除MariaDB开始,安装并配置MySQL作为Hive的元数据存储,包括创建Hive用户、下载与配置Hive、初始化元数据库等步骤。此外,还涵盖了Hive的属性配置和参数配置方法。

第 1 节 Hive安装配置介绍

Hive官网:http://hive.apache.org

下载网址:http://archive.apache.org/dist/hive/

文档网址:https://cwiki.apache.org/confluence/display/Hive/LanguageManual

安装前提:3台虚拟机,安装了Hadoop

安装软件:Hive(2.3.7) + MySQL (5.7.26)

备注:Hive的元数据默认存储在自带的 derby 数据库中,生产中多采用MySQL

derby:java语言开发占用资源少,单进程,单用户。仅仅适用于个人的测试。

软件Linux01Linux02Linux03
hadoop
mysql
hive
# hive安装包 
apache-hive-2.3.7-bin.tar.gz 

# MySQL安装包 
mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar 

# MySQL的JDBC驱动程序 
mysql-connector-java-5.1.46.jar 

# 整体的安装步骤: 
1、安装MySQL 
2、安装配置Hive 
3、Hive添加常用配置

第 2 节 Mysql 安装

Hive中使用MySQL存储元数据,MySQL的版本 5.7.26。安装步骤:

1、环境准备(删除有冲突的依赖包、安装必须的依赖包) 
2、安装MySQL 
3、修改root口令(找到系统给定的随机口令、修改口令) 
4、在数据库中创建hive用户 

2.1 删除MariaDB

centos7.6自带的 MariaDB(MariaDB是MySQL的一个分支),与要安装的MySQL有冲突,需要删除。

# 查询是否安装了mariadb 
rpm -aq | grep mariadb 

# 删除mariadb。-e 删除指定的套件;--nodeps 不验证套件的相互关联性 
rpm -e --nodeps mariadb-libs

2.2 安装依赖

yum install perl -y
yum install net-tools -y

2.3 安装Mysql

# 接压缩 
tar xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar 

# 依次运行以下命令 (安装有依赖顺序)
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm 
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm 
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm

2.4 启动数据库

systemctl start mysqld

2.5 查找root密码

grep password /var/log/mysqld.log

2.6 修改root密码

# 进入MySQL,使用前面查询到的口令 
mysql -u root -p 

# 设置口令强度;将root口令设置为12345678;刷新 
set global validate_password_policy=0; 
set password for 'root'@'localhost' =password('12345678'); 
flush privileges;

validate_password_policy 密码策略(默认是1),可配置的值有以下:

  • 0 or LOW 仅需需符合密码长度(由参数validate_password_length【默认为8】指定)

  • 1 or MEDIUM 满足LOW策略,同时还需满足至少有1个数字,小写字母,大写字母和特殊字符

  • 2 or STRONG 满足MEDIUM策略,同时密码不能存在字典文件(dictionaryfile)中

备注:个人开发环境,出于方便的目的设比较简单的密码;生产环境一定要设复杂密码!

2.7 创建hive用户

-- 创建用户设置口令、授权、刷新 CREATE USER 'hive'@'%' IDENTIFIED BY '12345678'; GRANT ALL ON *.* TO 'hive'@'%'; FLUSH PRIVILEGES;

第 3 节 Hive 安装

安装步骤: 
1、下载、上传、解压缩 
2、修改环境变量 
3、修改hive配置 
4、拷贝JDBC的驱动程序 
5、初始化元数据库 

3.1 下载Hive软件,并解压缩

cd /opt/software 
tar zxvf apache-hive-2.3.7-bin.tar.gz -C ../servers/ 
cd ../servers 
mv apache-hive-2.3.7-bin hive-2.3.7 

3.2 修改环境变量

# 在 /etc/profile 文件中增加环境变量 
export HIVE_HOME=/opt/servers/hive-2.3.7 
export PATH=$PATH:$HIVE_HOME/bin 

# 执行并生效 
source /etc/profile

3.3 修改Hive配置

cd $HIVE_HOME/conf
vi hive-site.xml
  • hive-site.xml增加以下内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration> 
    <!-- hive元数据的存储位置 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://linux01:3306/hivemetadata?createDatabaseIfNotExist=true&amp;useSSL=false</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </property>
    <!-- 指定驱动程序 -->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property> 
    <!-- 连接数据库的用户名 -->
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive</value>
        <description>username to use against metastore database</description>
    </property> 
    <!-- 连接数据库的口令 -->
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>12345678</value>
        <description>password to use against metastore database</description>
    </property>
</configuration>

备注:

jdbc:mysql://linux01:3306/hivemetadata?createDatabaseIfNotExist=true&amp;useSSL=false

  • createDatabaseIfNotExist 如果不存在是否创建

  • 注意jdbc的连接串,如果没有 useSSL=false 会有大量警告

  • 在xml文件中 &amp; 表示 &

3.4 拷贝Mysql JDBC 驱动程序

mysql-connector-java-5.1.46.jar 拷贝到 $HIVE_HOME/lib

3.5 初始化元数据库

# -dbType 数据库类型
# -initSchema 初始化
schematool -dbType mysql -initSchema

3.6 启动hive,执行命令

# 启动hive服务之前,请先启动 hdfs、yarn 的服务 
[root@linux01 ~]$ hive
# 执行sql测试
hive> show functions;

报错备注

  • 当出现SafeModeException
Exception in thread "main" java.lang.RuntimeException: org.apache.hadoop.hdfs.server.namenode.SafeModeException

则是hive进入安全模式,需要等待15秒,一般不会超过15秒。

  • 当出现9000 failed on connection
Exception in thread "main" java.lang.RuntimeException: java.net.ConnectException:Call From linux01/192.168.121 to linux01:9000 failed on connection 

则是hadoop 的 hdfs 和 yarn 没有启动

第 4 节 Hive 属性配置

hive-site.xml配置

可在hive-site.xml中增加以下常用配置,方便使用。

数据存储位置

<property> 
    <!-- 数据默认的存储位置(HDFS) -->
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
</property>

显示当前库

<property> 
    <!-- 在命令行中,显示当前操作的数据库 -->
    <name>hive.cli.print.current.db</name>
    <value>true</value>
    <description>Whether to include the current database in the Hive prompt.</description>
</property>

显示表头属性

<property> 
    <!-- 在命令行中,显示数据的表头 -->
    <name>hive.cli.print.header</name>
    <value>true</value>
</property>

本地模式

<property> 
    <!-- 操作小规模数据时,使用本地模式,提高效率 -->
    <name>hive.exec.mode.local.auto</name>
    <value>true</value>
    <description>Let Hive determine whether to run in local mode automatically</description>
</property>

备注:当 Hive 的输入数据量非常小时,Hive 通过本地模式在单台机器上处理所有的任务。对于小数据集,执行时间会明显被缩短。当一个job满足如下条件才能真正使用本地模式:

  • job的输入数据量必须小于参数:hive.exec.mode.local.auto.inputbytes.max(默认128MB)

  • job的map数必须小于参数:hive.exec.mode.local.auto.tasks.max (默认4)

  • job的reduce数必须为0或者1

hive的日志文件

Hive的log默认存放在 /tmp/root 目录下(root为当前用户名);这个位置可以修改。

vi $HIVE_HOME/conf/hive-log4j2.properties 
# 添加以下内容: 
property.hive.log.dir = /opt/servers/hive-2.3.7/logs

可以不修改,但是要知道位置。

Hadoop 2.x 中 NameNode RPC缺省的端口号:8020 (自己设置9000)

对端口号要敏感

hadoop 官方配置文档:hadoop.apache.org - Documentation - stable - 选一个稳定文档(如:3.2.1) - 滑倒最后 hdfs-default.xml

附录:添加第三方用户(Hadoop)

groupadd hadoop 
# -m:自动建立用户的登入目录 
# -g:指定用户所属的起始群组 
# -G<群组>:指定用户所属的附加群组 
# -s:指定用户登入后所使用的shell 
useradd -m hadoop -g hadoop -s /bin/bash 
passwd hadoop 
visudo 
# 在100行后添加。允许用户执行sudo,免密 
hadoop ALL=(ALL) NOPASSWD:ALL

建议:现阶段使用root用户

小结:

1、添加了配置,使用Hive更方便;

2、删除了有冲突的软件包(hive)

3、Hive的日志在哪里(/tmp/root)

4、第三方用户使用Hive。建议使用root用户

5、NameNode 缺省的RPC(远程过程调用)端口号8020,经常使用的端口号9000

第 5 节 参数配置方式

查看参数配置信息:

-- 查看全部参数 
hive> set; 
-- 查看某个参数 
hive> set hive.exec.mode.local.auto; 
hive.exec.mode.local.auto=false

参数配置的三种方式

1、用户自定义配置文件(hive-site.xml)

2、启动hive时指定参数(-hiveconf)

3、hive命令行指定参数(set)

配置信息的优先级:

set > -hiveconf > hive-site.xml > hive-default.xml

5.1 配置文件方式

默认配置文件:hive-default.xml

用户自定义配置文件:hive-site.xml

配置优先级:hive-site.xml > hive-default.xml

配置文件的设定对本机启动的所有Hive进程有效;

配置文件的设定对本机所有启动的Hive进程有效;

5.2 启动时制定参数值

启动Hive时,可以在命令行添加 -hiveconf param=value 来设定参数,这些设定仅对本次启动有效。

# 启动时指定参数 
hive -hiveconf hive.exec.mode.local.auto=true 
# 在命令行检查参数是否生效 
hive> set hive.exec.mode.local.auto; 
hive.exec.mode.local.auto=true 

5.3 命令行修改参数

可在 Hive 命令行中使用SET关键字设定参数,同样仅对本次启动有效

hive> set hive.exec.mode.local.auto=false; 
hive> set hive.exec.mode.local.auto; 
hive.exec.mode.local.auto=false

命令级别:set > -hiveconf > hive-site.xml > hive-default.xml

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值