2- hive元數據與hadoop的關係

大數據平臺組件的安裝,大家可以先在網上搜索,後期我會出一個安裝過程圖解,並支持HA的類生產環境的安裝。

Hive是構建在hadoop平臺上的大數據倉庫,方便大數據平臺的數據讀寫和離線計算。爲了方便管理hive自己有一套元數據的管理數據庫,默認是存放在derby數據庫中,不過此方法不適合生產,因爲每個用戶登錄hive都是在本地目錄創建元數據信息,不適合統一管理,所以一般生產上我們是放到mysql中,具體可以見hive的環境的hive-site.xml文件信息。此文件在/app/hive-2.0.1/conf目錄下,其中/app/hive-2.0.1/爲你hive的主目錄。

Hive-site.xml文件:

<property>

    <name>javax.jdo.option.ConnectionDriverName</name>

    <value>com.mysql.jdbc.Driver</value>

    <description>Driver class name for a JDBC metastore</description>

</property>

<property>

    <name>javax.jdo.option.ConnectionURL</name>

    <value>jdbc:mysql://hadoop100:3306/hive?createDatabaseIfNotExist=true</value>

    <description>JDBC connect string for a JDBC metastore</description>

</property>

<property>

    <name>javax.jdo.option.ConnectionUserName</name>

    <value>hive</value>

    <description>Username to use against metastore database</description>

</property>

<property>

    <name>javax.jdo.option.ConnectionPassword</name>

    <value>hive</value>

    <description>password to use against metastore database</description>

</property>

以上是配置hive的元數據的連接驅動程序、mysql的連接地址、用戶名和密碼相關信息。

我們登錄進mysql裏看看這個庫的相關表信息

mysql -h localhost -u hive -p

use hive;

show tables;

如下圖:

下面我們來介紹一下幾個主要的表結構:

1:Hive數據庫相關信息

DBS:這個表主要存放的是我們的hive平臺創建的數據庫。

一個是默認的default數據庫,另一個是我們自己創建的fin_abc數據庫,以及他們存放在HDFS的目錄。

 

2:Hive表和視圖相關元數據

主要有TBLS、TABLE_PARAMS、TBL_PRIVS,這三張表通過TBL_ID關聯

TBLS:該表中存儲Hive表、視圖、索引表的基本信息

可以看到我們創建了很多的表名,其中有t_test等等。

TABLE_PARAMS:表或視圖的屬性信息

可以看到t_test表是外部表,有1行數據等等。

TBL_PRIVS:表或視圖的權限相關信息

 

3:Hive文件存儲信息相關的元數據表

主要有SDS、SD_PARAMS、SERDES、SERDE_PARAMS
由於HDFS支持的文件格式很多,而建Hive表時候也可以指定各種文件格式,Hive在將HQL解析成MapReduce時候,需要知道去哪裏,使用哪種格式去讀寫HDFS文件,而這些信息就保存在這幾張表中。

SDS:文件存儲的基本信息

可以看到t_test表的存放在HDFS的目錄以及相關格式

SD_PARAMS:Hive存儲的屬性信息,在創建表時候使用。

STORED BY  ‘storage.handler.class.name’  [WITH SERDEPROPERTIES (…)指定

SERDES:存儲序列化使用的類信息

SERDE_PARAMS:存儲序列化的一些屬性、格式信息,比如:行、列分隔符

可以看到t_test表字段分隔是一個特殊的符號

 

4:Hive表字段相關的元數據表

COLUMNS_V2:表的字段信息

可以看到t_test表只有一個dept_code字段

 

5:Hive表分區相關的元數據表

主要有PARTITIONS、PARTITION_KEYS、PARTITION_KEY_VALS、PARTITION_PARAMS

PARTITIONS:分區的基本信息

可以看到TBL_ID爲46的有3個分區信息了。

PARTITION_KEYS:分區的字段信息

我們的TBL_ID爲46的表分區字段爲hq_month_code,字符類型。

PARTITION_KEY_VALS:該表存儲分區字段值

可以與PARTITIONS表的PART_ID字段關聯,得到每個分區的值。

PARTITION_PARAMS:存儲分區的屬性信息

可以看到每個分區字段的相關屬性,包括文件數,行數,大小,最新時間。

 

6:其他不常用的元數據表

以上是Hive元數據的相關信息,有了這些信息,其實我們在執行HQL腳本的時候,就會去讀取這些元數據信息,找到表存放在HDFS的目錄和文件,以及字段類型和分隔符號,解析SQL後生成MR任務處理,最後返回相關結果。

大家可以自己在Hive做一些表的新建和修改,查看這些元數據的變化情況,加深理解,下節我們介紹Hive的語法。

更多技術文章請關注公衆號BLT328(長按後點識別圖中二維碼):

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章