02-Hive的安装

本文详细介绍了Hive的安装过程,包括内嵌模式和本地模式(使用MySQL作为元数据库)。首先,通过解压Hive并配置环境变量,然后在内嵌模式下启动Hive。接着,展示了如何安装和配置MySQL,以及修改Hive配置文件以连接MySQL元数据库。最后,启动Hive并演示了远程模式的配置,包括设置Hadoop的proxyuser和启动Hiveserver2服务。

Hive的安装

内嵌模式

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

安装步骤(tianqinglong02)

[root@tianqinglong02 ~]# tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local
[root@tianqinglong02 ~]# cd /usr/local
[root@tianqinglong02 local]# mv apache-hive-2.1.1-bin/ hive
[root@tianqinglong02 local]# vim /etc/profile
export HIVE_HOME=/usr/local/bin
export  PATH=$HIVE_HOME/bin:$PATH
:wq
[root@tianqinglong02 local]# source /etc/profile

配置hive-env.sh

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

[root@tianqinglong02 local]# cd hive/
[root@tianqinglong02 hive]# cd conf
[root@tianqinglong02 hive]# cp hive.env.sh.template hive-env.sh
[root@tianqinglong02 hive]# vim hive-env.sh
export JAVA_HOME=/usr/local/jdk
export HADOOP_HOME=/usr/local/hadoop
export HIVE_CONF_DIR=/usr/local/hive/conf
export HIVE_AUX_JARS_PATH=/usr/local/hive/lib
:wq

配置hive-site.xml

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

[root@tianqinglong02 conf]# cp hive-default.xml.template hive-site.xml
[root@tianqinglong02 conf]# vim hive-site.xml

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

:%s#${system:java.io.tmpdir}#/usr/local/hive/iotmp#g

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

启动hadoop

[root@tianqinglong02 conf]# start-dfs.sh
[root@tianqinglong02 conf]# start-yarn.sh

初始化hive

[root@tianqinglong02 ~]# schematool --initSchema -dbType derby

启动hive

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

[root@tianqinglong02 ~]# hive

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

#不用内嵌模式
[root@tianqinglong02 ~]# rm -rf metastore_db/ derby.log

本地模式

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

在这里插入图片描述

配置安装mysql

安装mysql服务器

[root@tianqinglong03 ~]# rpm -qa |grep mysql
[root@tianqinglong03 ~]# rpm -qa |grep mariadb
#如果有就删除 卸载的包是上方查询到的包
[root@tianqinglong03 ~]# rpm -e mariadb --nodeps
[root@tianqinglong03 ~]# tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
#安装MySQL,其实就需要安装mysql-community-server,但是它依赖其他的包
[root@tianqinglong03 ~]# rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
[root@tianqinglong03 ~]# rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
[root@tianqinglong03 ~]# rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
[root@tianqinglong03 ~]# yum install -y net-tools
[root@tianqinglong03 ~]# yum install -y perl
[root@tianqinglong03 ~]# rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

[root@tianqinglong03 ~]# systemctl start mysqld
# 去获取初始密码
[root@tianqinglong03 ~]# grep passwd /var/log/mysqld.log
[root@tianqinglong03 ~]# mysql -u root -p
Enter password: 密码
# 改密码
#MySQL默认的密码安全等级有点高,在设置密码的时候,必须同时包含大小写字母、数字、特殊字符,以及对位数有要求
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个特殊字符

#2.修改密码
mysql>alter user root@localhost identified by "123456';
#3. 远程授权
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;

配置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.找到下面四个属性进行修改对应的值

[root@tianqinglong02 ~]# cd /usr/local/hive/conf/
[root@tianqinglong02 conf]# vim hive-site.xml
<!--配置mysql的连接字符串-->
<property>
	<name>javax.jdo.option.ConnectionURL</name>
	<value>jdbc:mysql://tianqinglong03:3306/hive?createDatabaseIfNotExist=true</value>
    <description>JDBC connect string for a JDBC metestore</description>
</ property>
<!--配置mysql的连接驱动-->
<property>
	<name>javax.jdo.option.ConnectionDriverName</name>	
	<value>com.mysql.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>

5.将mysql驱动包mysql-connect-java-5.1.28-bin.jar上传到$HIVE_HOME/bin下

注意:驱动包是jar结尾不是tar

[root@tianqinglong01 ~]# scp mysql-connect-java-5.1.28-bin.jar tianqinglong02:/usr/local/hive/lib

6.初始化数据库

[root@tianqinglong02 lib]# schematool -initSchema -dbType mysql

7.启动hive

[root@tianqinglong02 lib]# hive

远程模式

使用远程模式,需要在hadoop的core-site.xml文件中添加以下属性 01 02 03

<property>
	<name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>
[root@tianqinglong01 ~]# tar -zxvf apache-hive-2.1.1-bin.tar.gz -C /usr/local
[root@tianqinglong01 ~]# cd /usr/local
[root@tianqinglong01 local]# mv apache-hive-2.1.1-bin/ hive
[root@tianqinglong01 local]# vim /etc/profile
export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
:wq
[root@tianqinglong01 local]# source /etc/profile

hive的两种服务说明

第一组服务 hiveserver2

[root@tianqinglong02 hadoop]# hive --service hiveserver2 &

[root@tianqinglong01 local]#  beeline
beeline> !connect jdbc:hive2://tianqinglong02:10000
root
123456
# 连接成功
0 : jdbc:hive2//tianqinglong02:1000> show databases;
0 : jdbc:hive2//tianqinglong02:1000> !quit

(直连)
[root@tianqinglong01 local]#  beeline -u jdbc:hive2://tianqinglong02:10000 -n root
# 连接成功
0 : jdbc:hive2//tianqinglong02:1000> show databases;

客户端连接metastore服务

[root@tianqinglong02 hadoop]# hive --service metastore

[root@tianqinglong01 local]# cd hive/conf
[root@tianqinglong01 conf]# cp hive-default.xml.template hive-site.xml

[root@tianqinglong01 conf]# vim hive-site.xml
# 19行往下都删
<configuration>
	<property>hive.metastore.uris</property>
	<value>thrift://tianqinglong02:9083</value>
</configuration>
:wq

[root@tianqinglong01 conf]#hive
hive> show databases;
<think>好的,我现在需要解决用户提到的两个问题:Hadoop本地库加载失败的警告和Hive-on-MR被弃用的问题。首先,我得分别分析这两个问题的原因,然后找到对应的解决方法。 关于Hadoop本地库加载失败的警告:“Unable to load native-hadoop library for your platform... using builtin-java classes where applicable”[^2]。这个警告通常是因为Hadoop的本地库(native libraries)是为特定平台(如32/64位)编译的,而用户当前的环境可能不兼容。首先,我需要确认用户的系统架构,比如是否是64位的Linux。然后检查Hadoop是否下载了对应版本的预编译本地库,或者是否需要用户自己重新编译。可能还需要设置环境变量,如JAVA_HOME,或者配置Hadoop的配置文件(如hadoop-env.sh)来指定本地库路径。 接下来是Hive-on-MR被弃用的问题,用户在使用Hive插入数据时遇到警告,提示Hive-on-MR在Hive 2中已弃用,建议使用Spark或Tez作为执行引擎[^3][^4]。这意味着用户当前的Hive配置默认使用MapReduce作为执行引擎,但需要切换到其他引擎。可能需要安装并配置Spark或Tez,然后在Hive中设置相关的属性,比如hive.execution.engine为spark。此外,还需要确保Hive与Spark或Tez的版本兼容,避免出现依赖冲突。 在处理这两个问题时,可能需要分步骤进行。首先解决本地库的问题,确保Hadoop运行环境正常,再处理Hive的执行引擎替换,以避免同时处理多个问题导致的混淆。同时,用户可能在执行这些步骤时遇到其他问题,比如环境变量配置错误、依赖缺失或版本不匹配,需要提供详细的检查方法和解决方案。 另外,用户提到插入数据时长时间加载后失败,可能和MapReduce作业执行效率低或配置有关,切换到Spark或Tez可能提升性能。但切换执行引擎需要相应的集群支持,比如YARN资源管理是否配置正确,Spark是否集成到Hive中,这些都需要进一步验证。 总结来说,解决方案需要分步骤指导用户检查和配置Hadoop的本地库,然后调整Hive的执行引擎设置,同时提供备选方案和验证方法,确保问题得到彻底解决。</think>### 解决Hadoop本地库加载失败警告和Hive-on-MR弃用问题 --- #### **一、Hadoop本地库加载失败警告** **问题描述**: 控制台提示 `Unable to load native-hadoop library for your platform... using builtin-java classes where applicable`,表示Hadoop无法加载本地优化库(如压缩、IO加速等),导致性能下降。 **原因分析**: 1. Hadoop预编译的本地库(`lib/native`)与当前系统架构(如64位Linux)不兼容。 2. 环境变量未正确配置,Hadoop未找到本地库路径。 **解决方案**: 1. **验证本地库兼容性** 执行以下命令检查Hadoop本地库支持的平台: ```bash hadoop checknative ``` 输出应为 `native library is available`。若显示 `cannot load ... because of ldd path issues`,则需重新编译或替换本地库。 2. **重新编译Hadoop本地库(推荐)** - 安装编译依赖: ```bash sudo apt-get install build-essential autoconf automake libtool cmake zlib1g-dev pkg-config libssl-dev ``` - 下载Hadoop源码,进入源码目录后执行: ```bash mvn package -Pdist,native -DskipTests -Dtar ``` - 将生成的 `hadoop-dist/target/hadoop-X.X.X/lib/native` 复制到Hadoop安装目录的 `lib/native`。 3. **配置环境变量** 在 `hadoop-env.sh` 中添加: ```bash export HADOOP_OPTS="-Djava.library.path=/path/to/hadoop/lib/native" ``` --- #### **二、Hive-on-MR弃用问题** **问题描述**: Hive插入数据时提示 `WARNING: Hive-on-MR is deprecated in Hive 2`[^3],表明Hive默认的MapReduce执行引擎已过时,建议改用Spark或Tez。 **解决方案**: 1. **切换到Spark执行引擎** - **前提条件**:已安装Spark并配置与Hive集成。 -Hive中设置执行引擎为Spark: ```sql SET hive.execution.engine=spark; ``` - 或在 `hive-site.xml` 中永久配置: ```xml <property> <name>hive.execution.engine</name> <value>spark</value> </property> ``` 2. **切换到Tez执行引擎** - **安装Tez**: 下载Tez并解压到Hadoop的公共目录(如 `/opt/tez`)。 - 在 `hive-site.xml` 中配置: ```xml <property> <name>hive.execution.engine</name> <value>tez</value> </property> <property> <name>tez.lib.uris</name> <value>${fs.defaultFS}/tez/tez.tar.gz</value> </property> ``` 3. **回退到Hive 1.X(不推荐)** 若无法升级执行引擎,可降级Hive至1.X版本,但会失去新特性支持。 --- #### **三、验证操作** 1. **检查Hadoop本地库** ```bash hadoop checknative # 期望输出:openssl、zlib等显示为可用 ``` 2. **验证Hive执行引擎** ```sql SET hive.execution.engine; -- 输出应为 spark 或 tez ``` --- #### **四、其他注意事项** - **Spark集成问题**:确保Spark版本与Hive兼容(如Hive 2.3+需Spark 2.4+)[^4]。 - **资源分配**:若使用YARN,需调整 `yarn-site.xml` 中的内存和CPU配额。 - **日志排查**:通过 `yarn logs -applicationId <app_id>` 查看任务失败详情。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值