hive-mysql的關係(Hive集成Mysql做爲元數據)

Hive是一個基於Hadoop的數據倉庫平臺。經過hive,咱們能夠方便地進行ETL的工做。hive定義了一個相似於SQL的查詢語言:HQL,能 夠將用戶編寫的QL轉化爲相應的Mapreduce程序基於Hadoop執行。 web

Hive是Facebook 2008年8月剛開源的一個數據倉庫框架,其系統目標與 Pig 有類似之處,但它有一些Pig目前還不支持的機制,好比:更豐富的類型系統、更相似SQL的查詢語言、Table/Partition元數據的持久化等。 sql

Hive 能夠當作是從SQL到Map-Reduce的 映射器

hive的組件和體系架構: 數據庫

hive web接口啓動:./hive --service hwi

瀏覽器訪問:http://localhost:9999/hwi/
瀏覽器

默認狀況下,Hive元數據保存在內嵌的 Derby 數據庫中,只能容許一個會話鏈接,只適合簡單的測試。爲了支持多用戶多會話,則須要一個獨立的元數據庫,咱們使用 MySQL 做爲元數據庫,Hive 內部對 MySQL 提供了很好的支持。 安全

Hive安裝 架構

內嵌模式:元數據保持在內嵌的Derby模式,只容許一個會話鏈接 框架

本地獨立模式:在本地安裝Mysql,把元數據放到Mysql內 oop

遠程模式:元數據放置在遠程的Mysql數據庫。 測試

Hive的數據放在哪兒? spa

數據在HDFS的warehouse目錄下,一個表對應一個子目錄。

本地的/tmp目錄存放日誌和執行計劃

hive的表分爲兩種,內表和外表。
Hive 建立內部表時,會將數據移動到數據倉庫指向的路徑;若建立外部表,僅記錄數據所在的路徑,不對數據的位置作任何改變。
在刪除表的時候,內部表的元數據和數據會被一塊兒刪除, 而外部表只刪除元數據,不刪除數據。這樣外部表相對來講更加安全些,數據組織也更加靈活,方便共享源數據。

使用Mysql做爲Hive metaStore的存儲數據庫

其中主要涉及到的表以下:
表名 說明 關聯鍵
TBLS 全部hive表的基本信息(表名,建立時間,所屬者等)
TBL_ID,SD_ID
TABLE_PARAM 表級屬性,(如是否外部表,表註釋,最後修改時間等) TBL_ID
COLUMNS Hive表字段信息(字段註釋,字段名,字段類型,字段序號) SD_ID
SDS 全部hive表、表分區所對應的hdfs數據目錄和數據格式 SD_ID,SERDE_ID
SERDE_PARAM 序列化反序列化信息,如行分隔符、列分隔符、NULL的表示字符等 SERDE_ID
PARTITIONS Hive表分區信息(所屬表,分區值) PART_ID,SD_ID,TBL_ID
PARTITION_KEYS Hive分區表分區鍵(即分區字段) TBL_ID
PARTITION_KEY_VALS Hive表分區名(鍵值) PART_ID
相關文章
相關標籤/搜索