1. 程式人生 > >大規模資料處理漫談【1】

大規模資料處理漫談【1】

當然也是我發的了,以後我計劃在這裡以及我的另外一個部落格

繼續該連載,希望廣大網友關注,感興趣的網頁可以轉載,不註明也沒關係,我只是希望推廣大規模資料處理技術,如果能對大家學習工作有所幫助,十分欣慰。

我此前寫過《走進搜尋引擎》,翻譯了《Managing gigabyte中文版》,各大新華書店有售,大規模資料處理我就不寫書了,直接分享給大家。

   大規模資料處理有哪些應用場合?
   (1)搜尋引擎,搜尋引擎需要儲存數10億的有效網頁,並進行快速的全文檢索,這是最主要的戰場。
   (2)資料探勘,日誌分析,商業智慧等,業務上產生的大規模日誌需要進行有效地加工和分析,使用傳統的通用結構化查詢資料庫已經很難滿足特定的業務需要。
   (3)科學計算,一般是那些複雜的大資料量的平行計算場合。
  
   如何掌握大規模資料處理的各種技術?
   (1)理解使用的機器和作業系統。
   (2)理解業務的特性。
   (3)將特定機器和特定業務發揮到極致的計算程式。

  首先我們看一下我們平常使用的機器(下面進入細節)
 
   磁碟和檔案系統
   現代磁碟一般被抽象為一個線性的塊資料組,在順序訪問塊的情況下,可以認為尋道時間是某個固定值(大約10ms左右),傳輸時間大約是10-100ms/MB,磁碟的外延到內延的訪問速度線性遞減,外延部分是讀寫最高效的部分。
   多個盤塊可以通過RAID 0的方式組在一起,在尋道時間不變的情況下,大大提高了傳輸資料量(可以看做是併發的磁碟訪問),但是RAID 0沒有冗餘,資料不安全,中間計算過程使用比較適宜。RAID 0可以有硬體和軟體的方法,使用硬體的方法在使用時節省更多的CPU時間。
 大規模資料處理的場合,以處理日誌為例,一般均為順序處理,通常採用非同步,直接IO的方法進行處理,非同步的磁碟訪問在核心2.?
   一些其他的技巧,在大規模資料處理的過程中,基本的模型是read process write。整個過程中總是有讀有寫的,因此讀寫分離很重要,讀盤和寫盤不要是同一個盤,可以用iostat命令實時查詢當前磁碟使用狀況。
 
  磁碟和檔案系統,不同機器引數都不同,可以採用hdparam等方法進行檢測和優化。必須充分了解所使用機器的特性,能夠估計出執行程式大致的耗時,才可能優化到得極限。