Java教程

Hive安装配置和编程实践

本文主要是介绍Hive安装配置和编程实践,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

实验环境:

  1. 操作系统:CentOS7(64位)
  2. Hadoop版本:Hadoop3.1.3
  3. Hive版本:Apache-Hive-1.2
  4. Mysql jdbc:mysql-connector-java-5.1.40.tar.gz


实验步骤:

1.Hive的安装和配置

        首先需要下载Hive安装包并解压,为了方便使用,我们配置一下环境变量,然后修改/hive/conf下的hive-site.xml配置文件,如下图。

图1 配置环境变量

图2 hive-site.xml配置信息

2.Mysql的安装和配置

        该步骤需要安装Mysql和Mysql jdbc包,均可以在官网上下载。下载完成后,可以启动Mysql并查看其运行状态。

图3 启动Mysql并查看其运行状态

        确认是否启动成功,Mysql节点处于LISTEN状态表示启动成功。

图4 Mysql启动成功

        此时MySQL已经开始正常运行,不过要想进入MySQL还得先找出此时root用户的密码,通过如下命令可以在日志文件中找出密码,可见密码为Vfwwl=Cs>5xl。

图5 查看初始密码

        接着可以用上一步找到的密码登录Mysql。

图6 登录Mysql

        登录后必须先修改密码,才能对数据库进行操作,如下图重新设置密码。

图7 重置密码后查看状态

        可以看到,characterset有两个不是utf8,这时我们需要在配置文件/etc/my.cnf中添加以下四行内容,更改Mysql语言。

图8 /etc/my.cnf配置文件添加内容

        在Mysql中新建hive数据库,配置Mysql允许Hive接入。

图9 配置Mysql允许Hive接入

        ##这里将所有数据库的所有表的所有权限赋给hive用户,后面的hive是配置hive-site.xml中配置的连接密码。(认识这一点很关键!因为这里不能用hive作为密码所以接着hive-site.xml也需要修改。)##

        接着可以启动hive了。(确保Hadoop集群已经启动)

图10 启动Hive

3.Hive编程实践

        这里以词频统计算法为例,在Hive中进行简单的编程实践。

图11 写入input

        写入input文件后,通过在Hive shell中执行HiveQL语句实现词频统计。

create table docs(line string);
load data inpath 'file:///opt/hadoop/input' overwrite into table docs;
create table word_count as
select word, count(1) as count from
(select explode(split(line,' '))as word from docs) w
group by word
order by word;

图12 执行HiveQL语句

        通过执行过程可以看到,HiveQL语句能转化为MapReduce任务,这也是采用Hive实现最大的优势,可以不用学习编写Java MapReduce代码了。

图13 MapReduce执行过程

图14 词频统计执行结果

问题讨论:

1.注意CentOS和Ubuntu启动命令的不同。

CentOS启动Mysql:systemctl start mysqld.service;

Ubuntu启动Mysql:service mysql start

2.关于Mysql的安装与配置可参考:

CentOS7:CentOS7安装MySQL(完整版)_24只羊羊羊-CSDN博客_centos7安装mysql

Ubuntu:http://dblab.xmu.edu.cn/blog/install-mysql/

3.启动Hive过程中遇到的报错:

1)org.datanucleus.store.rdbms.exceptions.MissingTableException: Required table missing : “VERSION” in Catalog “” Schema “”. DataNucleus requires this table to perform its persistence operations.

解决:进入hive安装目录,执行命令“./bin/schematool -dbType mysql -initSchema”

2)随即又出现以下报错“Failed to get schema version”,如图。

关于“Access denied for user ‘hive’@‘localhost’”的报错,在网上查找了很多帖子,有说是权限问题的,有说是时区问题的,但是试过很多方法都没有解决。最后发现是hive-site.xml中的密码没有修改,所以才造成了无法连接的情况。

解决:在hive/conf/hive-site.xml中配置“useSSL=false”和“password”(修改成和之前登录Mysql时设置的password)。

图15 hive-site.xml文件配置内容

        总之,虽然Hive的安装配置的过程并不复杂,但在实操中还是遇到了一些问题,尤其是在Hive连接Mysql时尤其需要注意密码设置的问题。HiveQL编程与MySQL语法类似,这也是Hive的最大优势所在,可以在不用编写MapReduce代码的情况下执行MapReduce任务。

这篇关于Hive安装配置和编程实践的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!