-
1 # 煩煩煩放放風
-
2 # 網趣科技
什麼是分散式計算
分散式計算是一門計算機科學,主要研究分散式系統。
一個分散式系統包括若干透過網路互聯的計算機。這些計算機互相配合以完成一個共同的目標(我們將這個共同的目標稱為“專案”)。
具體的過程是:
將需要進行大量計算的專案資料分割成小塊,由多臺計算機分別計算,再上傳運算結果後統一合併得出資料結論。在分散式系統上執行的計算機程式稱為分散式計算程式;分散式程式設計就是編寫上述程式的過程。
分散式計算的工作方式專案方把大的計算任務分割成小塊(任務單元),透過網際網路分發給志願者進行計算,志願者計算完成後再透過網路把各自的計算結果返回到專案方的伺服器。
分散式計算架構由許多客戶端組成具有非常輕量級軟體代理的計算機,安裝有一個或多個專用分散式計算管理服在客戶端計算機上執行的代理程式通常會檢測計算機何時處於空閒狀態,並向管理伺服器傳送通知,指出計算機未在使用且可用於處理作業。
然後代理請求應用程式包。當客戶端計算機從管理伺服器接收此應用程式包進行處理時,它會在具有空閒 CPU c 時執行應用程式軟體 ycles 並將結果傳送回管理伺服器。當用戶返回並再次需要資源時,管理伺服器返回用於在使用者不在時執行不同任務的資源。
其中,管理程式負責系統管理和配置、作業管理;並行元件庫是基於訊息的通訊工具;本地作業系統為標準的通用 OS;並行應用程式就是並行執行的應用程式。計算機集群系統之間是同構的。主要採用叢集計算。
分散式計算在日常生活中的使用(1) 從一個新聞入口網站案例引入
現在很多同學經常會看到一些名詞,比如分散式服務框架,分散式系統,分散式儲存系統,分散式訊息系統。
但是有些經驗尚淺的同學,可能都很容易被這些名詞給搞暈。所以這篇文章就對“分散式計算系統”這個概念做一個科普類的分析。
如果你要理解啥是分散式計算,就必須先得理解啥是分散式儲存,現在我們從一個小例子來引入。
比如說現在你有一個網站,咱們假設是一個新聞入口網站好了。每天是不是會有可能上千萬使用者會湧入進來看你的新聞?
好的,那麼他們會怎麼看新聞呢?
那麼你的這些使用者乾的這些事兒有一個專業的名詞,叫做“使用者行為”。
這些事情叫什麼呢?你可以認為是基於使用者行為資料進行分析和統計,產出各種各樣的資料統計分析報表和結果,供網站的使用者、管理人員來檢視。
這也有一個專業的名詞,叫做“使用者行為分析”。
(2)推算一下你需要分析多少條資料?
好,咱麼繼續。如果你要對使用者行為進行分析,那你是不是首先需要收集這些使用者行為的資料?
同樣,這個東西也有一個專業的名詞,叫做“使用者行為日誌”。
那你可以來計算一下,這些使用者行為如果採用日誌的方式收集,每天大概會產生多少條資料?
那麼你就有每天大概28GB左右的資料,這裡一共包含3億條。
假如對這3億條資料,你就自己寫個Java程式,從一個超大的28GB的大日誌檔案裡,一條一條讀取日誌來統計分析和計算,一直到把3億條資料都計算完畢,你覺得會花費多少時間?
不可想象,根據你的計算邏輯複雜度來說,搞不好要花費幾十個小時的時間。
所以你覺得這種大資料場景下的分析,這麼玩兒靠譜麼?不靠譜。
(3)黃金搭檔:分散式儲存+分散式計算
所以這個時候,你就可以首先採用分散式儲存的方式,把那3億條資料分散存放在比如30臺機器上,每臺機器大概就放1000萬條資料,大概就1GB的資料量。
大家看看下面的圖:
接著你就可以上分散式計算了,你可以把統計分析資料的計算任務,拆分成30個計算任務,每個計算任務都分發到一臺機器上去執行。
也就是說,就專門針對機器本地的1GB資料,那1000萬條資料進行分析和計算。
這樣的好處就是可以依託30臺機器的資源並行的進行資料的統計和分析,這也就是所謂的分散式計算了。
每臺機器的計算結果出來之後,就可以進行綜合性的彙總,然後就可以拿到最終的一個分析結果,大家看下圖。
假設之前你的3億條資料都在一個30GB的大檔案裡,然後你一個Java程式一條一條慢慢讀慢慢計算,需要耗費30小時。
那麼現在把計算任務並行到了30臺機器上去,就可以提升30倍的計算速度,是不是就只需要1小時就可以完成計算了?
所以這個就是所謂的分散式計算,他一般是針對超大資料集,也就是現在很流行的大資料進行計算的。
首先需要將超大資料集拆分成很多資料塊分散在多臺機器上,然後把計算任務分發到各個機器上去,利用多臺機器的CPU、記憶體等計算資源來進行計算。
這種分散式計算的方式,對於超大資料集的計算可以提升幾十倍甚至幾百倍的效率,其實這個理論和概念,也是大資料技術的基礎。
比如現在最流行的大資料技術棧裡,Hadoop HDFS就是用做分散式儲存的,他可以把一個超大檔案拆分為很多小的資料塊放在很多機器上。
而像Spark就是分散式計算系統,他可以把計算任務分發到各個機器上,對各個資料塊進行平行計算。
相信大家看了之後,對分散式計算系統,應該有一個初步的認識了。
回覆列表
完全可以按照字面進行解釋,就是把一個活安排給很多臺計算機進行處理。
與分散式計算相對應的是集中式計算,集中式計算比較好理解,就是一臺計算機完成某個規定的計算任務。比如說我們每個人從小到大都經歷過很多考試,每次考試是人手一張卷子,還有老師監考,避免抄襲,這就是一個典型的集中式計算。即使是在監考不嚴的情況下,有同學抄襲,也不能算是分散式計算,最多算是集中式計算,計算結果從兩個終端上輸出。
分散式計算主要應用在計算負責、計算量超級大,計算工具比如說計算機處理能力不足的情況下使用。像我們的天氣預報、核反應等等方面,我們需要透過計算模擬結果,我們現有的計算機即使是超級計算機的計算能力也難以達到要求,這時候需要採用分散式計算。