大數據平臺組件的安裝,大家可以先在網上搜索,後期我會出一個安裝過程圖解,並支持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(長按後點識別圖中二維碼):