乐趣区

关于hive:Hive的安装部署操作

基本原理

  • Hive 是基于 Hadoop 的一个数据仓库工具,能够将结构化的数据文件映射为一张数据库表,并提供简略的 SQL 查问性能,能够将 SQL 语句转换为 MapReduce 工作进行运行。其长处是学习成本低,能够通过类 SQL 语句疾速实现简略的 MapReduce 统计,不用开发专门的 MapReduce 利用,非常适宜数据仓库的统计分析。
  • Hive 构建在基于动态批处理的 Hadoop 之上,因为 Hadoop 通常都有较高的提早并且在作业提交和调度的时候须要大量的开销。因而,Hive 并不适宜那些须要低提早的利用,它最适宜利用在基于大量不可变数据的批处理作业,例如,网络日志剖析。
  • Hive 的特点是:可伸缩(在 Hadoop 集群上动静的增加设施)、可扩大、容错、输入格局的涣散耦合。
  • Hive 将元数据存储在关系型数据库(RDBMS)中,比方 MySQL、Derby 中。
  • Hive 有三种模式连贯到数据,其形式是:单用户模式,多用户模式和近程服务模式。(也就是内嵌模式、本地模式、近程模式)。

零碎环境
Linux Ubuntu 20.04
OpenJDK-11.0.11
hadoop-3.2.2
mysql-8.0.25
mysql-connector-java-8.0.25.jar

前提条件
在 Hadoop 和 mysql 装置实现的根底上,搭建 hive。


装置步骤
1. 在 Linux 本地创立 /data/hive1 文件夹用来寄存安装包。

mkdir -p /data/hive1

切换到 /data/hive1 的目录下,应用 wget 命令下载 apache-hive-2.3.8-bin.tar.gz 和 mysql-connector-java-8.0.25.jar。

cd /data/hive1
wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.8/apache-hive-2.3.8-bin.tar.gz
wget https://dev.mysql.com/downloads/file/?id=504646

2. 将 /data/hive1 目录下的 apache-hive-2.3.8-bin.tar.gz,解压缩到 /apps 目录下。

tar -xzvf /data/hive1/apache-hive-2.3.8-bin.tar.gz -C /apps/

再切换到 /apps 目录下,将 /apps/hive-1.1.0-cdh5.4.5,重命名为 hive。

cd /apps  
mv /apps/apache-hive-2.3.8-bin.tar.gz/ /apps/hive 

3. 应用 vim 关上用户环境变量。

sudo vim ~/.bashrc

将 Hive 的 bin 目录,增加到用户环境变量 PATH 中,而后保留退出。

#hive config  
export HIVE_HOME=/apps/hive  
export PATH=$HIVE_HOME/bin:$PATH

执行 source 命令,使 Hive 环境变量失效。

source ~/.bashrc 

4. 因为 Hive 须要将元数据,存储到 Mysql 中。所以须要拷贝 /data/hive1 目录下的 mysql-connector-java-8.0.25.jar 到 hive 的 lib 目录下。

cp /data/hive1/mysql-connector-java-8.0.25.jar/apps/hive/lib/ 

5. 上面配置 Hive,切换到 /apps/hive/conf 目录下,并创立 Hive 的配置文件 hive-site.xml。

cd /apps/hive/conf  
touch hive-site.xml    

应用 vim 关上 hive-site.xml 文件。

vim hive-site.xml

并将下列配置项,增加到 hive-site.xml 文件中。

<property>
#javax.jdo.option.ConnectionDriverName:连贯数据库的驱动包。<name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>                                                                              
</property>
<property>
#javax.jdo.option.ConnectionUserName:数据库用户名。<name>javax.jdo.option.ConnectionUserName</name>                                                                                                                       
    <value>root</value>
</property>                                                                                                                                                                                                        <property>
#javax.jdo.option.ConnectionPassword:连贯数据库的明码。<name>javax.jdo.option.ConnectionPassword</name>
     <value>123456</value>                                                                         
</property>
<property>
     <name>hive.server2.thrift.port</name>
     <value>10000</value>
</property>
<property>
     <name>hive.server2.thrift.bind.host</name>
     <value>127.0.0.1</value>
</property>


因为 Hive 的元数据会存储在 Mysql 数据库中,所以须要在 Hive 的配置文件中,指定 mysql 的相干信息。

javax.jdo.option.ConnectionURL:数据库链接字符串。
javax.jdo.option.ConnectionDriverName:连贯数据库的驱动包。
javax.jdo.option.ConnectionUserName:数据库用户名。
javax.jdo.option.ConnectionPassword:连贯数据库的明码。
此处的数据库的用户名及明码,须要设置为本身零碎的数据库用户名及明码。

6. 另外,还须要通知 Hive,Hadoop 的环境配置。所以咱们须要批改 hive-env.sh 文件。

首先咱们将 hive-env.sh.template 重命名为 hive-env.sh。

mv /apps/hive/conf/hive-env.sh.template  /apps/hive/conf/hive-env.sh 

应用 vim 关上 hive-env.sh 文件。

vim hive-env.sh

追加 Hadoop 的门路,以及 Hive 配置文件的门路到文件中。

# Set HADOOP_HOME to point to a specific hadoop install directory  
# HADOOP_HOME=${bin}/../../hadoop  
HADOOP_HOME=/apps/hadoop  
# Hive Configuration Directory can be controlled by:  
# export HIVE_CONF_DIR=  
export HIVE_CONF_DIR=/apps/hive/conf  


7. 下一步是配置 Mysql,用于存储 Hive 的元数据。

首先,须要保障 Mysql 曾经启动。执行以下命令,查看 Mysql 的运行状态。

sudo service mysql status 


通过输入,能够看出 Mysql 曾经启动。如果未启动须要执行启动命令。

sudo service mysql start

如果未装置 Mysql 则须要执行装置命令。若咱们的环境已装置 Mysql,则无需执行此步。

sudo apt-get install mysql-server 

8. 开启 Mysql 数据库。

mysql -u root -p

查看数据库。

show databases;

上面,输出 exit 退出 Mysql。

exit 

9. 执行测试。因为 Hive 对数据的解决,依赖 MapReduce 计算模型,所以须要保障 Hadoop 相干过程曾经启动。

输出 jps,查看过程状态。若 Hadoop 相干过程未启动,则需启动 Hadoop。

/apps/hadoop/sbin/start-all.sh  

启动 Hadoop 后,在终端命令行界面,间接输出 hive 便可启动 Hive 命令行模式。

hive 

输出 HQL 语句查询数据库,测试 Hive 是否能够失常应用。

show databases;  

踩坑

报错:hive 启动时报错

Exception in thread“main”java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

起因:hadoop 和 hive 的 lib 下有一个 guava 结尾的 jar 包不匹配。

查看 guava 结尾的 jar 别离在 hadoop 和 hive 上的所在门路
Hadoop:

cd /apps/hadoop/share/hadoop/common/lib/

Hive:

cd /apps/hive/lib/

解决:查看所在门路下的 guava 结尾的 jar, 抉择版本高的那个去笼罩另一个。

mv /apps/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /apps/hive/lib/

删除掉版本低的

rm -f guava-19.0.jar

实现!

退出移动版