![45fcea5d1580edb88ad0c9b31bcfc4ad.png](https://i-blog.csdnimg.cn/blog_migrate/4757a85d562cfaae9fe541efabff4f7a.jpeg)
hive简介
Hive是 基于Hadoop 的一个数据仓库 工具 ,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
![8ae43334ffd5de18e3c809fbd780ce29.png](https://i-blog.csdnimg.cn/blog_migrate/1c0cde8641f9253270af680f3bbbbc8d.jpeg)
搭建hive的目的
直接使用Hadoop是可以达成目的的,但困难重重(最起码也会繁琐一些)。引入hive在Hadoop平台上开始我们的表演,仅使用类似SQL语法的HiveSQL就可以实现对MapReduce任务的转化,让门槛降低一些。
目标读者
大数据入门新手学习使用,对Linux操作熟练度较低,第一次搭建hive
⚠️ 本文默认的叙述角度是在 Windows or macOS上操作Linux (CentOS 7)虚拟机。本文默许你的Linux操作仅刚入门,所以相对而言叙述上较繁琐请见谅。
⚠️本文中的文本编辑器 vi 其实是vim。虽然我撰写地很用心,但本文还没有经过严格校验。
先决条件
- 一般搭建在Linux上(学习场景下个人推荐使用虚拟机环境,瞎鼓捣也放心,不排除本身就主力使用Linux的玩家),简单的Linux操作基础:Linux基础入门操作[传送门坑位预留位置 ]
- Linux上需要的支持条件:
- 可联网
- MySQL
- Hadoop
- 非必须- 未来的进阶玩法:docker集成部署(个人建议初学者学习一遍非docker版的安装)
- 自己日常使用的电脑需要的工具软件:(Windows or macOS or Linux均可 )
- 强烈建议你拥有远程登陆SSH软件(Xshell、SecureCRT等,我使用的是SecureCRT)
- 可联网
- 非必须- 有数据库连接软件可以方便些(Navicat、DataGrip等)
- 独一无二的你和本文的一个赞(排在最后可不代表最不重要噢)
让我们开始吧!
- 检查网络环境,我选择让虚拟机去ping一个网站来检查。
打开Linux后在输入:
ping www.baidu.com
一般它会一直执行下去,你可以按 ctrl 和 c 组合键来中断它的运行
如果你看到类似于如下图片即可,若显示timeout,则需要先解决网络联通的问题。
![9829128b322f6d147ba3f5629c46c588.png](https://i-blog.csdnimg.cn/blog_migrate/9b1b1d7c1fe08ad69728d8c4e9418b20.jpeg)
2.SecureCRT/Xshell 登陆到该虚拟机
我们可以拿IP地址作为它的标识来定义是哪一台机子。
在Linux虚拟机上输入
ip addr
你的显示可以和我不同,有一处关键的地方需要你记下来:
![c2c8b0487439bf1acb548ca351fa5927.png](https://i-blog.csdnimg.cn/blog_migrate/8ee8e1c4d6157827368b4ddef454007a.jpeg)
如上我这台Linux机器的IP地址即为:192.168.0.226
你需要记下来你这台机器的 IP 地址(我们使用了动态获取IP地址DHCP的话重新开机可能会发生变化)
接下来是远程登陆SSH软件的使用,请参考自己选用的SSH软件使用方法连接上这台机器。
3. 确认你的Hadoop运行正常
关于Hadoop的安装搭建和使用非本文核心(内容较多,此处不表),请移步Hadoop安装教程[坑位预留]
我们把主战场从虚拟机转移到SSH软件上操作,虚拟机需要一直开着,在SSH上操作和直接本机上操作更加便捷。
从此处以后都是在SSH软件上对那部供你把玩的Linux进行操作。
检查hadoop进程是否在运行
ps -ef | grep hadoop
如果你能看到一堆hadoop字眼的输出,大概率你的hadoop已运行起来了。
- 我的朋友在第一次执行hive时出现这个错误:Cannot find hadoop installation
![444bea9630c3bfa28c8b778d0cb0d461.png](https://i-blog.csdnimg.cn/blog_migrate/7074e421d35f648f5570e68a79d3cb15.png)
为避免/解决这个问题,你可以直接将 Hadoop加入你的 PATH
任意路径下输入命令:
vi /etc/profile
往文本适当位置找一个空行加入文本:等号之后是你的hadoop安装路径
export HADOOP_HOME=/opt/hadoop-2.9.2
退出文本编辑后输入命令后刷新
source /etc/profile
3.获取需要的Hive
在浏览器上打开下面的地址即可开始下载,当然也支持迅雷下载。
https://mirror.bit.edu.cn/apache/hive/hive-2.3.7/apache-hive-2.3.7-bin.tar.gz
下载好之后需要把这个hive压缩包传给Linux
具体的方法有许多,例如通过SecureCRT的SFTP传过去:
![6ae8479e092ead172faa44230eba4817.png](https://i-blog.csdnimg.cn/blog_migrate/56d5f774c0b7681bc62ff28615ac61f5.jpeg)
![5884f19d98ce329fe62f6dd3c47cab44.png](https://i-blog.csdnimg.cn/blog_migrate/209ceef40ff6038afa790bfc6e80f0b7.png)
在这个界面直接把下载好的hive压缩包拖进去就会传给Linux的当前用户的宿主目录
切到你保存的hive压缩包所在的路径,我切到当前用户的宿主目录是 ~
输入命令:
tar -xzvf apache-hive-2.3.0-bin.tar.gz
送解压完成后的文件到你喜欢的位置,也可以同时改名,我选择的位置是/opt/hive
请用脑袋瓜记住这个老地方的路径
mv apache-hive-2.3.0-bin /opt/hive
![6aec626be5b4a520db188f3bbefc21c5.png](https://i-blog.csdnimg.cn/blog_migrate/4075303ffd43afbbfaa750e5f2db174a.png)
4.配置你的hive
请不要简单地复制粘贴以满足你机器的情况,你需要看清楚我的提示。
- 把Hive加入PATH
在任意路径下输入命令:
vi /etc/profile
在文本中适当位置加入:
export HIVE_HOME=/opt/hive #等号后面是你的hive放的位置
#此处为注释:找到原本就有的export PATH=....
#在后面加上 :HIVE_HOME/bin
#例如: export PATH=$PATH:$HIVE_HOME
![362c24bc719dbd4ff3e2e65f257216af.png](https://i-blog.csdnimg.cn/blog_migrate/f5beef8de220c650df8e1ea04e8e36b7.jpeg)
退出文本编辑后
source /etc/profile #让你刚刚的设置生效
- 配置hive-site.xml文件(一个你可能还没有的文件)
这个文件归宿是hive目录下的conf文件夹下
以我的设置为例是 :/opt/hive/conf
![5e8d1a4bb2d9b2dc7bcdd9bed1c6f71f.png](https://i-blog.csdnimg.cn/blog_migrate/e64d464d2ad16eec56ae255df0450881.png)
其实有很多模版文件(文件名.template)你可以对其进行配置后更名为hive-site.xml。你感兴趣的可以进去看看,但是配置有点点多。
你可以在这个目录下新建一个文件:
vi hive-site.xml
文件内需要粘贴进去不少东西:
关于Copy你可能会把一大段格式整齐的文本丢进去后显示地乱七八糟,而且不是因为你的ssh软件篇幅(文字太多换行了)的缘故,那你可以试一下在vi里按Esc键进入命令模式后输入 : :set paste 后回车进入文本编辑按 i 进入插入文本后在粘贴进去可能会有改观
![5f1c44c0d48d71afb4c55af20afd9e10.png](https://i-blog.csdnimg.cn/blog_migrate/d66fb35d3065a089ba18b1dffd989392.png)
你需要在这个文件里粘贴进去如下内容
但有一些地方需要你进行定制化修改,请你认真看中文部分并修改好后再粘贴进去。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<!-- 一般而言机器的hosts文件有localhost的映射下面这一行不需要修改,把localhost改为你的ip地址也可以 -->
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<!--下面这一行低版本MySql如5.7版本可以照抄高版本如8.0版本要修改为com.mysql.cj.jdbc.Driver-->
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>此处的中文改为你的一个数据库用户名</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>此处的中文改为对应的用户密码</value>
<description>password to use against metastore database</description>
</property>
</configuration>
5.导入对应的MySql版本的Connector jar包
关于版本兼容性问题:
维维达:如果你使用的MySql为5.7,你可以使用5.1.40的connector如果MySql为8.0以上,你可以使用8.0.20以上的connector。
在官网选择版本下载mysql-connector-java-xxx):
https://downloads.mysql.com/archives/c-j/
![cef5f5a59ebcda072fdb43797f57bc70.png](https://i-blog.csdnimg.cn/blog_migrate/6ce0621f0b9bfd77b75ed275259cbbd9.jpeg)
我下载好了8.0.20版本的zip包并解压缩了
![8a7d50d7a5ab2e941c98d826a46fd635.png](https://i-blog.csdnimg.cn/blog_migrate/023178ebbc7323753d4c82af1255f279.png)
如图进入第一个解压后的文件
![d9b6eb23c461fb50af5a03e3515c1c0f.png](https://i-blog.csdnimg.cn/blog_migrate/a1cedeced3a9d05f061011cb232a3398.png)
将红框框选住的jar包传到linux里的一个特定的地方(这次,你没得选择)
以我自己为例我的hive在/opt/hive,则我需要把这个红框文件送到
/opt/hive/lib
没有配图了噢,lib文件夹里太多东西了。
6.快接近尾声了
尝试运行hive,因为我们在第4步中把hive加入PATH,所以我们是可以在任意路径下直接敲hive命令的,如果你发现敲了hive说命令没找到那么你得再去把hive配置到PATH里看看。
hive
![658e7e9f3a2a3c32934a26b941e1c266.png](https://i-blog.csdnimg.cn/blog_migrate/520fb5a4ce7b39a555f896044d88bd5a.jpeg)
如果你你发现如上图一样的显示则代表你的hive-site.xml、MySql、Hadoop、jdk工作正常。如果你发现了有报Error,需要再检查一下问题在哪里。
你发现光标闪烁的前缀发生了更改:
变成了 hive>
对此不用紧张,你只是进到了hive程序里并且供你执行hive的相关命令,现在你可以在此处先输入
exit;
稍等片刻即可退出hive命令界面。
7.让Hive跑起来
我们需要先进行初始化,在这个过程hive会去连接你的MySql,并且对数据库进行新建、配置hive schema,幸运地,如果你的配置没问题这些都不用你操心。
切换到你的hive所在路径下的bin文件夹下
cd /opt/hive/bin
![22e9bc9b5e24c18bb50129cd4ce6311c.png](https://i-blog.csdnimg.cn/blog_migrate/12eee2849a19e7f3f72742c3163107aa.png)
如图你可以看到schematool 这位朋友(工具人)在这里等我们,在这里输入命令:
schematool -dbType mysql -initSchema
让它按照我们的配置文件(hive-site.xml)进行数据库mysql初始化,你可能会看到如下图的显示,但不一定相同,其中WARN对于你而言,可以先别太放在心上,但其实再完善一下配置文件可以解决(图片来源于我的朋友)。
![6832524a32ff7345369cbc960e60b3f7.png](https://i-blog.csdnimg.cn/blog_migrate/333533a453d3fccc6de309e0bf11e9a3.jpeg)
如果你的输出许久停不下来,可以按ctrl+c中断它,然后根据它的提示寻找问题的根源。衷心希望你能看到在最后它的输出停了下来,而且在最末尾你可以看到 :schemaTool completed!
如果你有数据库连接软件你可以清楚地看到多了一个schema,且里面有很多的table则更加证实了hive完成了mysql的初始化,这意味着你的hive可以正常工作了。
![35da44e51a432a3c43ecbf42bcd362a0.png](https://i-blog.csdnimg.cn/blog_migrate/65b2d25a9fc52fdb38e0da0a75786725.jpeg)
你可以再次进入hive命令模式再次验证:
在任意路径下输入命令
hive
进入hive命令模式输入命令
show databases;
![84943c5d8a4513f67eea1f4af51ebe73.png](https://i-blog.csdnimg.cn/blog_migrate/de99b8c1b9684921d91b5c82dfb9da0d.jpeg)
恭喜你,开始你的Hive之旅吧
结束语
这是我的第一篇技术博客,也是第一篇知乎文章,我本身的Linux很早一起学习过一学期,许久之后再接触到大数据的应用时已经很生疏了,很多概念都在这一次环境搭建中温习了一遍,也看了很多前辈的文章,帮助到我的朋友解决了一些小问题,借此机会开始自己的博客记录生涯,权当留给自己做笔记用,也希望能够帮助到和我一样的初学者。本文是我个人撰写,学艺不精难免有错漏和概念偏失的地方,请发现错误的同学给我提宝贵建议, 帮助我进步。感谢您的阅览,知乎小透明期待你的点赞噢。