Hive學習之路(一)Hive初識

Hive簡介

什麼是Hive

  1. Hive由Facebook實現並開源
  2. 是基於Hadoop的一個數據倉庫工具
  3. 能夠將結構化的數據映射爲一張數據庫表
  4. 提供HQL(Hive SQL)查詢功能
  5. 底層數據是存儲在HDFS上
  6. Hive的本質是將SQL語句轉換爲MapReduce任務運行
  7. 使不熟悉MapReduce的用戶很方便地利用HQL處理和計算HDFS上的結構化數據,適用於離線的批量數據計算

爲何使用Hive

​ 直接使用MapReduce所面臨的問題:mysql

  1. 人員學習成本過高
  2. 項目週期要求過短
  3. MapReduce實現複雜查詢邏輯開發難度太大

爲何要使用Hive:web

  1. 更友好的接口:操做接口採用類SQL的語句,提供快速開發的能力
  2. 更低的學習成本:避免了寫MapReduce,減小開發人員的學習成本
  3. 更好的擴展性:可自由擴展集羣規模而無需重啓服務,還支持用戶自定義函數

Hive的特色

​ 優勢:sql

  1. 可擴展性、橫向擴展:Hive能夠自由的擴展集羣的規模,通常狀況下不須要重啓服務。shell

    • 橫向擴展:經過分擔壓力的方式擴展集羣的規模
    • 縱向擴展:一臺服務器cpu i7
  2. 延展性:數據庫

  3. 良好的容錯性服務器

    缺點:架構

  4. Hive不支持記錄級別的增刪改查
  5. Hive的查詢延遲很嚴重
  6. Hive不支持事務編輯器

Hive和RDBMS的對比

對比項 Hive RDBMS
查詢語言 HQL SQL
數據存儲 HDFS Raw Device or Local FS
執行器 MapReduce Executor
數據插入 支持批量導入/單條插入 支持批量導入/單條插入
處理數據規模
執行延遲
分區 支持 支持
索引 0.8版本以後加入簡單索引 支持複雜的索引
擴展性 高(好) 有限(查)
數據加載模式 讀時模式(快) 寫時模式(慢)
應用場景 海量數據查詢 實時查詢

總結:函數

​ Hive具備SQL數據庫的外表,但應用場景徹底不一樣,Hive只適合用來作海量離線數據統計分析,也就是數據倉庫。工具

Hive架構

image-20190818224859270

1. 用戶接口:shell/CLI,jdbc/odbc.webui Command Line Interface

CLI,Shell終端命令行(Command Line Interface),採用交互形式使用hive命令與Hive進行交互,最經常使用(學習,調試,生產)

2.跨語言服務:thrift server 提供了一種能力,讓用戶可使用多種不一樣的語言來操做Hive

3.底層的Driver:驅動器Driver,編輯器Compiler,優化器Optimizer,執行器Executor

4.元數據存儲系統:RDBMS MySQL

元數據:通俗的講,就是存儲在Hive中的數據的描述信息。

相關文章
相關標籤/搜索