IT系統運維-MaxCompute簡介
2020-05-01 17:29 作者:艾銻無限 瀏覽量:
MaxCompute是什么?
近幾年,大數據云計算等詞充斥在各大技術社區,今天給大家講講大數據計算MaxCompute供廣大
IT系統運維參考。MaxCompute(原ODPS,Open Data Processing Service)是一項大數據計算服務,它能提供快速、完全托管的PB級數據倉庫解決方案。主要提供了四大功能:數據通道、結構化存儲、多計算模型、數據
安全運維。
1.數據通道
· 批量/歷史數據通道--tunnel
適合于全量數據或歷史數據的導入、導出;
· 實時/增量數據通道--DataHub
該服務具有延遲低的特點,適合增量數據的導入,同時還支持多種數據傳輸的插件,如logstash、flume、fluentd、sqoop、logservice等。
2.數據存儲
· 數據進入maxcompute后,默認會以結構化的方式存儲,且有自己的數據類型,如Bigint, Boolean, Double, Datetime, String, Decimal;
· 數據上傳后,以列壓縮的方式存儲到盤古上。這種壓縮方式的好處就是對于文本類型的數據,一般都能取得較好的壓縮比,一般是4:1。
3.多計算模型
1)SQL
· MaxCompute SQL采用標準的SQL語法,兼容部分Hive語法。在語法上和HQL非常接近,熟悉SQL或HQL的編程人員都容易上手;
· MaxCompute提供更高效的計算框架支持SQL計算模型,執行效率比普通的MapReduce模型更高;
· 需要注意的是,MaxCompute SQL不支持事務、索引及Update/Delete等操作。
2)MapReduce
· MaxCompute提供的Java MapReduce編程模型;
· 由于MaxCompute并沒有開放文件接口,用戶只能通過它所提供的Table讀寫數據;
· 更為重要的是,MaxCompute還提供了基于MapReduce的擴展計算模型, 即MR2。在該模型下,一個Map函數后,可以接入連續多個Reduce函數。
3)Graph
· 對于某些復雜的迭代計算場景,例如:K-Means,PageRank等,如果仍然使用MapReduce來完成這些計算任務將是非常耗時的。MaxCompute提供的Graph模型能夠非常好的完成這一類計算任務。
MaxCompute優化原則
1.選表原則
· 選擇滿足需求的小表,比如匯總表。維表盡量選擇全量表,事實表盡量選擇增量表;
· 選擇產出早的表;
· 選擇可回滾的表,比如使用加購事件表代替加購全流程表;
· 依賴的N個上游表,盡量保證上游產出時間要均勻,如果有差異,考慮換依賴表;
2.小表原則
· 行數小于100萬的表認為是小表,這個時候使用mapjoin性能會提高很多;
· 讀取數據的時候要加上分區等過濾條件,大表變小表。常用過濾條件字段,做成動態分區,方便下游過濾;
· 不得不讀取N天大表的時候,使用unionall方式合并多天數據;
3.代碼原則
· Join關聯要盡可能是主鍵關聯。關聯字段類型要一致;
· 多天匯總,先生成1天輕度匯總表,多天使用1天數據再匯總;
· multiinsert,實現一次讀取多次寫入;
· 使用系統UDF代替自己的寫的UDF;
4.調度原則
· 依賴max_pt的,要排除當天依賴;
· 上游是小時任務,使用max_pt要慎重;
· 執行超過1個小時任務要關注;
MaxCompute應用限制
1.SQL限制
· 多路輸出限制:單個SQL里最多可以寫128路輸出,超過128路報語法錯誤;
· 動態輸出分區限制:任意動態分區SQL不允許生成超過2000個動態分區,否則引發運行時異常;
· Select屏顯限制:Select屏顯結果最多只有10000條輸出;
· Order by語句后必須接Limit;
· Sort By必須與Distribute By配合使用;
· 最多允許128路union all,超過此限制報語法錯誤;
· MaxCompute 的JOIN支持多路間接,但不支持笛卡爾積,即無on條件的鏈接;
· MaxCompute中的Join連接條件,只允許and連接的等值條件,并且最多支持16路join操作。只有在MAPJOIN中,可以使用不等值連接或者使用or連接多個條件;
· 目前MaxCompute 在mapjoin中最多支持指定6張小表,否則報語法錯誤;
· 如果使用mapjoin,則所有小表占用的內存總和不得超過512MB。請注意由于MaxCompute 是壓縮存儲,因此小表在被加載到內存后,數據大小會急劇膨脹。此處的512MB限制是加載到內存后的空間大小;
· 多個表join時,最左邊的兩個表不能同時是mapjoin的表;
2.MapReduce限制
· 單個任務引用的資源數量不超過512個,分區表按照一個單位計算。
· 單個任務引用的資源總計字節數大小不超過64MB。
· 單個任務的輸入路數不能超過128,單個任務的輸出路數不能超過128路。
· 單個任務中自定義Counter的數量不能超過64。
· 單個Map或Reduce Worker占用memory默認為2048MB,范圍[256MB, 12GB]。
· 單個Map或Reduce Worker重復讀一個資源次數限制 <=64次。
· 本地運行模式下,Map Worker個數不能超過100;Reduce Worker個數不能超過100;默認一路輸入下載記錄數100。
艾銻無限科技專業:IT外包、
企業外包、
北京IT外包、桌面運維、
弱電工程、網站開發、wifi覆蓋方案,
網絡外包,網絡管理服務,
網管外包,綜合布線,服務器運維服務,
中小企業it外包服務,服務器維保公司,硬件運維,網站運維服務
以上文章由北京艾銻無限科技發展有限公司整理