大數據開發:Hive調優的幾種思路

2021-01-11 成都加米谷大數據

在大數據技術生態當中,Hive調優是實際運行當中常常面臨的問題,企業級的數據平臺,隨著數據規模的不斷增長,要想更高效率地運行下去,就需要根據實際情況來進行優化。今天的大數據開發分享,我們就主要來講講,Hive調優的幾種思路。Hive擁有較多在特定情況下優化的特性,如何利用好相關特性,是Hive性能調優的關鍵。

一、本地模式當一個MapReduce任務的數據量和計算任務很小的時候,在MapReduce框架中Map任務和Reduce任務的啟動過程佔用了任務執行的大部分時間,真正的邏輯處理其實佔用時間很少,但是給用戶的感受就是:很小的任務,同樣執行較長的時間。那麼在0.7版本之後,Hive引入了本地模式,那麼對於小任務的執行,Hive客戶端不再需要到Yarn上申請Map任務和Reduce任務,只需要在本地進行Map和Reduce的執行,大大的加快了小任務的執行時間,通常可以把分鐘級別任務的執行時間降低秒級。參數設置:

實際測試中,使用本地模式之後,對於小表的計算查詢能從34秒減少到2秒。二、並行模式Hive的Parallel特性使得某些任務中的stage子任務以並行執行模式同時執行,相對於一直串行執行stage任務來說有效地提升資源利用率。Parallel特性主要針對如下幾種情況:多個數據表關聯插入多個目標表UNION ALL參數設置:

實際測試中,選用TDC-DS中的Q11,從對比結果看,在使用Parallel特性之後,由原來的743秒減少到600秒,在並行任務數據量較大,集群資源較充足,計算較複雜的情況下,任務執行效率提升會更加明顯。三、嚴格模式Hive提供一個嚴格模式,可以防止用戶執行那些可能產生意想不到的影響查詢。參數設置:

通過設置hive.mapred.mode的值為strict,開啟嚴格模式可以禁止3種類型的查詢:(1)對於分區表,要求必須限定分區欄位,換句話說就是不允許掃描所有的分區,這是因為通常所有分區的數據量都比較大,這樣可以避免消耗大量資源。(2)對於使用order by的查詢,要求必須使用limit語句,因為order by為了執行排序過程會將所有的結果數據分發到同一個reducer中進行處理,這樣可以避免reducer執行過長的時間。(3)限制笛卡爾積查詢,要求兩張表join時必須有on語句。四、Uber模式Uber模式準確的說並不是Hive的優化特性,是Yarn上針對MR小作業的優化機制,如果job任務足夠小,則直接讓任務串行的在MRAppMaster完成,這樣整個Application只會使用一個Container(JVM重用功能),相對於分配多個Container來說執行效率要高很多。參數設置:

僅僅滿足以上四個參數還不行,因為作業是在AM所在的Container中運行,Uber任務執行還應滿足如下條件:(1)Map內存設置(mapreduce.map.memory.mb)和Reduce內存設置(mapreduce.reduce.memory.mb)必須小於等於AM所在容器內存大小設置(yarn.app.mapreduce.am.resource.mb)。(2)Map配置的vcores(mapreduce.map.cpu.vcores)個數和Reduce配置的vcores(mapreduce.reduce.cpu.vcores)個數也必須小於等於AM所在容器vcores個數的設置(yarn.app.mapreduce.am.resource.cpu-vcores)。關於大數據開發,Hive調優的幾種思路,以上就為大家做了詳細的介紹了。Hive的優化,對於提升運行效率是非常重要的,要做好Hive調優,需要結合實際場景去綜合考量。

相關焦點

  • Hive數據倉庫實戰
    \t分隔符,會和Hive表裡的\t分隔符混淆,這樣這一行數據會多出幾列,造成列錯亂。,如果觸發了最快也得幾秒左右。實際工作中UDF用的最多,下面我們重點講一下第一種UDF函數,也就是用戶定義函數(user-defined function)UDF,我們統一簡稱為UDF。
  • Spark在360商業數據部的應用實踐
    數據處理的實時鏈路如所示:1) 1種方式是通過Apache Flume實時寫入Hdfs,用於第二天全量數據的離線計算2) 1種方式是通過SparkSteaming實時處理,處理後數據會回流至Kafka或者Redis,便於後續流程使用。
  • 大數據BI系統實操總結:如何做數據採集?
    近段時間有幸參與負責了一個大數據項目,今天主要對採集系統做一次簡單的復盤:數據採集系統故名思意就是將數據從數據源採集到能夠支撐大數據架構環境中,從而實現數據的採集以便後期對數據的二次加工建立數據倉庫。,第一點主題模型我們今天不做過多的介紹,著重從2~4點分析可以將採集系統劃分為數據源配置、表結構的管理、源表管理、映射配置和採集任務管理幾大模塊。
  • 大數據開發是做什麼的?需要具備什麼技能?
    大數據開發、數據倉庫、數據安全、數據分析、數據挖掘等都是圍繞大數據的商業價值應運而生。大數據開發主要分為大數據平臺開發(研發級)、大數據應用開發和大數據分析(統計學和機器學習),不同崗位需要面對不同的崗位職責,也需要具備不同的知識結構。大數據開發做什麼?
  • hive中兩個數的和怎麼超市_hive中hive中月,天的數據導入兩級分區...
    暑假實習使用了兩個月的odps ,回學校看了下hadoop 的hive ,讓我對資料庫與數據倉庫增進了一些理解,記錄下來。簡而言之,資料庫是面向事務的設計,數據倉庫是面向主題設計的。資料庫一般存儲在線交易數據,數據倉庫存儲的一般是歷史數據。
  • 交通銀行招軟體開發、數據開發、應用安全等崗位工程師
    工作地點:上海截止日期:2021-06-30軟體開發工程師職位描述:(1)承擔計算機應用系統的設計、開發、單元測試等工作,編寫和完善技術文檔;(2)參與業務需求分析、架構方案設計、應用系統軟體開發、測試、運行維護、配合業務部門推廣等工作;(3)參與對分行提供應用系統技術培訓
  • 大數據分析與數據分析的根本區別在哪裡?
    作者:CDA數據分析師大數據分析與數據分析這幾年一直都是個高頻詞,很多人都開始紛紛轉行到這個領域,也有不少人開始躍躍欲試,想找準時機進到大數據或數據分析領域。如今大數據分析和數據分析火爆,要說時機,可謂處處都是時機,關鍵要明了的一點是,大數據分析和數據分析兩者的根本區別在哪裡,只有真正了解了,才會知曉更加適合自己的領域是大數據分析師還是數據分析師。畢竟職場如戰場,時間就是生活,不容兒戲,更不容怠慢。下面我來好好告訴大家兩者的本質區別到底是什麼!大數據分析:指無法在可承受的時間範圍內用常規軟體工具進行捕捉、管理和處理的數據集合。
  • 大數據分析工程師入門9-Spark SQL
    本文為《大數據分析師入門課程》系列的第9篇,在本系列的第8篇-Spark基礎中,已經對Spark做了一個入門介紹,在此基礎上本篇拎出Spark SQL,主要站在使用者的角度來進行講解,需要注意的是本文中的例子的代碼均使用Scala語言。
  • Hive建表和內外部表的使用
    load data local inpath '/data/hivetest/stu_info_local' into table stu_info;load data inpath '/data/hivetest/stu_info_local' into table stu_info;
  • GC調優在Spark應用中的實踐
    Spark是時下非常熱門的大數據計算框架,以其卓越的性能優勢、獨特的架構、易用的用戶接口和豐富的分析計算庫,正在工業界獲得越來越廣泛的應用。與Hadoop、HBase生態圈的眾多項目一樣,Spark的運行離不開JVM的支持。由於Spark立足於內存計算,常常需要在內存中存放大量數據,因此也更依賴JVM的垃圾回收機制(GC)。
  • 大數據基礎知識:Hadoop分布式系統介紹
    隨著智能化、萬物互聯時代的快速發展,數據量開始暴增,一方面我們需要開始思考如何高效可靠地存儲海量的數據,另一方面我們還需要對這些數據進行分析處理,以獲得更多有價值的信息。這時期我們就需要用到Hadoop了。
  • XGBoost 重要關鍵參數及調優步驟
    3. max_depth [default=6]樹的最大深度,值越大,樹越大,模型越複雜 可以用來防止過擬合,典型值是3-10。雖然大部分數據科學家很少用到這個參數,但是這個參數在減少過擬合上還是可以挖掘出更多用處的。
  • 大數據開發基礎:Java基礎數據類型
    在Java基礎入門學習階段,Java基礎數據類型無疑是基礎當中的重點,掌握基礎數據類型,對於後續去理解和掌握更深入的理論,是有緊密的關聯性的。今天的大數據開發基礎分享,我們就來講講,Java八種基礎數據類型。
  • Java大數據開發實習面經
    百度(某邊緣部門)-大數據開發(偏數倉和離線計算)一面(線上):首先說一下面試體驗
  • 【大數據】最新大數據學習路線(完整詳細版】
    大數據學習路線java(Java se,javaweb)Linux(shell,高並發架構,lucene,solr)Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume)機器學習(R,mahout)Storm(Storm,kafka
  • SEM優化常用的幾種數據分析方法
    SEM優化工作少不了做分析報表,而數據分析不僅僅是為了發現問題,為解決問題提供參考數據,也是對推廣效果的直觀展現方式,善用工具,能事半功倍地掌握工作,並及時作出調整。簡而言之,數據分析就是為了幫助我們對工作做到心中有數。
  • 高中數學:解不等式的幾種思路你都會了嗎?
    思路一:我們直接按照第一問的方法,對不等式脫去絕對值討論:我們將 m 在不同取值情況下的不等式的解求出來了,我們令求出來的解集和題目給出的 x 小於等於 -2 相等,解出此時 m 的值。可以解得 m = -14,或者 m = 6。
  • 大廠必知必會——G1收集器詳解及調優
    右邊的請求超時個數是之前的10倍(涉及到公司業務保密,相關監控數據打碼處理)然後看了服務的GC,果然單次gc的時間比之前增加了不少。當時立馬找了下遊的服務,告訴我這部分的超時是在範圍允許之內的,心裡終於鬆了一口氣。於是繼續搞其他的業務去了,雖然我故作淡定,其實當時心裡已經慌的不行了。
  • hadoop基礎知識介紹_hadoop是什麼語言開發的_hadoop能做什麼
    hadoop大數據處理的意義 Hadoop得以在大數據處理應用中廣泛應用得益於其自身在數據提取、變形和加載(ETL)方面上的天然優勢。那麼對於這種 超大數據文件怎麼得到我們想要的結果呢? 有種方法 就是分布式計算, 分布式計算的核心就在於 利用分布式算法 把運行在單臺機器上的程序擴展到多臺機器上並行運行。從而使數據處理能力成倍增加。但是這種分布式計算一般對編程人員要求很高,而且對伺服器也有要求。導致了成本變得非常高。
  • 對比解讀五種主流大數據架構的數據分析能力 - 大數據_CIO時代網...
    在一系列的問題下,以Hadoop體系為首的大數據分析平臺逐漸表現出優異性,圍繞Hadoop體系的生態圈也不斷變大,對於Hadoop系統來說,從根本上解決了傳統數據倉庫瓶頸的問題,但是也帶來一系列的新問題:  從數據倉庫升級到大數據架構,是不具備平滑演進的,基本等於推翻重做;  大數據下的分布式存儲強調數據的只讀性質,所以類似於Hive、HDFS這些存儲方式都不支持