您好,登錄后才能下訂單哦!
怎樣分析MaxCompute賬單,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
大計算服務MaxCompute是一款商業(yè)化的大數據分析平臺,其計算資源有預付費和后付費兩種計費方式。并且產品每天按照project為維度進行計量計費(賬單基本情況下會第二天6點前產出)。下面使用的為云上客戶真實數據,故在下文中的截圖都mask掉了。
關于MaxCompute計量計費說明,詳見官方文檔:
cdn.com/98c5157f8a4be2c5e1789b9ecbde657800a6a18e.png">
但是通常情況下,我們在數據開發(fā)階段或者在上線前夕會發(fā)下賬單有波動(通常情況下為增大), 其實用戶首先可以通過自助的方式來分析賬單波動情況,再倒逼自己的作業(yè)進行優(yōu)化。阿里云費用中心就是一個很好的通道,阿里云所有商業(yè)化收費的產品都可以在其中下載費用明細。
通常您需要使用主賬號查看賬單詳情。如果您需要使用子賬號查看賬單信息,請首先參考費用中心RAM配置策略行子賬號授權。
step1:使用主賬號或者被授權的RAM子賬號來登錄阿里云管控臺。
step2:右上角進入費用中心。
包年包月中的 后付費是指項目開通包年包月計算計費模式后,還產生的存儲、下載對應的費用(存儲、下載費用只有后付費)。
step4:為了方便批量分析數據,我們選擇下載使用記錄csv文件在本地分析。
--csv的表頭 項目編號,計量信息編號,數據分類,存儲(Byte),SQL 讀取量(Byte),SQL 復雜度(Byte),公網上行流量(Byte),公網下行流量(Byte),MR 作業(yè)計算,開始時間,結束時間,SQL讀取量_訪問OTS(Byte),SQL讀取量_訪問OSS(Byte)
使用記錄明細字段解釋:
項目編號:當前賬號下或子賬號對應的主賬號的MaxCompute project列表。
計量信息編號:其中會包含存儲、計算、上傳和下載的計費信息編號,SQL為instanceid,上傳和下載為Tunnel sessionid。
數據分類:Storage(存儲)、ComputationSql(計算)、UploadIn(內網上傳)、UploadEx(外網上傳)、DownloadIn(內網下載)、DownloadEx(外網下載)。按照計費規(guī)則其中只有紅色為實際計費項目。
開始時間/結束時間:按照實際作業(yè)執(zhí)行時間進行計量,只有Storage是按照每個小時取一次數據。
存儲(Byte):每小時讀取的存儲量單位為Byte。
SQL 讀取量(Byte):SQL計算項,每一次SQL執(zhí)行時SQL的input數據量,單位為Byte。
SQL 復雜度(Byte):每次執(zhí)行SQL的復雜度,為SQL計費因子之一。
公網上行流量(Byte),公網下行流量(Byte):分別為公網上傳和下載的數據量,單位Byte。
MR作業(yè)計算(CoreSecond):MR作業(yè)的計算時單位為coresecond,需要轉換為計算時hour。
SQL讀取量_訪問OTS(Byte),SQL讀取量_訪問OSS(Byte):外部表實施收費后的讀取數據量,單位Byte。
① 確認CSV文件數據,尤其是列分隔符等(推薦使用UE)。
③ 創(chuàng)建MaxCompute表,存儲下載的消費明細。
DROP TABLE IF EXISTS maxcomputefee ; CREATE TABLE IF NOT EXISTS maxcomputefee ( projectid STRING COMMENT '項目編號' ,feeid STRING COMMENT '計費信息編號' ,type STRING COMMENT '數據分類,包括Storage、ComputationSQL、DownloadEx等' ,starttime DATETIME COMMENT '開始時間' ,storage BIGINT COMMENT '存儲量' ,endtime DATETIME COMMENT '結束時間' ,computationsqlinput BIGINT COMMENT '輸入數據量' ,computationsqlcomplexity DOUBLE COMMENT 'sql復雜度' ,uploadex BIGINT COMMENT '公網上行流量Byte' ,download BIGINT COMMENT '公網下行流量Byte' ,cu_usage DOUBLE COMMENT 'MR計算時*second' ,input_ots BIGINT COMMENT '訪問OTS的數據輸入量' ,input_oss BIGINT COMMENT '訪問OSS的數據輸入量' ) ;
④ Tunnel上傳數據,具體Tunnel的配置詳見官方文檔。
odps@ sz_mc>tunnel upload /Users/yangyi/Desktop/ODPS_2019-01-12_2019-01-14.csv maxcomputefee -c "UTF-8">
當然用戶也可以通過DataWorks數據導入的功能來進行,具體詳見操作步驟。
⑤ 驗證數據。
云上客戶使用MaxCompute,95%的用戶通過SQL即可滿足需求,SQL也在消費成長中占據了絕大部分。
SQL費用=一次SQL計算費用 = 計算輸入數據量 SQL復雜度 0.3元/GB
--分析SQL消費,按照SQL進行排行 SELECT to_char(endtime,'yyyymmdd') as ds,feeid as instanceid ,projectid ,computationsqlcomplexity --復雜度 ,SUM((computationsqlinput / 1024 / 1024 / 1024)) as computationsqlinput --數據輸入量GB ,SUM((computationsqlinput / 1024 / 1024 / 1024)) * computationsqlcomplexity * 0.3 AS sqlmoney FROM maxcomputefee WHERE TYPE = 'ComputationSql' AND to_char(endtime,'yyyymmdd') >= '20190112' GROUP BY to_char(endtime,'yyyymmdd'),feeid ,projectid ,computationsqlcomplexity ORDER BY sqlmoney DESC LIMIT 10000 ;
--查詢結果--
根據此段SQL執(zhí)行結果可以得到如下結論:
大作業(yè)可以優(yōu)化的點:**是否可以減小數據讀取量、降低復雜度來優(yōu)化費用成本。
也可以按照ds字段(按照天)進行匯總,分析某個時間段內的SQL消費金額走勢。比如利用本地excle或云上QuickBI等工具繪制折線圖等方式,更直觀的反應作業(yè)的趨勢。
拿到具體的instanceid,在console或者DataWorks腳本中進行wait instanceid;
查看具體作業(yè)和SQL。
從logview中獲取DataWorks節(jié)點名稱:
在logview中打開SourceXML可以查看到具體執(zhí)行信息,如SKYNET_NODENAME表示DataWorks的節(jié)點名稱(當然只有被調度系統(tǒng)執(zhí)行的作業(yè)才有值,臨時查詢?yōu)榭?,如下圖所示)。拿到節(jié)點名稱可以快速的在DataWorks找到該節(jié)點進行優(yōu)化或查看責任人。
一般情況下費用的增長背后其實是作業(yè)量的暴漲,可能是重復執(zhí)行,也可能是調度屬性配置的不是很合理。
--分析作業(yè)增長趨勢 SELECT TO_CHAR(endtime,'yyyymmdd') AS ds ,projectid ,COUNT(*) AS tasknum FROM maxcomputefee WHERE TYPE = 'ComputationSql' AND TO_CHAR(endtime,'yyyymmdd') >= '20190112' GROUP BY TO_CHAR(endtime,'yyyymmdd') ,projectid ORDER BY tasknum DESC LIMIT 10000 ;
--執(zhí)行結果--
從執(zhí)行結果可以看出來12-14日提交到MaxCompute且執(zhí)行成功的作業(yè)數的波動趨勢。
存儲費用的計費規(guī)則相對來說比較復雜,因為下載到的明細是每個小時取一次數據。按照MaxCompute存儲計費規(guī)則,會整體24小時求和然后平均之后的值再階梯收費。具體詳見官網。
--分析存儲費用 SELECT t.ds ,t.projectid ,t.storage ,CASE WHEN t.storage < 0.5 THEN 0.01 WHEN t.storage >= 0.5 AND t.storage <= 100 THEN t.storage*0.0192 WHEN t.storage > 100 AND t.storage <= 1024 THEN (100*0.0192+(t.storage-100)*0.0096) WHEN t.storage > 1024 AND t.storage <= 10240 THEN (100*0.0192+(1024-100)*0.0096+(t.storage-1024)*0.0084) WHEN t.storage > 10240 AND t.storage <= 102400 THEN (100*0.0192+(1024-100)*0.0096+(10240-1024)*0.0084+(t.storage-10240)*0.0072) WHEN t.storage > 102400 AND t.storage <= 1048576 THEN (100*0.0192+(1024-100)*0.0096+(10240-1024)*0.0084+(102400-10240)*0.0072+(t.storage-102400)*0.006) END storage_fee FROM ( SELECT to_char(starttime,'yyyymmdd') as ds ,projectid ,SUM(storage/1024/1024/1024)/24 AS storage FROM maxcomputefee WHERE TYPE = 'Storage' and to_char(starttime,'yyyymmdd') >= '20190112' GROUP BY to_char(starttime,'yyyymmdd') ,projectid ) t ORDER BY storage_fee DESC ;
--執(zhí)行結果--
根據計算結果可以分析得出結論:
存儲在13日為最高有一個增長的過程,但是在14日是有降低。
存儲優(yōu)化,建議表設置生命周期,刪除長期不使用的臨時表等。
對于公網或者跨Region的數據下載,MaxCompute將按照下載的數據大小進行計費。計費公式為:一次下載費用=下載數據量*0.8元/GB。
--分析下載消費明細 SELECT TO_CHAR(starttime,'yyyymmdd') AS ds ,projectid ,SUM((download/1024/1024/1024)*0.8) AS download_fee FROM maxcomputefee WHERE type = 'DownloadEx' AND TO_CHAR(starttime,'yyyymmdd') >= '20190112' GROUP BY TO_CHAR(starttime,'yyyymmdd') ,projectid ORDER BY download_fee DESC ;
按照執(zhí)行結果也可以分析出某個時間段內的下載費用走勢。另外可以通過tunnel show history查看具體歷史信息,具體命令詳見官方文檔。
以下幾種計算作業(yè)與SQL類似,按照官方計費文檔編寫SQL即可。
MR任務當日計算費用=當日總計算時*0.46元
--分析MR作業(yè)消費 SELECT TO_CHAR(starttime,'yyyymmdd') AS ds ,projectid ,(cu_usage/3600)*0.46 AS mr_fee FROM maxcomputefee WHERE type = 'MapReduce' AND TO_CHAR(starttime,'yyyymmdd') >= '20190112' GROUP BY TO_CHAR(starttime,'yyyymmdd') ,projectid ,cu_usage ORDER BY mr_fee DESC ;
SQL外部表功能計費規(guī)則:一次SQL計算費用=計算輸入數據量SQL復雜度0.03元/GB
--分析OTS外部表SQL作業(yè)消費 SELECT TO_CHAR(starttime,'yyyymmdd') AS ds ,projectid ,(input_ots/1024/1024/1024)*1*0.03 AS ots_fee FROM maxcomputefee WHERE type = 'ComputationSql' AND TO_CHAR(starttime,'yyyymmdd') >= '20190112' GROUP BY TO_CHAR(starttime,'yyyymmdd') ,projectid ,input_ots ORDER BY ots_fee DESC ; --分析OSS外部表SQL作業(yè)消費 SELECT TO_CHAR(starttime,'yyyymmdd') AS ds ,projectid ,(input_oss/1024/1024/1024)*1*0.03 AS ots_fee FROM maxcomputefee WHERE type = 'ComputationSql' AND TO_CHAR(starttime,'yyyymmdd') >= '20190112' GROUP BY TO_CHAR(starttime,'yyyymmdd') ,projectid ,input_oss ORDER BY ots_fee DESC ;
MaxCompute產品消費的增長(暴漲)往往背后都是由于作業(yè)量的大幅度提升,要優(yōu)化自己的費用成本,首選要知道自己SQL等作業(yè)中存在什么問題,要優(yōu)化具體哪一個SQL。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。