天天看點

分布式系統的了解

     經常聽到”分布式系統“,”分布式計算“,”分布式算法“。分布式的具體含義是什麼?狹義的分布是指,指多台pc在地理位置上分布在不同的地方。

    分布式系統:多個能獨立運作的計算機(稱為結點)組成。各個結點利用計算機網絡進行資訊傳遞,進而實作共同的“目标或者任務”。

    分布式程式: 運作在分布式系統上的計算機程式。

    分布式計算:利用分布式系統解決來計算問題。在分布式計算裡,一個問題被細化成多個任務,每個任務可以被一個或者多個計算機來完成。

    區分分布式計算和并行計算:共同點都是大任務劃分為小任務。不同點: 分布式計算:基于多台pc,每台pc完成同一任務中的不同部分。分布式的計算被分解後的小任務互相之間有獨立性,節點之間的結果幾乎不互相影響,實時性要求不高。并行計算:基于同一個台pc,利用cpu的多核共同完成一個任務。

1)分布式作業系統

      分布式作業系統:負責管理分布式處理系統資源和控制分布式程式運作。它和集中式作業系統的差別在于資源管理、程序通信和系統結構等方面。

2)分布式檔案系統

       分布式檔案系統具有執行遠端檔案存取的能力,并以透明方式對分布在網絡上的檔案進行管理和存取。

3)分布式程式設計和編譯解釋系統

      分布式程式設計語言用于編寫運作于分布式計算機系統上的分布式程式。一個分布式程式由若幹個可以獨立執行的程式子產品組成,它們分布于一個分布式處理系統的多台計算機上被同時執行。它與集中式的程式設計語言相比有三個特點:分布性、通信性和穩健性。

     分層應用程式可以按層數進行劃分,資訊可以從資料層(通常存儲在資料庫)傳送到表現層(顯示在用戶端上)。通常每層相對于其他層來說都運作在不同的系統中,或者在同一系統中的不同程序空間裡。分層好處:減小整個應用程式的複雜性;使應用程式能夠更好的擴充,跟得上企業發展的需要。 

       兩層應用程式: 典型的結構,一個用戶端的使用者pc機(前端);一個包含資料庫的網絡伺服器(後端)。邏輯上根據兩者的實體位置劃分。通常用戶端包含大部分業務邏輯,随着資料庫及存儲過程的發展,sql語言允許業務邏輯在資料庫伺服器中存儲并執行。 

       三層應用程式:目前最常用的是三層應用程式結構,包含一個使用者服務層(表現層),一個業務服務層和一個資料服務層。業務邏輯層從使用者界面和資料源中分離出來。 由于兩層應用程式即用戶端/伺服器端結構的功能限制,分布式應用程式通常分為三層或者更多層。每層的元件都執行一個特定類型的處理。

3)分布式資料庫

之我見:分布式資料庫,由分布在不同地方(地理位置上的分布)的多個資料庫(稱為站點)連接配接(基于計算機網絡來連接配接)而成。利用分布式dbms對各個站點統一管理,各個站點邏輯上統一起來。基于資料分布的透明性,仿佛在管理單個站點上的資料。其優點在于:容錯,提高通路速度。 wiki官方解釋: 分布式資料庫是用計算機網絡将實體上分散的多個資料庫單元連接配接起來組成的一個邏輯上統一的資料庫。每個被連接配接起來的資料庫單元稱為站點或結點。分布式資料庫有一個統一的資料庫管理系統來進行管理,稱為分布式資料庫管理系統。  分布式資料庫的基本特點包括:實體分布性、邏輯整體性和站點自治性。從這三個基本特點還可以導出的其它特點有:資料分布透明性、集中與自治相結合的控制機制、适當的資料備援度和事務管理的分布性。分布式資料庫按照各站點中資料庫管理系統的資料模型的異同分為異構型分布式資料庫和同構型分布式資料庫,按照控制系統的類型分為全局控制集中性、全局控制分散型和全局控制可變型
之我見:        hadoop是一個分布式系統基礎架構,基于這個架構開發分布式應用程式,利用叢集的高速運算和存儲的威力。類似于,基于nvidia 的 cuda并行架構開發并行程式,發揮gpu的并行計算能力。      hdfs是hadoop的檔案系統。基于hdfs,你可以對檔案進行操作,例如建立,删除,編輯,重命名等。      hbase: 基于hadoop架構的資料庫系統。不是關系型資料庫,基于列的模式。      hive: 基于hbase的高層語言。類似于sql --- 通路和處理關系型資料庫的計算機語言。 官方解釋:       hadoop是一個分布式系統基礎架構,由apache基金會開發。使用者可以在不了解分布式底層細節的情況下,開發分布式程式。充分利用叢集的威力高速運算和存儲。        hdfs(hadoop distributed file system)是hadoop實作的一個分布式檔案系統。它存儲 hadoop 叢集中所有存儲節點上的檔案。對外部客戶機而言,hdfs 就像一個傳統的分級檔案系統。可以建立、删除、移動或重命名檔案,等等。但是 hdfs 的架構是基于一組特定的節點建構的,存儲在 hdfs 中的檔案被分成塊,然後将這些塊複制到多個計算機中(datanode)。這與傳統的 raid 架構大不相同。塊的大小(通常為 64mb)和複制的塊數量在建立檔案時由客戶機決定。namenode 可以控制所有檔案操作。hdfs 内部的所有通信都基于标準的 tcp/ip 協定。         hbase – hadoop database,是一個高可靠性、高性能、面向列、可伸縮的分布式存儲系統,利用hbase技術可在廉價pc server上搭建起大規模結構化存儲叢集。hbase是apache的hadoop項目的子項目。hbase不同于一般的關系資料庫,它是一個适合于非結構化資料存儲的資料庫。另一個不同的是hbase基于列的而不是基于行的模式。hadoop hdfs為hbase提供了高可靠性的底層存儲支援,hadoop mapreduce為hbase提供了高性能的計算能力,zookeeper為hbase提供了穩定服務和failover機制。此外,pig和hive還為hbase提供了高層語言支援,使得在hbase上進行資料統計處理變的非常簡單。 sqoop則為hbase提供了友善的rdbms資料導入功能,使得傳統資料庫資料向hbase中遷移變的非常友善。hbase的資料模型和存儲結構,參考 http://www.searchtb.com/2011/01/understanding-hbase.html         hive是基于hadoop的一個資料倉庫工具,可以将結構化的資料檔案(例如xml)映射為一張資料庫表,并提供完整的sql查詢功能,可以将sql語句轉換為mapreduce任務進行運作。 其優點是學習成本低,可以通過類sql語句快速實作簡單的mapreduce統計,不必開發專門的mapreduce應用,十分适合資料倉庫的統計分析。