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地址