前阵子想学习一下数据仓库相关内容,发现要学习hive软件,然后最近这几天终于把配置的东西整得差不多明白了。

首先,hive是基于hadoop集群才能运行的软件,而hadoop又是要基于java环境采用MapReduce做计算,而hadoop通常运行在linux环境上。hive所执行的功能只不过是将你编写的SQL语句解释编译为MapReduce能够执行的程序而已。此外,hive具有把结构化文件映射为数据库的功能,那么这些映射关系就需要另一个关系型数据库来储存,我们这里用mysql。结构化文件比如下面这个:

1,zhangsan,24
2,lisi,30
3,manguo,24

OK,综上所述,我们需要先创建多个Linux虚拟机,然后再每个虚拟机上安装java编译环境,然后再安装hadoop软件,然后完成了hadoop配置之后,我们还要安装mysql数据库来储存映射关系。再之后,根据hive的启动要求启动相关的进程,就可以使用hive啦。

下面让我们开始;

首先在hadoop配置方面,已经有大佬给出了详细的教程,大家可以套娃过去,这个教程写的十分详细而且有相关代码可以直接复制,十分方便。如果过程中有不清楚的地方的话,还可以在哔站上搜hadooop尚硅谷的教程,下方这个文字的连接似乎就是根据尚硅谷那个整理出来的。

http://t.csdn.cn/QYGKJhttp://t.csdn.cn/QYGKJOK,在这个基础上,我再给大家添加一些关于以上教程的食用指南,这也是我自己在根据上面教程做的时候所踩到的一些坑。

1、在克隆虚拟机(hadoop102,103,104)的时候默认路径为C盘,如果不想安装在C盘需要记得调整路径。

2、在敲命令的时候要看好他是在那个虚拟机环境下敲的。

3、里面的第十四篇文章和第十五篇文章是可以不用照着敲的,只要完成到myhadoop.sh stop,myhadoop.sh start和jpsall几个命令能够正常运行,就可以进入下一步的hive安装了。

好的,欢迎回到我的频道,在安装hive部分,我参照的是哔站上黑马程序员hive的全套课程,在这里有mysql的安装教程,注意,这里的mysql安装是使用root用户安装的,如果你要自己安装的话,需要在执行命令的时候把教程中的命令

mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'hadoop' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

改为

mysql> use mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO '你所使用的用户名'@'%' IDENTIFIED BY 'hadoop' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;

这个决定了后面使用beeline能不能正常访问数据库,OK,我们完成了mysql的配置之后,根据黑马视频中的安装部署前步骤,我们要在core-site.sml文件中添加以下内容

<property>
    <name>hadoop.proxyuser.你自己的用户名.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.你自己的用户名.groups</name>
    <value>*<value>
</property>

我自己填的是mango
///***********这一段不用加********
<property>
    <name>hadoop.proxyuser.mango.hosts</name>
    <value>*</value>
</property>
<property>
    <name>hadoop.proxyuser.mango.groups</name>
    <value>*<value>
</property>
///***********我是注释*********

注意!!修改之后要把这个配置文件是用xsync命令同步到其他虚拟机,否则后面使用beeline就会出现报错

ERROR : Job Submission failed with exception 'org.apache.hadoop.security.authorize.AuthorizationException(User: mango is not allowed to impersonate mango)'
org.apache.hadoop.security.authorize.AuthorizationException: User: mango is not allowed to impersonate mango

ERROR : FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. User: mango is not allowed to impersonate mango
INFO  : Completed executing command(queryId=mango_20220301105812_cc7a3759-8d88-4387-b50d-f23a75f7f757); Time taken: 781.212 seconds
INFO  : Concurrency mode is disabled, not creating a lock manager
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. User: mango is not allowed to impersonate mango (state=08S01,code=1)
这个也是我自己踩过的一个坑来着。。。没有配置的时候会发现MapReduce程序无法正常执行。

OK,完成了上述的配置之后,就可以按部就班的根据黑马视频里面的远程部署模式进行安装部署hive文件。这里再添加视频的食用Tips!!!!:

视频中:

/export/server/目录对应之前安装hadoop中的/opt/module/目录,其他的没有什么大问题应该能接起来了,再就是beeline客户端启动

hive安在hadoop集群上那个主机 hadoop集群搭建hive_hadoop

 简要描述下上面的意思:hive的运行需要基于mysql,hive第一代客户端需要通过Metastore服务来访问mysql,hive第二代客户端(也就是beeline)需要通过hiveServer2来访问Metastore,因此,我们在运营beeline的时候,需要先启动Metastore(9083端口),然后启动HiveServer2(10000端口),如果启动失败的时候,可以先使用(下面这条命令需要su root之后执行)

netstat -nlpt |grep 9083   //查看9083端口运行的进程

来查看服务是否正常启动,此外,我还发现一个问题,在启动beeline的时候,似乎还要启动hive服务,否则beeline也是没有办法正常启动的。

/opt/module/hive/bin/hive

以下为Metastore和HiveServer都正常启动的图片

hive安在hadoop集群上那个主机 hadoop集群搭建hive_数据仓库_02

 好了,到此为止,在黑马上面的视频上,能够成功执行视频P26里面的那个insert程序,即代表配置成功,可以继续开始hive的学习腊!