日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hive基本概念

發(fā)布時間:2024/2/28 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hive基本概念 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Hive基本概念


目錄

  • 什么是Hive
  • Hive的優(yōu)缺點
  • Hive架構(gòu)原理
  • Hive和數(shù)據(jù)庫比較

  • 1. 什么是Hive

  • Hive:由 Facebook 開源用于解決海量結(jié)構(gòu)化日志的數(shù)據(jù)統(tǒng)計框架。
  • Hive 是基于 Hadoop 的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張表,并提供了類 SQL 查詢功能。
  • 本質(zhì)是:將 HQL 轉(zhuǎn)化成 MapReduce 程序。
    • Hive 處理的數(shù)據(jù)存儲在 HDFS。
    • Hive 分析數(shù)據(jù)底層的實現(xiàn)是 MapReduce。
    • 執(zhí)行程序運行在 Yarn 上。

    2. Hive的優(yōu)缺點

    1. 優(yōu)點
  • 操作接口采用類 SQL 語法,提供快速開發(fā)的能力(簡單,容易上手)。
  • 避免了去寫 MapReduce,減少開發(fā)人員的學(xué)習(xí)成本。
  • Hive 的執(zhí)行延遲比較高,因此 Hive 常用于數(shù)據(jù)分析,對實時性要求不高的場合。
  • Hive 的優(yōu)勢在于處理大數(shù)據(jù),對于處理小數(shù)據(jù)沒有優(yōu)勢,因為 Hive 的執(zhí)行延遲比較高。
  • Hive 支持用戶自定義函數(shù),用戶可以根據(jù)自己的需求實現(xiàn)自己的函數(shù)。
  • 2. 缺點
  • Hive 的 HQL 的表達(dá)能力有限。

  • 迭代式算法無法表達(dá)。
  • 數(shù)據(jù)挖掘方面不擅長,由于 MapReduce 數(shù)據(jù)處理流程的限制,效率更高的算法卻無法實現(xiàn)。
  • Hive 的效率比較低

  • Hive 自動生成的 MapReduce 作業(yè),通常情況下不夠智能化。
  • Hive 調(diào)優(yōu)比較困難,粒度較粗。

  • 3. Hive架構(gòu)原理

  • 用戶接口:Client
    CLI(command-line interface)、JDBC/ODBC(jdbc 訪問 hive)、WEBUI(游覽器訪問 hive)

  • 元數(shù)據(jù):Matestore
    元數(shù)據(jù)包括:表名、表所屬的數(shù)據(jù)庫(默認(rèn)為default)、表的擁有者、列/分區(qū)字段、表的類型(是否為外部表)、表的數(shù)據(jù)所在目錄等。
    默認(rèn)存儲在自帶的 derby 數(shù)據(jù)庫中,推薦使用 MySQL 存儲 Metastore。

  • Hadoop
    使用 HDFS 進(jìn)行存儲,使用 MapReduce 進(jìn)行計算。

  • 驅(qū)動器:Driver

  • 解析器(SQL Parser):將 SQL 字符串轉(zhuǎn)換成抽象語法樹 AST,這一步一般都用第三方工具庫完成,比如 antlr;對 AST 進(jìn)行語法分析,比如表是否存在、字段是否存在、SQL語義是否有誤。
  • 編譯器(Physical Plan):將 AST 編譯生成邏輯執(zhí)行計算。
  • 優(yōu)化器(Query Optimizer):對邏輯執(zhí)行計劃進(jìn)行優(yōu)化。
  • 執(zhí)行器(Execution):把邏輯執(zhí)行計算轉(zhuǎn)換成可以運行的物理計劃。對于 Hive 來說,就是MR/Spark。

  • Hive通過給用戶提供的一系列交互接口,接收到用戶的指令(SQL),使用自己的Driver,結(jié)合元數(shù)據(jù)(MetaStore),將這些指令翻譯成MapReduce,提交到Hadoop中執(zhí)行,最后,將執(zhí)行返回的結(jié)果輸出到用戶交互接口。


    4. Hive和數(shù)據(jù)庫比較

    由于 Hive 采用了類似SQL 的查詢語言 HQL(Hive Query Language),因此很容易將 Hive 理解為數(shù)據(jù)庫。其實從結(jié)構(gòu)上來看,Hive 和數(shù)據(jù)庫除了擁有類似的查詢語言,再無類似之處。本文將從多個方面來闡述 Hive 和數(shù)據(jù)庫的差異。數(shù)據(jù)庫可以用在 Online 的應(yīng)用中,但是Hive 是為數(shù)據(jù)倉庫而設(shè)計的,清楚這一點,有助于從應(yīng)用角度理解 Hive 的特性。

  • 查詢語言
    由于SQL被廣泛的應(yīng)用在數(shù)據(jù)倉庫中,因此,專門針對Hive的特性設(shè)計了類SQL的查詢語言HQL。熟悉SQL開發(fā)的開發(fā)者可以很方便的使用Hive進(jìn)行開發(fā)。
  • 數(shù)據(jù)存儲位置
    Hive 是建立在 Hadoop 之上的,所有 Hive 的數(shù)據(jù)都是存儲在 HDFS 中的。而數(shù)據(jù)庫則可以將數(shù)據(jù)保存在塊設(shè)備或者本地文件系統(tǒng)中。
  • 數(shù)據(jù)更新
    由于Hive是針對數(shù)據(jù)倉庫應(yīng)用設(shè)計的,而數(shù)據(jù)倉庫的內(nèi)容是讀多寫少的。因此,Hive中不建議對數(shù)據(jù)的改寫,所有的數(shù)據(jù)都是在加載的時候確定好的。而數(shù)據(jù)庫中的數(shù)據(jù)通常是需要經(jīng)常進(jìn)行修改的,因此可以使用 INSERT INTO … VALUES 添加數(shù)據(jù),使用 UPDATE … SET修改數(shù)據(jù)。
  • 執(zhí)行
    Hive中大多數(shù)查詢的執(zhí)行是通過 Hadoop 提供的 MapReduce 來實現(xiàn)的。而數(shù)據(jù)庫通常有自己的執(zhí)行引擎。
  • 執(zhí)行延遲
    Hive 在查詢數(shù)據(jù)的時候,由于沒有索引,需要掃描整個表,因此延遲較高。另外一個導(dǎo)致 Hive 執(zhí)行延遲高的因素是 MapReduce框架。由于MapReduce 本身具有較高的延遲,因此在利用MapReduce 執(zhí)行Hive查詢時,也會有較高的延遲。相對的,數(shù)據(jù)庫的執(zhí)行延遲較低。當(dāng)然,這個低是有條件的,即數(shù)據(jù)規(guī)模較小,當(dāng)數(shù)據(jù)規(guī)模大到超過數(shù)據(jù)庫的處理能力的時候,Hive的并行計算顯然能體現(xiàn)出優(yōu)勢。
  • 可擴(kuò)展性
    由于Hive是建立在Hadoop之上的,因此Hive的可擴(kuò)展性是和Hadoop的可擴(kuò)展性是一致的(世界上最大的Hadoop 集群在 Yahoo!,2009年的規(guī)模在4000 臺節(jié)點左右)。而數(shù)據(jù)庫由于 ACID 語義的嚴(yán)格限制,擴(kuò)展性非常有限。目前最先進(jìn)的并行數(shù)據(jù)庫 Oracle 在理論上的擴(kuò)展能力也只有100臺左右。
  • 數(shù)據(jù)規(guī)模
    由于Hive建立在集群上并可以利用MapReduce進(jìn)行并行計算,因此可以支持很大規(guī)模的數(shù)據(jù);對應(yīng)的,數(shù)據(jù)庫可以支持的數(shù)據(jù)規(guī)模較小。
  • 總結(jié)

    以上是生活随笔為你收集整理的Hive基本概念的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。