A. 請問如何實現多台計算機同時處理同一個任務,業界稱之為分布式計算,求具體實現方式
據我所知,業內為實現多台計算機同時處理同一個任務,是採用分配任務的方式進行,比如A處理1+1=?B處理1+2=?,這樣子來進行的。因此只要進行編程,優化演算法就能達到。如果你的程序編得不好,那麼就達不到最優。
B. 什麼是分布式計算
1,分布式計算是一門計算機科學,它研究如何把一個需要非常巨大的計算能力才能解決的問題分成許多小的部分,然後把這些部分分配給許多計算機進行處理,最後把這些計算結果綜合起來得到最終的結果。 也就是利用互聯網上的計算機的 CPU 的閑置處理能力來解決大型計算問題的一種計算科學。 2,最近的分布式計算項目已經被用於使用世界各地成千上萬位志願者的計算機的閑置計算能力,通過網際網路,您可以分析來自外太空的電訊號,尋找隱蔽的黑洞,並探索可能存在的外星智慧生命;您可以尋找超過1000萬位數字的梅森質數;您也可以尋找並發現對抗艾滋病病毒的更為有效的葯物。這些項目都很龐大,需要驚人的計算量,僅僅由單個的電腦或是個人在一個能讓人接受的時間內計算完成是決不可能的。
C. 20分鍾看懂大數據分布式計算
這是一篇科普性質的文章,希望能過用一個通俗易懂的例子給非計算機專業背景的朋友講清楚大數據分布式計算技術。大數據技術雖然包含存儲、計算和分析等一系列龐雜的技術,但分布式計算一直是其核心,想要了解大數據技術,不妨從MapRece分布式計算模型開始。該理論模型並不是什麼新理念,早在2004年就被Google發布,經過十多年的發展,儼然已經成為了當前大數據生態的基石,可謂大數據技術之道,在於MapRece。
在進入到分布式計算技術這個概念之前,我們要先回顧一下傳統計算技術,為了使計算機領域的相關概念能夠生動形象深入淺出,我們要將計算機類比為人:
下面我們要用一個簡單的案例,分析「人型計算機」是如何利用傳統計算技術解決實際問題的。在開始之前,要增加一些限定,如同正常計算機的內存是有上限的,我們的「人型計算機」也存在記憶力的上限,這里我們假設一個「人型計算機」最多可以同時在「內存」中記住4種信息,例如:蘋果、梨等四種水果的個數:
好了,背景知識已經足夠了,讓我們進入正題
首先,什麼是分布式計算?簡單點理解就是將大量的數據分割成多個小塊,由多台計算機分工計算,然後將結果匯總。這些執行分布式計算的計算機叫做集群,我們仍然延續前文中人和計算機的類比,那麼集群就是一個團隊,單兵作戰的時代已經過去,團隊合作才是王道:
為什麼需要分布式計算?因為「大數據」來了,單個計算機不夠用了,即數據量遠遠超出單個計算機的處理能力范圍:有時候是單位時間內的數據量大,比如在12306網上買票,每秒可能有數以萬計的訪問;也有可能是數據總量大,比如網路搜索引擎,要在伺服器上檢索數億的中文網頁信息。
實現分布式計算的方案有很多,在大數據技術出現之前就已經有科研人員在研究,但一直沒有被廣泛應用。直到2004年Google公布了MapRece之後才大熱了起來。大數據技術、分布式計算和MapRece的關系可以用下圖來描述,MapRece是分布式計算在大數據領域的應用:
MapRece模型是經過商業實踐的成熟的分布式計算框架,與Google的分布式文件系統GFS、分布式數據存儲系統BigTable一起,號稱Google的大數據「三寶」,為大數據技術的發展提供了堅實的理論基礎。但遺憾的是,谷歌並沒有向外界公布自己的商業產品,而真正讓大數據技術大踏步前進的是按照Google理論實現的開源免費產品Hadoop,目前已經形成了以Hadoop為核心的大數據技術生態圈。
讓我們回到數撲克牌這個例子中,大數據時代的撲克牌問題是什麼樣子的?
我個人在查閱了一些資料、進行了一些實踐以後,認為MapRece的技術可以簡單地用四字訣來總結:分、變、洗、合,分別代表「切分」、「變換」、「洗牌」、「合並」四個步驟:
下面來看如何用四字訣解決大數據撲克牌問題。
既然單個「人型計算機」無法完全處理完所有的撲克,那麼我們就把撲克牌隨機分成多份,每份撲克牌由一個「人型計算機」來處理,個數不超過單個計算機的處理上限,而且盡量讓每份的數量比較平均。
這里我們要講一下角色分工的問題,多台計算機合作,肯定要有角色分工,我們把負責數據切分的「人型計算機」可以理解為「指揮官」,「指揮官」一般只有一個(在實際中可能有多個),統籌調度之類的工作都歸他管。負責執行具體運算任務的「人型計算機」則是「計算兵」,「計算兵」按照承擔的任務不同分為「變計算兵」和「合計算兵」,前者負責第二步「變換「,後者負責最後一步「合並「。
「指揮官」在切分撲克牌之前,會先分配好「變計算兵」和「合計算兵」的數量,然後根據「變計算兵」的數量把撲克拆分成相應的份數,將每份撲克分給一個「變計算兵」,然後進入下一步。
每一個「變計算兵」都要對自己分得的每一張撲克牌按照相同的規則做變換,使得後續的步驟中可以對變換後的結果做處理。這種變換可以是加減乘除等數學運算,也可以是對輸入數據的結構的轉換。例如對於我們這個撲克牌問題來講,目的是為了計數,所以可以將撲克牌轉換為一種計算機更容易處理的數值結構:將每張撲克牌上貼一張小便簽,這條小便簽上寫明了其個數為1。
我們把這種貼了標簽的撲克牌叫做變種撲克牌。當在後續的步驟中統計牌型個數時,只需要把每個標簽上的數字加起來就可以。有的朋友肯定會好奇為什麼不讓每個「計算兵」直接統計各自的所有牌型的撲克的個數,這是因為這種「映射變換」運算的本質在於將每張撲克牌都進行同一種相同規則的變換,統計個數的工作要留在最後一步完成。嚴格的流水化操作,會讓整體的效率更高,而且變換的規則要根據具體問題來制定,更容易適配不同種類的計算。
變換的運算完成之後,每個「變計算兵」要將各自的變種撲克牌按照牌型分成多個小份,每個小份要最終被一個指定的「合計算兵」進行結果合並統計,這個過程就是「洗牌」,是「變計算兵」將變換後的撲克牌按照規則分組並分配給指定的「合計算兵」的過程。
洗牌分兩個階段,第一階段是每個「變計算兵」將變種撲克牌按照一定的規則分類,分類的規則取決於每個「合計算兵」的統計范圍,分類的個數取決於「合計算兵」的個數。如上圖所示,假設有3個「合計算兵」分別負責不同范圍的牌型的統計,那麼「變計算兵」需要根據每個「合計算兵」負責的牌型將自己的變種撲克牌分成3個小份,每份交給對應的「合計算兵」。洗牌的第二階段,「合計算兵」在指揮官的指揮下,去各個「變計算兵」的手中獲取屬於他自己的那一份變種撲克牌,從而使得牌型相同的撲克牌只會在一個「合計算兵」的手上。洗牌的意義在於使相同牌型的變種撲克牌匯聚在了一起,以便於統計。
「合計算兵」將手中的變種撲克牌按照相同的計算規則依次進行合並,計算規則也需要根據具體問題來制定,在這里是對撲克牌上標簽的數值直接累加,統計出最終的結果。
然後所有的「合計算兵」把自己的計算結果上交給「指揮官」,「指揮官」匯總後公布最終統計的結果。
ok,「分變洗合」四字訣介紹完畢,完整過程如下:
分布式處理技術在邏輯上並不復雜,但在具體的實現過程中會有很多復雜的過程,譬如「指揮官」如何協調調度所有的「運算兵」,「運算兵」之間如何通信等等,但對於使用MapRece來完成計算任務的程序員來講,這些復雜的過程是透明的,分布式計算框架會自己去處理這些問題,程序員只需要定義兩種計算規則:第二步中變換的規則和第四步中合並的規則。
正所謂大道至簡,萬變不離其宗,理解了MapRece就理解了大數據分布式處理技術,而理解大數據分布式處理技術,也就理解了大數據技術的核心。
如果你還沒有理解或者發現了文中的邏輯漏洞,歡迎留言討論。
D. 如何實現分布式計算家裡有三台電腦!本人小白,求簡單的方法。或者直接軟體。
用一台做負載均衡,其他兩台做業務節點。http負載軟體採用IIS、apche、nginx等。
E. 如何入門分布式計算
不推薦看理論性很強的書(不意味著不需要掌握)。找個你感興趣的開源工具,然後看看他的document和論文,讀讀源碼,用一用。不只要知道很多分布式的工具可以做什麼,最重要的還是自己要深入一個。有廣度有深度,領會某個優秀工具設計上的理念。先看看google的maprece,bigtable那幾篇經典的論文。不要太多,要選擇經典。因為絕多數都不怎麼樣。然後選擇簡單和成熟的分布式系統玩玩,寫幾個簡單的程序。並對他們敢興趣的地方看看源代碼。然後就是想想已有系統有什麼不好的地方進行一下修改。所有的系統都是tradeoff的產物,所以你總是可以找到性能提升的地方。中途會遇到很多bug,多問問論壇。也會遇到理論上的不足,這個時候有針對性的看論文或者書籍。大致如此吧!
F. 什麼是分布式計算
什麼是分布式計算
分布式計算(Distributed Computation)是一種計算方法,和集中式計算是相對的。隨著計算技術的發展,有些應用需要非常巨大的計算能力才能完成,如果採用集中式計算,需要耗費相當長的時間來完成。分布式計算將該應用分解成許多小的部分,分配給多台計算機進行處理。這樣可以節約整體計算時間,大大提高計算效率。
G. 分布式計算的基本信息
廣義定義
所謂分布式計算是一門計算機科學,它研究如何把一個需要非常巨大的計算能力才能解決的問題分成許多小的部分,然後把這些部分分配給許多計算機進行處理,最後把這些計算結果綜合起來得到最終的結果。 最近的分布式計算項目已經被用於使用世界各地成千上萬位志願者的計算機的閑置計算能力,通過網際網路,您可以分析來自外太空的電訊號,尋找隱蔽的黑洞,並探索可能存在的外星智慧生命;您可以尋找超過1000萬位數字的梅森質數;您也可以尋找並發現對抗艾滋病病毒的更為有效的葯物。這些項目都很龐大,需要驚人的計算量,僅僅由單個的電腦或是個人在一個能讓人接受的時間內計算完成是決不可能的。
中國科學院的定義
分布式計算是一種新的計算方式。所謂分布式計算就是在兩個或多個軟體互相共享信息,這些軟體既可以在同一台計算機上運行,也可以在通過網路連接起來的多台計算機上運行。分布式計算比起其它演算法具有以下幾個優點:
1、稀有資源可以共享。
2、通過分布式計算可以在多台計算機上平衡計算負載。
3、可以把程序放在最適合運行它的計算機上。
其中,共享稀有資源和平衡負載是計算機分布式計算的核心思想之一。 分布式計算是利用互聯網上的計算機的中央處理器的閑置處理能力來解決大型計算問題的一種計算科學。下面,我們看看它是怎麼工作的:
首先, 要發現一個需要非常巨大的計算能力才能解決的問題。這類問題一般是跨學科的、極富挑戰性的、人類急待解決的科研課題。其中較為著名的是: 解決較為復雜的數學問題,例如:GIMPS(尋找最大的梅森素數)。 研究尋找最為安全的密碼系統,例如:RC-72(密碼破解)。 生物病理研究,例如:Folding@home(研究蛋白質折疊,誤解,聚合及由此引起的相關疾病)。 各種各樣疾病的葯物研究,例如:United Devices(尋找對抗癌症的有效的葯物)。 信號處理,例如:SETI@Home(在家尋找地外文明)。 在以前,這些問題都應該由超級計算機來解決。但是, 超級計算機的造價和維護非常的昂貴,這不是一個普通的科研組織所能承受的。隨著科學的發展,一種廉價的、高效的、維護方便的計算方法應運而生——分布式計算!
隨著計算機的普及,個人電腦開始進入千家萬戶。與之伴隨產生的是電腦的利用問題。越來越多的電腦處於閑置狀態,即使在開機狀態下中央處理器的潛力也遠遠不能被完全利用。我們可以想像,一台家用的計算機將大多數的時間花費在「等待」上面。即便是使用者實際使用他們的計算機時,處理器依然是寂靜的消費,依然是不計其數的等待(等待輸入,但實際上並沒有做什麼)。互聯網的出現, 使得連接調用所有這些擁有限制計算資源的計算機系統成為了現實。
那麼,一些本身非常復雜的但是卻很適合於劃分為大量的更小的計算片斷的問題被提出來,然後由某個研究機構通過大量艱辛的工作開發出計算用服務端和客戶端。服務端負責將計算問題分成許多小的計算部分,然後把這些部分分配給許多聯網參與計算的計算機進行並行處理,最後將這些計算結果綜合起來得到最終的結果。
當然,這看起來也似乎很原始、很困難,但是隨著參與者和參與計算的計算機的數量的不斷增加, 計算計劃變得非常迅速,而且被實踐證明是的確可行的。目前一些較大的分布式計算項目的處理能力已經可以達到甚而超過目前世界上速度最快的巨型計算機。
您也可以選擇參加某些項目以捐贈Cpu的內核處理時間,您將發現您所提供的 中央處理器 內核處理時間將出現在項目的貢獻統計中。您可以和其他的參與者競爭貢獻時間的排名,您也可以加入一個已經存在的計算團體或者自己組建一個計算小組。這種方法很利於調動參與者的熱情。
隨著民間的組隊逐漸增多, 許多大型組織(例如公司、學校和各種各樣的網站)也開始了組建自己的戰隊。同時,也形成了大量的以分布式計算技術和項目討論為主題的社區,這些社區多數是翻譯製作分布式計算項目的使用教程及發布相關技術性文章,並提供必要的技術支持。
那麼誰可能加入到這些項目中來呢? 當然是任何人都可以! 如果您已經加入了某個項目,而且曾經考慮加入計算小組, 您將在中國分布式計算總站及論壇里找到您的家。任何人都能加入任何由我站的組建的分布式計算小組。希望您在中國分布式總站及論壇里發現樂趣。
參與分布式計算——一種能充分發揮您的個人電腦的利用價值的最有意義的選擇——只需要下載有關程序,然後這個程序會以最低的優先度在計算機上運行,這對平時正常使用計算機幾乎沒有影響。如果你想利用計算機的空餘時間做點有益的事情,還猶豫什麼?馬上行動起來吧,你的微不足道的付出或許就能使你在人類科學的發展史上留下不小的一筆呢! BOINC是Berkeley Open Infrastructure for Network Computing的簡稱,即伯克利開放式網路計算平台。
BOINC是不同分布式計算可以共享的分布式計算平台。不同分布式計算項目可以直接使用BOINC的公用上傳下載系統、統計系統等,這樣不僅可以發揮各個分布式計算之間的協調性,也能使分布式計算的管理、使用更加方便易用。
BOINC項目由美國加州大學伯克利分校(U.C.Berkeley)主持發起。
BOINC項目由美國國家科學基金會(National Science Foundation)贊助。
BOINC有自己的積分系統,因為在BOINC上可以運行的項目千差萬別,比如項目A的任務包(Workunit,簡稱WU)在某台機器里需要3個小時完成,而項目B的任務包在這台機器里需要30個小時才能完成,顯然用WU的數目來衡量工作量是不可行的;類似的,機器性能也有差別,用CPU時間來衡量工作量更是不行的。積分系統只能通過一定的演算法得到用戶實際完成的計算量,這篇文章對BOINC中積分的計算方法進行了說明。 據中國互聯網信息中心(CNNIC)的統計信息,中文網民人數佔世界的比重已經增長到了12%左右,並且還在快速增長著。這里所說的中文網民是包括大陸、香港、澳門、台灣和海外華人的。
相比於互聯網在中國的快速發展,中國的分布式計算卻發展緩慢。就我看來,網民數量的統計並不能十分客觀地反映一個國家信息化程度的高低,而參與分布式計算網民的數量或比例卻可以明顯地看出這個國家科學普及化的水平。在這方面,毋庸置疑,歐美國家是十分領先的。在北歐國家,幾乎一半的電腦參加了分布式計算項目,這是一個驚人的數字。再讓我們來看看我們中國和印度,盡管我們擁有了不少最新科技,且看上去在網路普及化進程中有不錯表現,但是在分布式計算方面卻很薄弱。讓我們來看些例子:
SETI@home是世界上最大的分布式計算項目。從中國的參與人數來看,它在中國也是最著名的項目。它通過使用聯網的計算機下載程序分析射電望遠鏡所收到的訊號,來搜索地球外的生命跡象。
盡管中國在分布式計算中取得了進步,中國的國際排名從29上升到了24,但是我們中國用戶卻仍然只完成了日本用戶完成的工作數的十分之一,而日本,這個高度發達的國家網民人數卻少於中國。看來,提高網民素質、提高科學普及化程度也是十分重要的。印度和一些中東國家也有相似的問題,而中歐國家明顯在這方面作得比較好,不少獨聯體國家所完成的數據量已經超過了俄羅斯聯邦的總合。
Folding@home是一個研究蛋白質折疊,誤解,聚合及由此引起的相關疾病的分布式計算工程。它使用聯網式的計算方式和大量的分布式計算能力來模擬蛋白質折疊的過程,並指引我們對由折疊引起的疾病的一系列研究。
中國參加這個項目的人數在不斷增多,截至2011年3月底,中國3213團隊的用戶數達到3025人,活躍用戶有190人左右。
參與該項目Climateprediction工程是把最新的氣候預測模型通過家庭、學校、辦公室的計算機來進行計算。這些計算完成的結果將會組成世界最大的氣象預測模型。氣候改變了,而我們對此的行動已經是全球重要的話題。這將影響到人類的農業生產、水資源量、生態系統、能源需求、保險花費和很多其他與人類息息相關的方面。確鑿的科學依據表明,地球在在接下來的幾個世紀可能會變得溫暖,但是我們無法估計到底變化會有多大。如果您參加,這將能有助與21世紀的氣候科學預測。
中國已經有了很多計算機,其中不乏性能極其先進的。而他們中的大多數僅僅是打字、播放幻燈而已。這不能不說是一種資源的浪費。
從另外一個角度看,我們不難發現發達國家和發展中國家的差距。我們把這種現象稱為數字鴻溝。另一個現象同樣令人痛心疾首,所有的分布式計算項目都是由發達國家,如:美國、德國、英國、日本等發起的,這一方面也加深了科學鴻溝。斯坦福大學化學系的戈爾哈姆·理查德·切爾曼教授說,分布式計算將加快整個人類的科學進程。科學家們可以完成以前從來想不到要去完成的,或者要花幾十年幾百年才能完成的計算任務。這是的確是千真萬確的,但是這種計算從一定程度上助長了發達國家的科學壟斷。
中國有關部門也開始意識到分布式計算的重要性,一些大學教授和科學家也開始鑽研分布式計算科學,比如:中科院CAS@HOME和清華大學的「清水計劃」。
H. 大數據所謂的分布式運算是指什麼
分布式計算是一種計算方法,和集中式計算是相對的。分布式計算將該應用分解成許多小的部分,分配給多台計算機進行處理。這樣可以節約整體計算時間,大大提高計算效率。
分布式計算可以分為以下幾類:
傳統的C/S模型。如HTTP/FTP/SMTP/POP/DBMS等伺服器。客戶端向伺服器發送請求,伺服器處理請求,並把結果返回給客戶端。客戶端處於主動,伺服器處於被動。
集群技術。一種稱集群的技術出現了,它把多台伺服器連接起來,當成一台伺服器來用。這種技術的好處就是,不但對客戶來說是透明的,對伺服器軟體來說也是透明的,軟體不用做任何修改就可以在集群上運行。
通用型分布式計算環境。如CORBA/DCOM/ RMI/ DBUS等,這些技術(規范)差不多都有具有網路透明性,被調用的方法可能在另外一個進程中,也可能在另外一台機器上。調用者基本上不用關心是本地調用還是遠程調用。
I. 分布式常用技術有哪些
這個太多了,大數據方面常用的分布式存儲技術為HDFS、HBase,分布式計算技術有MapRece、Spark等等。