<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Hive一文深入淺出

          共 4110字,需瀏覽 9分鐘

           ·

          2021-03-31 19:58

          本文來源:http://r6d.cn/bemp7

          Hive概述

          數(shù)據(jù)倉庫的概念:

          數(shù)據(jù)倉庫(Data Warehouse)是一個面向主題的(Subject Oriented)、集成的(Integrated)、相對穩(wěn)定的(Non-Volatile)、反映歷史變化(Time Variant)的數(shù)據(jù)集合,用于支持管理決策。

          傳統(tǒng)數(shù)據(jù)倉庫面臨的挑戰(zhàn):

          1. 無法滿足快速增長的海量數(shù)據(jù)存儲需求。
          2. 無法有效處理不同類型的數(shù)據(jù)。
          3. 計算和處理能力不足。

          Hive簡介:

          • Hive是一個構(gòu)建于Hadoop頂層的數(shù)據(jù)倉庫工具,可以查詢和管理PB級別的分布式數(shù)據(jù)。
          • 支持大規(guī)模數(shù)據(jù)存儲、分析,具有良好的可擴展性
          • 某種程度上可以看作是用戶編程接口,本身不存儲和處理數(shù)據(jù)。
          • 依賴分布式文件系統(tǒng)HDFS存儲數(shù)據(jù)。
          • 依賴分布式并行計算模型MapReduce處理數(shù)據(jù)。
          • 定義了簡單的類似SQL 的查詢語言——HiveQL。
          • 用戶可以通過編寫的HiveQL語句運行MapReduce任務。
          • 可以很容易把原來構(gòu)建在關(guān)系數(shù)據(jù)庫上的數(shù)據(jù)倉庫應用程序移植到Hadoop平臺上。
          • 是一個可以提供有效、合理、直觀組織和使用數(shù)據(jù)的分析工具。

          Hive具有的特點非常適用于數(shù)據(jù)倉庫。

          (1)采用批處理方式處理海量數(shù)據(jù)

          • Hive需要把HiveQL語句轉(zhuǎn)換成MapReduce任務進行運行。
          • 數(shù)據(jù)倉庫存儲的是靜態(tài)數(shù)據(jù),對靜態(tài)數(shù)據(jù)的分析適合采用批處理方式,不需要快速響應給出結(jié)果,而且數(shù)據(jù)本身也不會頻繁變化。

          (2)提供適合數(shù)據(jù)倉庫操作的工具

          • Hive本身提供了一系列對數(shù)據(jù)進行提取、轉(zhuǎn)換、加載(ETL)的工具,可以存儲、查詢和分析存儲在Hadoop中的大規(guī)模數(shù)據(jù)。
          • 這些工具能夠很好地滿足數(shù)據(jù)倉庫各種應用場景。

          (3)支持MapReduce,Tez,Spark等多種計算引擎。

          (4)可以直接訪問HDFS文件以及HBase。

          (5)易用易編程。

          Hive與Hadoop生態(tài)系統(tǒng)中其他組件的關(guān)系:

          Hadoop

          圖:Hadoop生態(tài)系統(tǒng)

          • Hive依賴于HDFS 存儲數(shù)據(jù)
          • Hive依賴于MapReduce 處理數(shù)據(jù)
          • 在某些場景下Pig可以作為Hive的替代工具
          • HBase 提供數(shù)據(jù)的實時訪問

          Hive的優(yōu)缺點:

          Hive的優(yōu)點:

          1. 高可靠、高容錯:HiveServer采用集群模式。雙MetaStor。超時重試機制。
          2. 類SQL:類似SQL語法,內(nèi)置大量函數(shù)。
          3. 可擴展:自定義存儲格式,自定義函數(shù)。
          4. 多接口:Beeline,JDBC,ODBC,Python,Thrift。

          Hive的缺點:

          1. 延遲較高:默認MR為執(zhí)行引擎,MR延遲較高。
          2. 不支持霧化視圖:Hive支持普通視圖,不支持霧化視圖。Hive不能再視圖上更新、插入、刪除數(shù)據(jù)。
          3. 不適用OLTP:暫不支持列級別的數(shù)據(jù)添加、更新、刪除操作。
          4. 暫不支持存儲過程:當前版本不支持存儲過程,只能通過UDF來實現(xiàn)一些邏輯處理。

          Hive與傳統(tǒng)數(shù)據(jù)庫的對比分析:

          Hive在很多方面和傳統(tǒng)的關(guān)系數(shù)據(jù)庫類似,但是它的底層依賴的是HDFS和MapReduce,所以在很多方面又有別于傳統(tǒng)數(shù)據(jù)庫。

          對比1
          對比2

          Hive在企業(yè)中的部署和作用:

          Hive在企業(yè)大數(shù)據(jù)分析平臺中的應用:

          Hive

          圖:企業(yè)中一種常見的大數(shù)據(jù)分析平臺部署框架

          Hive在Facebook公司中的應用:

          • 基于Oracle的數(shù)據(jù)倉庫系統(tǒng)已經(jīng)無法滿足激增的業(yè)務需求
          • Facebook公司開發(fā)了數(shù)據(jù)倉庫工具Hive,并在企業(yè)內(nèi)部進行了大量部署

          Hive在FusionInsight中的位置:

          位置

          圖:Hive在FusionInsight中的位置

          Hive是一種數(shù)據(jù)倉庫處理工具,使用類SQL的HiveQL語言實現(xiàn)數(shù)據(jù)查詢功能,所有的Hive數(shù)據(jù)都存儲在HDFS中。

          Hive應用場景:

          1. 數(shù)據(jù)挖掘:用戶行為分析;興趣分區(qū);區(qū)域展示;
          2. 非實時分析:日志分析;文本分析。
          3. 數(shù)據(jù)匯總:每天/每周用戶點擊數(shù),流量統(tǒng)計。
          4. 數(shù)據(jù)倉庫:數(shù)據(jù)抽取,加載,轉(zhuǎn)換(ETL)。

          Hive功能與架構(gòu)

          Hive系統(tǒng)架構(gòu):

          架構(gòu)
          Hive架構(gòu)

          圖:Hive系統(tǒng)架構(gòu)

          用戶接口模塊包括CLI、HWI、JDBC、ODBC、Thrift Server。

          驅(qū)動模塊(Driver)包括編譯器、優(yōu)化器、執(zhí)行器等,負責把HiveSQL語句轉(zhuǎn)換成一系列MapReduce作業(yè)。

          元數(shù)據(jù)存儲模塊(Metastore)是一個獨立的關(guān)系型數(shù)據(jù)庫(自帶derby數(shù)據(jù)庫,或MySQL數(shù)據(jù)庫)。

          FusionInsight HD中Hive的架構(gòu):

          Fusion

          圖:FusionInsight中Hive的架構(gòu)

          Hive分為三個角色:HiveServer、MetaStore、WebHcat。

          • HiveServer:將用戶提交的HQL語句進行編譯,解析成對應的Yarn任務,Spark任務或者HDFS操作,從而完成數(shù)據(jù)的提取,轉(zhuǎn)換,分析。
          • MetaStroe:提供元數(shù)據(jù)服務。
          • WebHcat:對外提供基于Htpps洗衣的元數(shù)據(jù)訪問、DDL查詢等服務。

          HCatalog架構(gòu):

          HCatalog

          圖:HCatalog架構(gòu)

          HCatalog包括Hcatalog Client和Hcatalog Server:

          • HCatalog CLient包括命令行工具CLI和Clent jar包(用于給Pig, MR提供元數(shù)據(jù)讀寫支持)。
          • HCatalog通過Hive提供的HiveMetaStoreClent對象來間接訪問MetaStore。
          • HCatalog對外提供Hcatloader,HCatinputFormat來讀取數(shù)據(jù);提供HCatStore,HCatOutputFormat來寫入數(shù)據(jù)。

          WebHCat架構(gòu):

          WebHCat架構(gòu)

          圖:WebHCat架構(gòu)

          WebHCat提供Rest接口,是用戶能夠通過安全的HTTPS協(xié)議執(zhí)行以下操作:

          1. 執(zhí)行Hive DDL操作。
          2. 運行Hive HQL任務。
          3. 運行MapReduce任務。

          Hive數(shù)據(jù)存儲模型:

          數(shù)據(jù)存儲模型

          圖:Hive數(shù)據(jù)存儲模型

          分區(qū):數(shù)據(jù)表可以按照某個字段的值劃分分區(qū)。

          • 每個分區(qū)是一個目錄。
          • 分區(qū)數(shù)量不固定。
          • 分區(qū)下可再有分區(qū)或者桶。

          桶:數(shù)據(jù)可以根據(jù)桶的方式將不同數(shù)據(jù)放入不同的桶中。

          • 每個桶是一個文件。
          • 建表時指定桶個數(shù),桶內(nèi)可排序。
          • 數(shù)據(jù)按照某個字段的值Hash后放入某個桶中。

          Hive可以創(chuàng)建托管表和外部表:

          • 默認創(chuàng)建托管表,Hiva會將數(shù)據(jù)移動到數(shù)據(jù)倉庫的目錄。
          • 創(chuàng)建外部表,這時Hiva會到倉庫目錄以外的位置訪問數(shù)據(jù)。
          • 如果所有處理都由Hive完成,建議使用托管表。
          • 如果要用Hive和其他工具來處理同一個數(shù)據(jù)集,建議使用外部表。
          • 區(qū)別

          Hive支持的函數(shù):

          Hive內(nèi)置函數(shù):

          1. 數(shù)據(jù)函數(shù):如round(),fllor(), abs(), rand()等。
          2. 日期函數(shù):如to_date(), month(), day().
          3. 字符串函數(shù),如trim(), length(), substr()等。

          UDF(User-Defined Funcation)用戶自定義函數(shù)。

          Hive工作原理:

          (1)SQL語句轉(zhuǎn)換成MapReduce作業(yè)的基本原理:

          jion

          圖:join的實現(xiàn)原理

          group

          圖:group by實現(xiàn)原理

          存在一個分組(Group By)操作,其功能是把表Score的不同片段按照rank和level的組合值進行合并,計算不同rank和level的組和值分別有幾條記錄。

          (2)Hive中SQL查詢轉(zhuǎn)換成MapReduce作用的過程:

          當用戶向Hive輸入一段命令或查詢時,Hive需要與Hadoop交互工作來完成該操作:

          1. 驅(qū)動模塊接收該命令或查詢編譯器
          2. 對該命令或查詢進行解析編譯
          3. 由優(yōu)化器對該命令或查詢進行優(yōu)化計算
          4. 該命令或查詢通過執(zhí)行器進行執(zhí)行

          詳細如果如下:

          過程

          圖:SQL查詢轉(zhuǎn)換成MapReduce作業(yè)的過程

          1. 第1步:由Hive驅(qū)動模塊中的編譯器對用戶輸入的SQL語言進行詞法和語法解析,將SQL語句轉(zhuǎn)化為抽象語法樹的形式。
          2. 第2步:抽象語法樹的結(jié)構(gòu)仍很復雜,不方便直接翻譯為MapReduce算法程序,因此,把抽象語法書轉(zhuǎn)化為查詢塊。
          3. 第3步:把查詢塊轉(zhuǎn)換成邏輯查詢計劃,里面包含了許多邏輯操作符。
          4. 第4步:重寫邏輯查詢計劃,進行優(yōu)化,合并多余操作,減少MapReduce任務數(shù)量。
          5. 第5步:將邏輯操作符轉(zhuǎn)換成需要執(zhí)行的具體MapReduce任務。
          6. 第6步:對生成的MapReduce任務進行優(yōu)化,生成最終的MapReduce任務執(zhí)行計劃。
          7. 第7步:由Hive驅(qū)動模塊中的執(zhí)行器,對最終的MapReduce任務進行執(zhí)行輸出。

          幾點說明:

          • 當啟動MapReduce程序時,Hive本身是不會生成MapReduce算法程序的。
          • 需要通過一個表示“Job執(zhí)行計劃”的XML文件驅(qū)動執(zhí)行內(nèi)置的、原生的Mapper和Reducer模塊。
          • Hive通過和JobTracker通信來初始化MapReduce任務,不必直接部署在JobTracker所在的管理節(jié)點上執(zhí)行。
          • 通常在大型集群上,會有專門的網(wǎng)關(guān)機來部署Hive工具。網(wǎng)關(guān)機的作用主要是遠程操作和管理節(jié)點上的JobTracker通信來執(zhí)行任務。
          • 數(shù)據(jù)文件通常存儲在HDFS上,HDFS由名稱節(jié)點管理。

          #Hive增強特性

          Hive增強特性-Colocation:

          Colocation(同分布):將存在關(guān)聯(lián)關(guān)系的數(shù)據(jù)或可能進行管理操作的數(shù)據(jù)存儲在相同的存儲節(jié)點上。

          文件級同分布實現(xiàn)文件的快速訪問,避免了因數(shù)據(jù)搬遷帶來的大量網(wǎng)絡開銷。

          Hive增強特性–Hbase記錄批量刪除:

          在Hive on HBase功能匯總,F(xiàn)usionInsight HD Hive提供了對HBase表的單條數(shù)據(jù)的刪除功能,通過特定的語法,Hive可以將HBase表中符合條件的一條或多條數(shù)據(jù)批量清除。

          Hive增強特性–流控特性:

          通過流控特性,可以實現(xiàn):

          • 當前已經(jīng)建立連接數(shù)據(jù)閾值控制。
          • 每個用戶已經(jīng)建立的連接數(shù)閾值控制。
          • 單位時間內(nèi)所有建立的連接數(shù)閾值控制。

          瀏覽 151
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美精品黄 | 免费日韩黄色电影网站 | 婷婷午夜福利 | 最新中文字幕在线免费观看 | 五月月色色网网 |