hive的安装模式有三种:嵌入模式、本地模式以及远程模式。
嵌入模式:即使用hive自身内嵌的数据库Derby作为存储介质进行数据的存储。
本地模式:即使用外部数据库作为存储介质进行数据的存储
远程模式:与本地模式相似,不过其操作是先开一个Metastore服务,再用其他的客户端通过响应的配置去连接服务。
我们平常大多情况会使用其他的服务器去连接hive,及需要用到远程模式。远程模式是建立在本地模式之上的,所以这篇文章主要讲述hive本地模式的安装过程,及远程连接。
到相应网址下载mysql安装包,hive安装包,mysql驱动文件;mysql安装包下载链接,hive安装包下载链接
利用xftp软件,将mysql安装包与hive安装包上传至linux系统的指定路径/export/software
先在文件目录/export/servers下创建一个mysql文件夹,再进入mysql安装包所在文件夹/export/software,执行解压命令解压到指定文件目录/export/servers/mysql
再进入mysql文件目录,解压mysql相关组件,分别执行如下命令:
rpm -ivh mysql-community-server-5.7.12-1.el6.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-client-5.7.12-1.el6.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-libs-5.7.12-1.el6.x86_64.rpm --force --nodeps
rpm -ivh mysql-community-common-5.7.12-1.el6.x86_64.rpm --force --nodeps
执行命令vi /etc/my.cnf
编辑my.cnf文档,向其中添加如下代码:
skip-grant-tables #跳过登陆验证
user=root #设置root为mysql用户
character_set_server=utf8 #设置mysql服务默认字符集utf8
init_connect='SET NAMES utf8' #设置初次连接默认字符集utf8
执行命令chown -R mysql:mysql /var/lib/mysql
执行命令systemctl start mysqld
启动mysql服务器,也可以使用命令systemctl status mysqld
查看服务器状态;执行命令systemctl enable mysqld
设置虚拟机开机mysql服务自动启动(图中没有执行,大家要执行这条命令)
执行命令mysql
进入mysql交互式界面
这时mysql正使用%s选项运行,不能执行mysql语句,我们需要先执行命令flush privileges;
刷新即可,再输入代码set password for root@localhost=password('你的密码(自己设置)');
执行命令grant all privileges on *.* to ‘root’@’%’ identified by ‘密码’ with grant option;
赋予所有访问权限
退出输入命令quit;
退出mysql交互式界面
再执行命令vi /etc/my.cnf
对文档进行修改,注释跳过密码验证那行代码(“#”代表注释)
编辑完,保存退出即可,下次登录mysql即需要输入代码mysql -u用户名 -p
来登录(用户名一般为root),回车输入密码(输入密码时不会显示,输完回车即可)
将hive安装包解压到指定目录/export/servers
由于解压后的文件名带有版本号,把文件名直接改为hive更简洁,方便后续的使用(执行改名命令前,需要进入hive解压包所在目录)
执行命令vi /etc/profile
编辑文档,向文档末尾添加如下代码:
export HIVE_HOME=/export/servers/hive
export PATH=$PATH:$HIVE_HOME/bin
修改完,保存退出,再执行命令source /etc/profile
使环境变量生效
进入hive安装目录下的conf目录,执行命令vi hive-site.xml
新建文件,并向其中添加如下内容:
javax.jdo.option.ConnectionURL
jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true
javax.jdo.option.ConnectionDriveName
com.mysql.jdbc.Driver
javax.jdo.option.ConnectionUserName
root
javax.jdo.option.ConnectionPassword
mysql数据库密码
编辑完,保存退出(注意,内容里面的master指的是我自己的hadoop集群主节点,自己主机名是什么就写什么)
到相应网址下载驱动文件:mysql驱动文件下载链接
通过xftp软件,将驱动文件上传至linux系统指定目录/export/servers/hive/lib下
先在/root目录下创建一个metastore文件夹,再进入这个文件夹,输入命令nohup /export/servers/hive/bin/hive --service metastore &
启动hive的metastore服务
通过命令jps
可以查看进程,其中的RunJar表示metastore相关进程,有它则表示启动成功
由于我们配置过hive的系统环境变量,所以在任何目录下都能直接输入命令hive
启动hive(注意:由于hive底层应用的是MapReduce,且其存储介质为外界数据库mysql,所以在启动hive之前,要先启动hadoop集群,以及mysql服务)
输入命令show databases;
可以查看数据库,从中可以看出有个默认的default数据库
我们在hive中创建的数据库存储在HDFS中的/user/hive/warehouse/路径下
执行如下命令:
scp -r /export/servers/hive slave2:/export/servers
scp -r /etc/profile/ slave2:/etc
分发完后,在从节点slave2执行命令source /etc/profile
使环境变量生效
先在/root目录下创建一个metastore文件夹,再进入这个文件夹,输入命令nohup /export/servers/hive/bin/hive --service metastore &
启动hive元数据metastore服务
再在/root目录下创建一个hiveserver2文件夹,进入此文件夹,输入命令nohup /export/servers/hive/bin/hive --service hiveserver2 &
启动远程连接服务hiveserver2
输入命令jps
可以看出有两个RunJar进程,其中一个是元数据metastore的相关进程,另一个是远程连接服务hiveserver2的相关进程,如果有这两个进程,说明启动成功。
打开从节点slave2,输入远程连接命令beeline
进行连接(由于我们配置了hive的系统环境变量,所以可以在任何路径下直接输入beeline,如果没配置,则需要进入hive文件目录下的bin目录才能执行beeline命令)
输入连接协议,用户名以及密码
在这里输入HQL指令show databases;
可以看出其中有个默认数据库default(这里远程连接其实和本地模式并无较大差异,用的元数据都是外界数据库mysql的,只不过在master节点多开了一个hiveserver2服务,利用slave2去连接这个服务)
至此,远程连接已叙述完!
至此,hive本地/远程模式安装就结束了,大家在安装过程中遇到什么问题,可以提出来,我会尽自己所能去帮大家解决问题;大家能学到hive这里,相信大家对虚拟机的命令的使用已经非常熟练了,如果还不太熟练,可以借鉴学习这篇文章:haddoop集群的搭建(其中讲述了一些基本命令)