Hive的三种模式
第一种,只需要一台虚拟机,安装hive就可以了
第二种:需要两台机器,一台安装mysql,一台装hive,
hive通过网络访问mysql获取元数据(是最经常使用的模式)
第三种,远程服务器模式:
需要四台机器,一台mysql,一台hive,一台MetaStoreServer,一台Client。
解耦思想。
这三种模式是根据元数据信息的存储和管理来划分的。
安装mysql
如果安装好的话,启动mysql只需要输入: mysql -uroot -p
----再输入密码:123
然后就登陆成功!!!
首先要打开hdfs(存数据的)和MapReduce(跑sql语句的)要打开
现在我们是DVD配置本地yarn,公司可能是配置的是yarn的服务,配置上那个服务器地址就可以啦!!
1.安装MySQL
千万不要少啦-server,少了,安装的就是mysql的服务端啦!!
2.安装完毕后直接启动mysql报错,进不去
显示没有启动服务,
需要先启动服务: service mysqld start
然后再敲: mysql —登录成功!
输入: show database;
切换数据库: use mysql;
然后:show tables;
—这里有很多表—但我们只看user
然后: desc user;
-------这里有很多字段
-------这里priv结尾的都是权限!
------然后查看前面的三个字段
------显示只允许本机访问,看host列
------修改权限
------%包含所有机器,所有机器都有权限!
-------删除host列的所有,除了%哪一行,%那一行的password,被加密啦!
-------修改完毕,退出啦!!
-------然后登陆----发现还是不行
-------主要原因,改了没重启服务!
-------直接输入:mysql,还是可以登陆!
-------登陆后修改权限!
-------刷新后—退出!!!
-------这时候,再敲mysql,发现启动不了,权限修改成功!!!
启动mysql只需要输入: mysql -uroot -p
----再输入密码:123
然后就登陆成功!!!
登陆成功后show databases;如下:
------注意—quit退出!!!
启动集群!!!
直接在3和4上执行(因为resourcemanager在3和4节点上) ----start-all.sh
Yarn集群必须在resurcemanager上启动!!
但是备机上的resurcemanager是启动不了的,是需要手动去启动的!!!(如下图!!)
备机是节点2
搭建第二种模式—单用户模式(mysql)(在node01–node02搭建)
----节点1为数据库MySQL
----节点2为hive
把软件包copy到linux的node02机器上
第一个是hive安装包
第二个是mysql的驱动包
解压缩hive安装包
修改一下名字为hive
修改环境变量
修改配置文件
配置5中属性
这种存储方式需要在本地运行一个mysql服务器,并作如下配置**(下面两种使用mysql的方式,需要将mysql的jar包拷贝到$HIVE_HOME/lib目录下)。
把文件里面的属性配置都删除(用下面的末行模式删除)**,把下面的属性复制进去
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node01/hive_remote?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123</value>
</property>
</configuration>
启动
会报错—驱动包找不到
copy驱动包
再次执行—还会报错
jline出错----不匹配的类–说明jar出问题啦!!
发现hadoop和hive里都有jline的jar包,版本不一致,删除hadoop里的低版本的jar包
然后启动—ok!!!
hive的数据是存在这个hdfs路径下的
hive跑的是mapReduce
查看任务:
插入的也有数据啦!!
查看刚才插入的元数据
show tables;
思考题?
hive是怎么连接hdfs的
答案:通过环境变量
总结: 环境变量的作用?
1.第一个层面找可执行文件
2.第二个层面方便其它软件和其它框架去找到我们对应的服务
hive远程服务器模式(在node01–node03–node04三台上搭建)
节点配置如下:
Node1:mysql
Node2:hive
Node3:MetaStoreServer–服务端
Node4:Client—客户端
把node02的hive同步到node03和node04
修改环境变量(node03和node04都配置一下)
node03只修改下面两点配置
node04的配置文件
插看端口号:—没有9083
启动元数据客户端—阻塞式的
插看端口号:—有9083
启动node04的-----hive
报错–解决