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