第二章主題:大規模資料處理入門(linux背景下)
中-大資料標準,每張sql表的資料量都以gb為單位,表中資料量千萬級別。
記憶體和磁碟的讀取速率,差距在10^5~10^6倍。
linux下:使用top或uptime等命令顯示平均負載。
平均負載從左到右分別為1 分鐘、5 分鐘、15 分鐘內,單位時間中處於等待狀態的任務數。也就是說,該數字報告了平均有多少任務在等待。平均負載高,說明有相應數量的任務在等待,可以認為執行有延遲, 也就是負載過高。
平均負載過高時,要在cpu和i/o部分找原因。sar或者vmstat可以檢視cpu使用率和i/o等待率隨時間的推移情況。
"cpu 負載"過高時,用以下流程尋找原因:
確認是使用者程式處理的瓶頸,還是系統程式的原因。用
top 或sar 確認;
再通過ps 檢視可見程序的狀態和cpu 使用時間等,確
定導致問題的程序;
確定程序之後,想要進一步尋找原因的話,可以通過
strace 跟蹤,或oprofile 進行剖測,以確定瓶頸所在。
一般來說, cpu 負載是由於以下兩者之一:
·磁碟或記憶體容量等其他部分沒有成為瓶頸,即處於理想
狀態;
·程式失控,需要消耗過多的cpu 。
如果是前者,並且系統的吞吐量有問題,可以採取增加伺服器、改善程式邏輯和演算法的方式。後者的情況要去除故障,避免程式失控。
"i/o 負載"過高,其原因多半是程式發出的i/o 請求過多導致負載過高,或是發生頁面交換導致頻繁訪問磁碟。應通過sar或vmstat剖
確認交換區狀態,以找出原因。
根據確認結果,如果是發生頁面交換的情況,應該從以下幾點著手調查:
·用ps 確認是否有程序消耗了大量的記憶體;
·如果由於程式故障造成記憶體消耗過大,應改進程式;
·如果是因為記憶體安裝不足,就要增加記憶體。無法增加內
存時考慮分布式。
如果是沒有交換發生,而且磁碟i/o頻繁的情況,可能是用
於快取的記憶體不足。根據伺服器擁有的資料量和可增加的記憶體
量,按照以
下步驟選擇應對方法:
· 如果通過增加記憶體可以擴大快取,就增加記憶體;
· 如果增加記憶體還不夠用,就考慮分散儲存資料,或增加快取伺服器等。當然,改進程式減少i/o頻率也是一種方法。
上面就是尋找負載原因的基本策略。
改善i/o效能,需要確認以下幾點:
·能否通過增加記憶體以保證快取區域的方法解決;
.資料量是否本來就過多;
·有無必要改變應用程式的i/o演算法。
*****
相反,資料庫伺服器需要較多i/o資源。
web應用程式的三層結構由**伺服器、應用程式伺服器、資料庫組成。
處理大規模資料的重點:
1.能在記憶體中完成多少?
將磁碟尋道次數降到最低(使用索引)
可以實現分布式,有效利用區域性性
2.能應對資料量增加的演算法和資料結構
例如:線性搜尋→二叉樹搜尋
o(n)→o(logn)
3.資料壓縮、資訊搜尋技術
大規模Web服務開發技術
大規模web服務開發技術 日 伊藤直也,田中慎司編著 李劍 譯 isbn 978 7 121 13884 3 2011年7月出版 定價 59.00元 16開 356頁 內 容 簡 介 hatena是日本最大的web 服務提供商之一,它提供的服務包括關鍵字 類似於維基百科 部落格 相簿等。本書的內容主...
大規模Web服務開發技術
大規模web服務開發技術 日 伊藤直也,田中慎司編著 李劍譯 isbn 978 7 121 13884 3 2011年7月出版 定價 59.00元 16開 356頁 內 容 簡 介 hatena是日本最大的web 服務提供商之一,它提供的服務包括關鍵字 類似於維基百科 部落格 相簿等。本書的內容主要...
大規模Web服務開發技術
大規模web服務開發技術 日 伊藤直也,田中慎司編著 李劍譯 isbn 978 7 121 13884 3 2011年7月出版 定價 59.00元 16開 356頁 內容簡介 hatena 是日本最大的 web 服務提供商之一,它提供的服務包括關鍵字 類似於維基百科 部落格 相簿等。本書的內容主要來...