hadoop
https://blog.csdn.net/lifuxiangcaohui/article/details/23337905
假設一個應用場景. 我有一個100M 的資料庫備份的sql 檔案。我現在想在不匯入到資料庫的情況下直接用grep操作通過正則過濾出我想要的內容。例如:某個表中 含有相同關鍵字的記錄那麼有幾種方式,一種是直接用linux的命令 grep 還有一種就是通過程式設計來讀取檔案,然後對每行資料進行正則匹配得到結果好了 現在是100M 的資料庫備份.上述兩種方法都可以輕鬆應對。
那麼如果是100G , 1T 甚至 1PB 的資料呢 ?上面2種方法還能行得通嗎? 答案是不能。因為畢竟單臺伺服器的儲存與效能是有限的。
那麼對於超大資料檔案應該要怎麼樣進行處理呢?方法就是分散式計算,。分散式計算的核心就在於利用分散式演算法 把執行在單臺機器上的程式擴充套件到多臺機器上並行執行。從而使資料處理能力成倍增加,但是這種分散式計算一般對程式設計人員要求很高,而且對伺服器也有要求,導致了成本變得非常高。
Haddop 就是為了解決這個問題誕生的,Haddop 可以很輕易的把很多linux的廉價pc 組成分散式結點,然後程式設計人員也不需要知道分散式演算法之類,只需要根據mapreduce的規則定義好介面方法,剩下的就交給Haddop, 它會自動把相關的計算分佈到各個結點上去,然後得出結果。
例如上述的例子 ,Hadoop 要做的事首先把 1PB的資料檔案匯入到 HDFS(Hadoop Distributed File System)中, 然後程式設計人員定義好 map和reduce, 也就是把檔案的行定義為key,每行的內容定義為value , 然後進行正則匹配,匹配成功則把結果通過reduce聚合起來返回,Hadoop 就會把這個程式分佈到N 個結點去並行的操作;那麼原本可能需要計算好幾天,在有了足夠多的結點平行計算後之後就可以把時間大大縮小。
這也就是所謂的大資料雲計算了,再舉個簡單的例子,
比如 計算1億個1 相加得出計算結果, 我們很輕易知道結果是 1億.但是計算機不知道.那麼單臺計算機處理的方式做一個一億次的迴圈每次結果+1,那麼分散式的處理方式則變成 我用1萬臺計算機,每個計算機只需要計算1萬個1相加 然後再有一臺計算機把 1萬臺計算機得到的結果再相加
從而得到最後的結果。理論上講, 計算速度就提高了1萬倍. 當然上面可能是一個不恰當的例子.但所謂分散式,大資料,雲端計算大抵也就是這麼回事了。