在這個資料**的時代,產生的資料量不斷地在攀公升,從gb,tb,pb,zb.挖掘其中資料的價值也是企業在不斷地追求的終極目標。但是要想對海量的資料進行挖掘,首先要考慮的就是海量資料的儲存問題,比如tb量級的資料。
談到資料的儲存,則不得不說的是磁碟的資料讀寫速度問題。早在上個世紀90年代初期,普通硬碟的可以儲存的容量大概是1g左右,硬碟的讀取速度大概為4.4mb/s.讀取一張硬碟大概需要5分鐘時間,但是如今硬碟的容量都在1tb左右了,相比擴充套件了近千倍。但是硬碟的讀取速度大概是100mb/s。讀完乙個硬碟所需要的時間大概是2.5個小時。所以如果是基於tb級別的資料進行分析的話,光硬碟讀取完資料都要好幾天了,更談不上計算分析了。那麼該如何處理大資料的儲存,計算分析呢?
乙個很簡單的減少資料讀寫時間的方法就是同時從多個硬碟上讀寫資料,比如,如果我們有100個硬碟,每個硬碟儲存1%的資料 ,並行讀取,那麼不到兩分鐘就可以完成之前需要2.5小時的資料讀寫任務了。這就是大資料中的分布式儲存的模型。當然實現分布式儲存還需要解決很多問題,比如硬體故障的問題,使用多台主機進行分布式儲存時,若主機故障,會出現資料丟失的問題,所以有了副本機制:系統中儲存資料的副本。一旦有系統發生故障,就可以使用另外的副本進行替換(著名的raid冗餘磁碟陣列就是按這個原理實現的)。其次比如乙個很大的檔案如何進行拆分儲存,讀取拆分以後的檔案如何進行校驗都是要考慮的問題。比如我們使用hadoop中的hdfs也面臨這個問題,只是框架給我們實現了這些問題的解決辦法,開發中開發者不用考慮這些問題,底層框架已經實現了封裝。
同樣假如有乙個10tb的檔案,我們要統計其中某個關鍵字的出現次數,傳統的做法是遍歷整個檔案,然後統計出關鍵字的出現次數,這樣效率會特別特別低。基於分布式儲存以後,資料被分布式儲存在不同的伺服器上,那麼我們就可以使用分布式計算框架(比如mapreduce,spark等)來進行平行計算(或者說是分布式計算),即:每個伺服器上分別統計自己儲存的資料中關鍵字出現的次數,最後進行一次彙總,那麼假如資料分布在100臺伺服器上,即同時100臺伺服器同時進行關鍵字統計工作,效率一下子可以提高幾十倍。這也是分布式儲存和分布式計算讓人著迷的地方。
為什麼使用分布式系統
為什麼使用分布式系統,總結有以下幾個原因 1.我覺得最主要的是考慮到伺服器效能的問題。單台伺服器的效能畢竟有限,綜合利用多個節點的處理能力,才能提高整體的服務能力 2.分布式模組可以採用不同的解決方案。只要是滿足指定的是互動協議,各模組可以根據各自的業務特點,選擇不同的處理方式,如微軟的解決方案,也...
分布式為什麼使用Redis
在專案中使用 redis,主要考慮兩個角度 效能和併發。如果只是為了分布式鎖這些其他功能,還有其他中介軟體 zookpeer 等代替,並非一定要使用 redis。效能 如下圖所示,我們在碰到需要執行耗時特別久,且結果不頻繁變動的 sql,就特別適合將執行結果放入快取。這樣,後面的請求就去快取中讀取,...
分布式儲存
塊儲存,檔案儲存,物件儲存區別 分布式儲存的應用場景相對於其儲存介面,現在流行分為三種 物件儲存 也就是通常意義的鍵值儲存,其介面就是簡單的get put del和其他擴充套件,如七牛 又拍 swift s3 塊儲存 這種介面通常以qemu driver或者kernel module的方式存在,這種...