大家好,我将会在这篇文章中讲解一下Hive实战之Hive配置的过程。
Hive简介
Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制。hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行。Hive的优点是学习成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。
1.下载的软件
先在Hadoop目录下启动我们的集群
Hive下载可以在官网下载:(hive.apache.org)
我们选择最新版本为:hive-3.13/,这个版本针对Hadoop 3.x
下载完成后文件名为:apache-hive-3.1.3-bin.tar.gz
2.常规操作
然后回到我们的bigdata01的softwares目录
之后pwd,显示为/home/softwares路径后,使用命令rz上传我们的hive文件。
上传完毕后,ls出我们softwares里面的文件,使用命令tar -zxf apache-hive-3.1.3-bin.tar.gz进行解压。解压完毕,使用命令rm -rf apache-hive-3.1.3-bin.tar.gz删除原文件,删除的原因是源文件占内存太大。然后mv apache-hive-3.1.3-bin hive 重命名我们的文件。
3.配置环境变量
首先了解一下hive的路径,路径千万不要错,不然系统就识别不了。
在softwares目录里使用命令 vi /etc/profile进入下边这个界面:
下滑至最末尾完成我们环境变量的配置
按照我本人电脑路径所填内容如下:
export HADOOP_HOME=/home/softwares/hadoop
export ZOOKEEPER_HOME=/home/softwares/zookeeper
export HIVE_HOME=/home/softwares/hive
export JRE_HOME=$JAVA_HOME/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$HIVE_HOME/bin
export PATH=$PATH:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
4.配置hive的各项配置(仿照hadoop配置)
接着使用一个很神奇的软件notepad++来打开配置, 首先我们来修改文件名: hive-env.sh.template --->hive-env.sh hive-default.xml.template -->hive-site.xml 在hive-env.sh文件最下面加上以下路径:
export JAVA_HOME=/home/softwares/jdk
export HADOOP_HOME=/home/softwares/hadoop
export HIVE_HOME=/home/softwares/hive
修改完之后在 [root@bigdata01 softwares]#recource /etc/profile 此操作为刷新我们的配置。而且一定要进行刷新!
然后进入hive,使用echo $HIVE_HOME看系统是否可以找到hive
4.1配置hive-site.xml
再次强调一下,在配置这一步的时候,我们电脑里必须安装mysql(5.7.x) 7.x版本而不是8.x版本。我本人电脑mysql版本如下:
此文件有7项基本设置,否则容易出错(以往踩过的坑)
1->4JDBC的设置:1.connection(注意查看本机的ip地址---win+r cmd-->ipconfig/all-->用VMnet8的地址) 2.driver 3.user 4.password
使用notepad++打开hive-site.xml文件
4.1.1 配置connection
找到ConnectionURL,发现它默认derby数据库,改为mysql数据库。
修改后:
修改内容如下:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.234.1:3306/hive?characterEncoding=utf-8&useSSL=false</value>
<description>
JDBC connect string for a JDBC metastore.
To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
</description>
</property>
4.1.2 配置driver:
也是默认derby数据库,修改它。
修改成:
修改内容如下:
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
4.1.3 配置user
发现是UserName,但我的数据库用户名是root,将其修改成root。
修改内容如下:
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property
4.1.4 配置password
我们看见它默认是mine,但我的数据库和密码一致,都为root,将其修改成root。
修改成:
修改内容如下:
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
4.1.5 querylog配置
找到这个地方,因为临时目录容易出错,将其修改成我们安装目录下:
修改成:
修改内容如下:
<property>
<name>hive.querylog.location</name>
<value>/home/softwares/hive/querylog</value>
<description>Location of Hive run time structured log file</description>
</property>
4.1.6 exec.local配置
找到这个地方,也将其修改成我们的安装目录下:
修改成:
修改内容如下:
<property>
<name>hive.exec.local.scratchdir</name>
<value>/home/softwares/hive/scratchdir</value>
<description>Local scratch space for Hive jobs</description>
</property>
4.1.7 hive.downloaded配置
终于到了第7步配置。。。。。。。 发现也是临时目录,修改它。
修改成:
修改内容如下:
<property>
<name>hive.downloaded.resources.dir</name>
<value>/home/softwares/hive/resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
到这步已经配置完毕了!撒花!!
5.初始化mysql数据类型
因为之前是derby数据库,后面我们修改成mysql数据库,所以要初始化操作。 我们使用下图的schematool命令来进行初始化:
执行 [root@bigdata01 hive]# bin/schematool -dbType mysql -initSchema
如果在这一步出错,看看有没有建立数据库或者检查一下数据库的权限,因为我是root用户,所以之前就打开了权限。 下一步我们把本地mysql驱动拷贝到/home/softwares/hive/lib/下。 这是我的mysql驱动:
进入以下路径然后rz上传我们的mysql驱动(我把两个都上传了):
然后重新初始化,执行命令:
[root@bigdata01 hive]# bin/schematool -dbType mysql -initSchema
先看到这个
然后你就一直往下拉,会看到一直都是黑屏:
拉到最底下,你会看见以下界面,然后出现 Initialization script completed
schemaTool completed就代表成功了:
然后我们就可以直接在[root@bigdata01 hive]中输入命令hive
然后出现提示图标(像mysql的那一种),不信就你看看下面的截图,直接可以输入show databases;看看有哪些数据库啦。
到此,Hive已全部配置完毕。