【转载】分布式系统的理解
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
1. 如何理解“分布式”?
? ? ?經(jīng)常聽到”分布式系統(tǒng)“,”分布式計(jì)算“,”分布式算法“。分布式的具體含義是什么?狹義的分布是指,指多臺(tái)PC在地理位置上分布在不同的地方。
2. 分布式系統(tǒng)
? ??分布式系統(tǒng):多個(gè)能獨(dú)立運(yùn)行的計(jì)算機(jī)(稱為結(jié)點(diǎn))組成。各個(gè)結(jié)點(diǎn)利用計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行信息傳遞,從而實(shí)現(xiàn)共同的“目標(biāo)或者任務(wù)”。
? ??分布式程序:?運(yùn)行在分布式系統(tǒng)上的計(jì)算機(jī)程序。
? ??分布式計(jì)算:利用分布式系統(tǒng)解決來計(jì)算問題。在分布式計(jì)算里,一個(gè)問題被細(xì)化成多個(gè)任務(wù),每個(gè)任務(wù)可以被一個(gè)或者多個(gè)計(jì)算機(jī)來完成。
? ? 區(qū)分分布式計(jì)算和并行計(jì)算:共同點(diǎn)都是大任務(wù)劃分為小任務(wù)。不同點(diǎn):?分布式計(jì)算:基于多臺(tái)PC,每臺(tái)PC完成同一任務(wù)中的不同部分。分布式的計(jì)算被分解后的小任務(wù)互相之間有獨(dú)立性,節(jié)點(diǎn)之間的結(jié)果幾乎不互相影響,實(shí)時(shí)性要求不高。并行計(jì)算:基于同一個(gè)臺(tái)PC,利用CPU的多核共同完成一個(gè)任務(wù)。
1)分布式操作系統(tǒng)? ? ? 分布式操作系統(tǒng):負(fù)責(zé)管理分布式處理系統(tǒng)資源和控制分布式程序運(yùn)行。它和集中式操作系統(tǒng)的區(qū)別在于資源管理、進(jìn)程通信和系統(tǒng)結(jié)構(gòu)等方面。
2)分布式文件系統(tǒng)? ??? ?分布式文件系統(tǒng)具有執(zhí)行遠(yuǎn)程文件存取的能力,并以透明方式對(duì)分布在網(wǎng)絡(luò)上的文件進(jìn)行管理和存取。
3)分布式程序設(shè)計(jì)和編譯解釋系統(tǒng) ? ??? 分布式程序設(shè)計(jì)語言用于編寫運(yùn)行于分布式計(jì)算機(jī)系統(tǒng)上的分布式程序。一個(gè)分布式程序由若干個(gè)可以獨(dú)立執(zhí)行的程序模塊組成,它們分布于一個(gè)分布式處理系統(tǒng)的多臺(tái)計(jì)算機(jī)上被同時(shí)執(zhí)行。它與集中式的程序設(shè)計(jì)語言相比有三個(gè)特點(diǎn):分布性、通信性和穩(wěn)健性。
? ? ?分層應(yīng)用程序可以按層數(shù)進(jìn)行劃分,信息可以從數(shù)據(jù)層(通常存儲(chǔ)在數(shù)據(jù)庫)傳送到表現(xiàn)層(顯示在客戶端上)。通常每層相對(duì)于其他層來說都運(yùn)行在不同的系統(tǒng)中,或者在同一系統(tǒng)中的不同進(jìn)程空間里。分層好處:減小整個(gè)應(yīng)用程序的復(fù)雜性;使應(yīng)用程序能夠更好的擴(kuò)展,跟得上企業(yè)發(fā)展的需要。?
- ? ??? ?兩層應(yīng)用程序:?典型的結(jié)構(gòu),一個(gè)客戶端的用戶PC機(jī)(前端);一個(gè)包含數(shù)據(jù)庫的網(wǎng)絡(luò)服務(wù)器(后端)。邏輯上根據(jù)兩者的物理位置劃分。通常客戶端包含大部分業(yè)務(wù)邏輯,隨著數(shù)據(jù)庫及存儲(chǔ)過程的發(fā)展,SQL語言允許業(yè)務(wù)邏輯在數(shù)據(jù)庫服務(wù)器中存儲(chǔ)并執(zhí)行。?
- ? ? ???三層應(yīng)用程序:目前最常用的是三層應(yīng)用程序結(jié)構(gòu),包含一個(gè)用戶服務(wù)層(表現(xiàn)層),一個(gè)業(yè)務(wù)服務(wù)層和一個(gè)數(shù)據(jù)服務(wù)層。業(yè)務(wù)邏輯層從用戶界面和數(shù)據(jù)源中分離出來。?由于兩層應(yīng)用程序即客戶端/服務(wù)器端結(jié)構(gòu)的功能限制,分布式應(yīng)用程序通常分為三層或者更多層。每層的組件都執(zhí)行一個(gè)特定類型的處理。
之我見:分布式數(shù)據(jù)庫,由分布在不同地方(地理位置上的分布)的多個(gè)數(shù)據(jù)庫(稱為站點(diǎn))連接(基于計(jì)算機(jī)網(wǎng)絡(luò)來連接)而成。利用分布式DBMS對(duì)各個(gè)站點(diǎn)統(tǒng)一管理,各個(gè)站點(diǎn)邏輯上統(tǒng)一起來。基于數(shù)據(jù)分布的透明性,仿佛在管理單個(gè)站點(diǎn)上的數(shù)據(jù)。其優(yōu)點(diǎn)在于:容錯(cuò),提高訪問速度。
wiki官方解釋:?分布式數(shù)據(jù)庫是用計(jì)算機(jī)網(wǎng)絡(luò)將物理上分散的多個(gè)數(shù)據(jù)庫單元連接起來組成的一個(gè)邏輯上統(tǒng)一的數(shù)據(jù)庫。每個(gè)被連接起來的數(shù)據(jù)庫單元稱為站點(diǎn)或結(jié)點(diǎn)。分布式數(shù)據(jù)庫有一個(gè)統(tǒng)一的數(shù)據(jù)庫管理系統(tǒng)來進(jìn)行管理,稱為分布式數(shù)據(jù)庫管理系統(tǒng)。
?分布式數(shù)據(jù)庫的基本特點(diǎn)包括:物理分布性、邏輯整體性和站點(diǎn)自治性。從這三個(gè)基本特點(diǎn)還可以導(dǎo)出的其它特點(diǎn)有:數(shù)據(jù)分布透明性、集中與自治相結(jié)合的控制機(jī)制、適當(dāng)?shù)臄?shù)據(jù)冗余度和事務(wù)管理的分布性。分布式數(shù)據(jù)庫按照各站點(diǎn)中數(shù)據(jù)庫管理系統(tǒng)的數(shù)據(jù)模型的異同分為異構(gòu)型分布式數(shù)據(jù)庫和同構(gòu)型分布式數(shù)據(jù)庫,按照控制系統(tǒng)的類型分為全局控制集中性、全局控制分散型和全局控制可變型
3. Hadoop , HDFS, HBase, Hive
之我見:??
? ? ?Hadoop是一個(gè)分布式系統(tǒng)基礎(chǔ)框架,基于這個(gè)框架開發(fā)分布式應(yīng)用程序,利用集群的高速運(yùn)算和存儲(chǔ)的威力。類似于,基于NVIDIA 的 CUDA并行架構(gòu)開發(fā)并行程序,發(fā)揮GPU的并行計(jì)算能力。
? ? ?HDFS是Hadoop的文件系統(tǒng)。基于HDFS,你可以對(duì)文件進(jìn)行操作,例如新建,刪除,編輯,重命名等。
? ? ?HBase: 基于Hadoop架構(gòu)的數(shù)據(jù)庫系統(tǒng)。不是關(guān)系型數(shù)據(jù)庫,基于列的模式。
? ? ?Hive: 基于HBase的高層語言。類似于SQL --- 訪問和處理關(guān)系型數(shù)據(jù)庫的計(jì)算機(jī)語言。
官方解釋:
? ? ? Hadoop是一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)開發(fā)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。充分利用集群的威力高速運(yùn)算和存儲(chǔ)。
? ? ? ?HDFS(Hadoop Distributed File System)是Hadoop實(shí)現(xiàn)的一個(gè)分布式文件系統(tǒng)。它存儲(chǔ) Hadoop 集群中所有存儲(chǔ)節(jié)點(diǎn)上的文件。對(duì)外部客戶機(jī)而言,HDFS 就像一個(gè)傳統(tǒng)的分級(jí)文件系統(tǒng)。可以創(chuàng)建、刪除、移動(dòng)或重命名文件,等等。但是 HDFS 的架構(gòu)是基于一組特定的節(jié)點(diǎn)構(gòu)建的,存儲(chǔ)在 HDFS 中的文件被分成塊,然后將這些塊復(fù)制到多個(gè)計(jì)算機(jī)中(DataNode)。這與傳統(tǒng)的 RAID 架構(gòu)大不相同。塊的大小(通常為 64MB)和復(fù)制的塊數(shù)量在創(chuàng)建文件時(shí)由客戶機(jī)決定。NameNode 可以控制所有文件操作。HDFS 內(nèi)部的所有通信都基于標(biāo)準(zhǔn)的 TCP/IP 協(xié)議。
? ? ? ? HBase – Hadoop Database,是一個(gè)高可靠性、高性能、面向列、可伸縮的分布式存儲(chǔ)系統(tǒng),利用HBase技術(shù)可在廉價(jià)PC Server上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。HBase是Apache的Hadoop項(xiàng)目的子項(xiàng)目。HBase不同于一般的關(guān)系數(shù)據(jù)庫,它是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫。另一個(gè)不同的是HBase基于列的而不是基于行的模式。Hadoop HDFS為HBase提供了高可靠性的底層存儲(chǔ)支持,Hadoop MapReduce為HBase提供了高性能的計(jì)算能力,Zookeeper為HBase提供了穩(wěn)定服務(wù)和failover機(jī)制。此外,Pig和Hive還為HBase提供了高層語言支持,使得在HBase上進(jìn)行數(shù)據(jù)統(tǒng)計(jì)處理變的非常簡單。 Sqoop則為HBase提供了方便的RDBMS數(shù)據(jù)導(dǎo)入功能,使得傳統(tǒng)數(shù)據(jù)庫數(shù)據(jù)向HBase中遷移變的非常方便。HBase的數(shù)據(jù)模型和存儲(chǔ)結(jié)構(gòu),參考?http://www.searchtb.com/2011/01/understanding-hbase.html
? ? ? ? Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件(例如xml)映射為一張數(shù)據(jù)庫表,并提供完整的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。 其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過類SQL語句快速實(shí)現(xiàn)簡單的MapReduce統(tǒng)計(jì),不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計(jì)分析。
轉(zhuǎn)載于:https://my.oschina.net/moooofly/blog/115070
總結(jié)
以上是生活随笔為你收集整理的【转载】分布式系统的理解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深入了解Oracle ASM(一):基础
- 下一篇: Windows Azure 社区新闻综述