Hive安裝與詳解

簡介

一、Hadoop開發存在的問題

  1. 只能用java語言開發,如果是c語言或其他語言的程序員用Hadoop,存在語言門檻
  2. 需要對Hadoop底層原理,api比較瞭解才能做開發
  3. 開發調試比較麻煩

二、Hive概述

  1. Hive是基於Hadoop的一個數據倉庫工具。可以將結構化的數據文件映射爲一張表,並提供完整的sql查詢功能
  2. 底層是將sql語句轉換爲MapReduce任務進行運行
  3. Hive提供了一系列的工具,可以用來進行數據提取、轉化、加載(ETL Extract-Transform-Load ),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制
  4. 本質上是一種大數據離線分析工具

三、Hive的HQL

  1. HQL - Hive通過類SQL的語法,來進行分佈式的計算
  2. HQL用起來和SQL非常的類似,Hive在執行的過程中會將HQL轉換爲MapReduce去執行,所以Hive其實是基於Hadoop的一種分佈式計算框架,底層仍然是MapReduce

四、特點

  1. 優點:
    a. 學習成本低,只要會sql就能用hive
    b. 開發效率高,不需要編程,只需要寫sql
    c. 模型簡單,易於理解
    d. 針對海量數據的高性能查詢和分析
    e. HiveQL 靈活的可擴展性(Extendibility)
    f. 高擴展性(Scalability)和容錯性
    g. 與 Hadoop 其他產品完全兼容
  2. 缺點:
    a. 不支持行級別的增刪改
    b. 不支持完整的在線事務處理
    c. 本質上仍然是MR的執行,效率不算高

五、適用場景

  1. Hive 構建在基於靜態(離線)批處理的Hadoop 之上,Hadoop 通常都有較高的延遲並且在作業提交和調度的時候需要大量的開銷。因此,Hive 並不能夠在大規模數據集上實現低延遲快速的查詢因此,Hive 並不適合那些需要低延遲的應用
  2. Hive 並不提供實時的查詢和基於行級的數據更新操作。Hive 的最佳使用場合是大數據集的離線批處理作業,例如,網絡日誌分析。

數據倉庫和數據庫對比

一、數據倉庫和數據庫對比

數據庫 數據倉庫
爲線上系統提供實時數據 爲離線分析存儲歷史數據
具有完整的增刪改查的能力 只支持一次寫入多次查詢,不支持行級別的增刪改
具有完整的事務能力 不強調事務的特性
儘量的避免冗餘,提高存儲和處理的效率 人爲的製造冗, 提高查詢的效率
數據來源單一 數據來源多樣(數據庫,爬蟲,日誌等)

二、OLTP和OLAP對比

  1. 數據庫屬於OLTP系統(Online Transaction Processing)聯機事務處理系統。涵蓋了企業大部分的日常操作,如購物、庫存、製造、銀行、工資、註冊、記賬等。比如Mysql,oracle等關係型數據庫;數據倉庫屬於OLAP系統。(Online Analytical Processing)聯機分析處理系統。Hive,Hbase等
  2. OLTP是面向用戶的、用於程序員的事務處理以及客戶的查詢處理;OLAP是面向市場的,用於知識工人(經理、主管和數據分析人員)的數據分析
  3. OLAP通常會集成多個異構數據源的數據,數量巨大;OLTP系統的訪問由於要保證原子性,所以有事務機制和恢復機制
  4. OLAP系統一般存儲的是歷史數據,所以大部分都是隻讀操作,不需要事務;OLTP系統具有較強的事務

體系結構

在這裏插入圖片描述

1. 用戶接口主要有三個:CLI,JDBC 和 WUI

a. CLI,最常用的模式。實際上在>hive 命令行下操作時,就是利用CLI用戶接口
b. JDBC,通過java代碼操作,需要啓動hiveserver,然後連接操作

2. Metastore

Hive將元數據存儲在數據庫中,如mysql、derby。Hive中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否爲外部表等),表的數據所在目錄等

3. 解釋器(complier)、優化器(optimizer)、執行器(executor)組件

這三個組件用於:HQL語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在HDFS中,並在隨後有MapReduce調用執行

4. Hadoop

Hive的數據存儲在HDFS中,大部分的查詢、計算由MapReduce完成

流程

在這裏插入圖片描述

1.通過客戶端提交一條Hql語句
2.通過complier(編譯組件)對Hql進行詞法分析、語法分析。在這一步,編譯器要知道此hql語句到底要操作哪張表
3.去元數據庫找表信息
4.得到信息
5.complier編譯器提交Hql語句分析方案。
6.1 executor 執行器收到方案後,執行方案(DDL過程)。在這裏注意,執行器在執行方案時,會判斷
如果當前方案不涉及到MR組件,比如爲表添加分區信息、比如字符串操作等,比如簡單的查詢操作等,此時就會直接和元數據庫交互,然後去HDFS上去找具體數據。
如果方案需要轉換成MR job,則會將job 提交給Hadoop的JobTracker。
6.2 MR job完成,並且將運行結果寫入到HDFS上。
6.3 執行器和HDFS交互,獲取結果文件信息。
7.如果客戶端提交Hql語句是帶有查詢結果性的,則會發生:7-8-9步,完成結果的查詢。

安裝Hive

  1. 安裝JDK
    在這裏插入圖片描述
  2. 安裝Hadoop
    在這裏插入圖片描述
  3. 配置JDK和Hadoop的環境變量
    在這裏插入圖片描述
  4. 下載Hive安裝包
    在這裏插入圖片描述
    http://mirror.bit.edu.cn/apache/hive/hive-1.2.2/
  5. 解壓安裝hive
    解壓:tar -xvf apache-hive-1.2.2-bin.tar.gz
    改名:mv apache-hive-1.2.2-bin hive-1.2.2
    我的路徑:/home/software/hive-1.2.2
    在這裏插入圖片描述
  6. 啓動Hadoop的HDFS和Yarn
    之前我們已經裝過hadoop了。所以直接啓動即可,注意hive需要hadoop的支持所以要放到一個機器上
    在這裏插入圖片描述
  7. 進入到bin目錄,啓動Hive:sh hive (或者執行:./hive)

在這裏插入圖片描述
安裝成功
注意如果你用的高版本要看和hadoop的兼容。

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