大数据Hive安装与应用


1 启动条件

Hive需要安装在成功部署的Hadoop平台上,并且要求Hadoop已经正常启动。所以,读者需要首先验证自己计算机上的Hadoop是否处于正常运行状态,方法是执行一个Hadoop命令,如“hdfs dfs -ls /”,看是否能正常显示HDFS上的目录列表;同时,通过浏览器查看系统状态,地址是“http://maser:9870”和“http://master:18088”(注意,Hadoop 3.0以前的老版本的查询地址是“http://master:50070”),查看结果应当与安装时的情况一致。如果满足上述两个条件,就说明Hadoop已经正常启动。

准备就绪后,就可以开始安装Hive了。我们打算将Hive安装在Master上,因此以下的操作均是在Master上进行的。同时,所有操作都使用csu用户,所以需要确保已经切换到csu用户。

2 部署安装

2.1 下载并解压Hive安装包

读者可以从http://archive.apache.org/dist/下载各种版本的Hive安装包,也可以直接在本书第6章软件资源中找到Hive安装包文件apache-hive-3.1.0-bin.tar.gz,这是2018年7月发布的版本。
在这里插入图片描述

请将该文件复制到Master的“/home/csu/resources”目录下(为了管理方便,我们建议读者把所有软件资源都放在一个目录下)。

首先将apache-hive-3.1.0-bin.tar.gz从“resources”目录下再复制至“/home/csu/”,接着进入“/home/csu/”子目录,并执行解压Hive安装包的命令。

请添加图片描述
按下Enter键后会看到解压缩过程滚动显示的信息。执行完毕后可以查看一下安装情况。请切换到“apache-hive-3.1.0-bin”目录,执行命令“ls -l”,会看到如图6-16所示的内容,这些就是Hive系统文件和目录,说明解压缩成功。
请添加图片描述

2.2 配置Hive

  1. 创建hive-site.xml文件

实际上,在Hive安装目录下的配置目录“conf”中,系统给出了一些配置文件模板,如hive-default.xml.template等,但是Hive需要的配置文件是hive-site.xml,而它并不存在,所以需要用户自己创建(可以先将hive-default.xml.template改名为hive-site.xml,然后对其进行编辑,也可以完全重新创建,前者涉及比较复杂的配置修改,为简便起见,我们采用后者)。

请添加图片描述

将下列代码添加到hive-site.xml文件中。
请添加图片描述

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
       <property> 
           <name>hive.metastore.local</name> 
           <value>true</value> 
       </property> 
       <property> 
           <name>javax.jdo.option.ConnectionURL</name>
           <value>jdbc:mysql://master:3306/hive_168?useSSL=false&amp;allowPublicKeyRetrieval= 
           true&amp;serverTimezone=GMT%2B8</value> 
       </property> 
       <property> 
           <name>javax.jdo.option.ConnectionDriverName</name> 
           <value>com.mysql.cj.jdbc.Driver</value> 
       </property> 
       <property> 
           <name>javax.jdo.option.ConnectionUserName</name> 
           <value>hadoopcsu</value> 
       </property> 
       <property> 
           <name>javax.jdo.option.ConnectionPassword</name> 
           <value>Hive_%CSUdjhuang168168</value> 
       </property> 
</configuration>

编辑完成,保存退出即可。通过“ls -l”命令可以看到“conf”目录增加了hive-site.xml文件。

在这里插入图片描述

如果配置出现无法连接,请重新配置JDBC连接

我这里是mysql5.6的配置

<configuration>
    <!-- 存储元数据mysql相关配置 -->
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value> jdbc:mysql://node1:3306/hive?createDatabaseIfNotExist=true&amp;useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8</value>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hadoop</value>
    </property>

    <!-- 关闭元数据存储授权  -->
    <property>
        <name>hive.metastore.event.db.notification.api.auth</name>
        <value>false</value>
    </property>

    <!-- 关闭元数据存储版本的验证 -->
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
</configuration>


在上述代码中,“hive_168”正是我们前面在MySQL中创建的数据库,“hadoopcsu”是我们前面创建的MySQL新用户,而“Hive_%CSUdjhuang168168”则是在MySQL中创建hadoopcsu用户时所设置的密码。特别值得指出的是,我们在URL中采用的“useSSL=false& allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8”包含了多个参数,需要仔细分析。首先,多参数的分割,必须使用“&”分隔符,这是xml文件的要求,有些人简单采用“&”符号,结果遇到报错,给出的提示是没有找到命令,这时往往不知什么原因,甚为郁闷;第二,由于数据库是MySQL 8.0.11,因此要求显式地设置SSL(安全套接层),我们这里设置为“false”,即不使用SSL;第三,“allowPublicKeyRetrieval”设置为“true”,以保证公钥解析;第四,MySQL 8.0.11要求明确设置时区,这里设置为东八区,其中“%2B”是“+”的转义字符,所以是GMT+8(东八区,也就是中国首都北京所在的时区)。此外,MySQL 8.0.11的驱动器也由过去的“com.mysql.jdbc.Driver”换成了“com.mysql.cj.jdbc.Driver”。

  1. 复制java connector到依赖库
    请读者将第6章软件资源中的mysql-connector-java-8.0.11.jar文件复制到自己计算机Master中的“/home/csu/resources”目录下,然后进入该目录,将其中的mysql-connector-java-8.0.11.jar文件复制到Hive的安装目录的依赖库目录“lib”下,即执行“cp mysql-connector-java-8.0.11.jar ~/apache-hive-3.1.0-bin/lib/”命令。

请添加图片描述
我们顺便说一下如何才能得到上述文件。其实,在安装MySQL 8.0.11时,mysql-connector-java-8.0.11.jar这个文件就由系统放在“tmp”目录下了,用户可以在Root用户权限下通过“find”命令(在Linux终端输入“find / -name mysql-connector-java-8.0.11.jar”即可)找到该文件(图中有两个地方找到了该文件,但是后者是需要我们复制的)。当然用户也可以从MySQL官网下载这个文件,但不一定能找到。

  1. 配置.bash_profile文件
    我们知道,.bash_profile文件是一个用户(如csu)使用Linux的系统配置文件,所以自然也需要为Hive进行必要的配置,可执行“gedit /home/csu/.bash_profile”命令进行配置,如图6-20所示。
    请添加图片描述
export HIVE_HOME=/home/csu/apache-hive-3.1.0-bin
export PATH=$PATH:$HIVE_HOME/bin

请添加图片描述

2.3 启动并验证Hive

要启动Hive,必须保证Hadoop和MySQL已经启动。

在Hadoop和MySQL已经启动的条件下,进入Hive安装目录,执行“bin/hive”命令,如果出现Hive命令提示符“hive>”(Hive交互式命令行,即Hive Shell命令的提示符),则表明Hive安装和部署成功

请添加图片描述

注意事项:

在使用Hive时,有些用户可能会遇到不能启动Hive或者启动了Hive但不能执行命令的问题。例如,输入“bin/hive”命令并按下Enter键后,出现如下的报错信息:

FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache. hadoop.hive.ql.metadata. SessionHiveMetaStoreClient

或者启动后能够进入Hive交互式命令行,但是执行“show databases;”这样的命令时,给出如下异常信息:

FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache. hadoop.hive.ql.metadata. SessionHiveMetaStoreClient

从给出的信息来看,这些都是因为元数据库没有初始化而造成的。在Linux终端执行如下的命令即可解决该问题:
schematool -dbType mysql -initSchema

在这里插入图片描述

2.4 Hive的基本应用

Hive的应用有两种模式,即命令行模式和交互模式。命令行模式使用如同“Hadoop fs -ls /”的方式,是在Linux提示符下进行的操作;交互模式则需要进入Hive Shell,注意,Hive Shell里的每条命令后都要用分号结束。

1.命令行模式

这里给出两个实例,详细用法可参考Hive的官方文档。

(1)创建表

hive -e 'create table testDB(id int, name string, age int);'

(2)查看已经创建的表

hive -e 'show tables;'

在这里插入图片描述
2.交互式模式

进入Hive Shell,然后创建表,命令如图6-26所示。

create database test_db;

在这里插入图片描述

show databases;

在这里插入图片描述
退出Hive Shell命令是“exit;”或“quit;”。

从上述的实例可以发现,Hive的命令行模式与交互式模式在本质上是一致的,都是基于相同的计算引擎。

posted @ 2021-11-01 20:30  赵广陆  阅读(53)  评论(0编辑  收藏  举报