在配置和查看配置之前先弄清楚兩個概念
Hive on Spark:hive默認在mr上跑,可改成在spark內存上跑
Spark on hive:不管如何運行spark sql,默認讀取的hive數據庫,其實spark不是直接讀取hive數據庫,而是讀取hive元數據和hdfs,那就是要配置hive的metastore。
Hive 的 metastore 安裝方式共有三種
1.內嵌模式,特點是:hive服務和metastore服務運行在同一個進程中,derby服務也運行在該進程中。
2.本地模式,特點是:hive服務和metastore服務運行在同一個進程中,mysql是單獨的進程,可以在同一台機器上,也可以在遠程機器上。
該模式只需將hive-site.xml中的ConnectionURL指向mysql,並配置好驅動名、數據庫連接賬號即可:
需要將 MySQL 的驅動 jar 包拷貝到 $HIVE_HOME/lib目錄下, 並啟動 MySQL 服務
hive-site.xml配置如下
3.遠程模式,特點是:hive服務和metastore在不同的進程內,可能是不同的機器。該模式需要將hive.metastore.local設置為false,並將hive.metastore.uris設置為metastore服務器URI,如有多個metastore服務器,URI之間用逗號分隔。metastore服務器URI的格式為thrift://hostort
遠程模式與本地模式的區分,就是hive服務和metastore服務是否在同一進程,即使在同一台機器也可配置遠程模式。
Metastore啟動命令
hive --service metastore -p <port_num>
如果不加端口默認啟動:hive --service metastore,則默認監聽9083
IP為服務所在機器
看到thrift可能有些不明白,這就要涉及hiveserver2
從圖中看出 hiveserver是hive與client端的交換終端,client通過hiveserver構建查詢語句,訪問hadoop,並把數據通過hiveserver返回到client端,hiveserver的核心是基於Thrift,Thrift負責hive的查詢服務,Thtift是構建跨平台的rpc框架,主要由四層組成:server,Transport,Protocol和處理器。