hive搭建之本地模式和远程模式
hive的本地模式和远程模式区别在于用于存储表结构元信息的数据库在本地还是远程,
如果数据库在本地那么就叫做本地模式,如果在远程那就叫做远程模式
搭建
我们数据库使用的是mysql,在搭建之前还需要注意的就是需要导入一个mysql的驱动到hive的lib中
建议导入一个高版本的,实验中我们使用的是5.1.34的jar包
修改配置文件,用户环境变量我们使用之前配置嵌入模式的环境变量,
这里就不配置了,如果你没有配置的话那么配置一个HIVE_HOME
然后配置hive启动的配置文件,同样需要我们主动创建一个配置文件叫hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--用于连接mysql的连接-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?useSSL=false</value>
</property>
<!--用于连接mysql的驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--用于连接mysql的用户名-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hiveowner</value>
</property>
<!--用于连接mysql的密码-->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Welcome_1</value>
</property>
</configuration>
需要提前在mysql中创建一个hive数据库
然后初始化mysql,并创建需要存储hive元信息的表到hive数据库中
初始化MetaStore:
schematool -dbType mysql -initSchema
然后hive数据中被创建了好多表
与嵌入模式不同的是 我们可以在任意目录下启动hive命令,不会报错
同样我们进行测试
测试
在hive命令行工具下执行
create table student(sid int,sname string,sage int);
创建这个表的元信息就被存储到了mysql中hive数据中以下俩个表
然后再插入一条记录
insert into student values(1,"Lily",13);
这条语句就会被hive翻译成一个mapreduce程序
然后我们查询一下这个表的数据
这里和嵌入式有点不同的是可以在任意目录下执行hive命令
还有就是在数据库初始化的时候往CTLGS中插入一条数据,这个条数据在启动以后要更新成本地的hdfs地址