柚子快報激活碼778899分享:云計算·分布式計算實踐
柚子快報激活碼778899分享:云計算·分布式計算實踐
背景
云計算課程實踐——基于華為云的Flink實踐
知識點
概述
分布式計算:多個通過網(wǎng)絡互聯(lián)的計算機都具有一定的計算能力,他們相互之間傳遞數(shù)據(jù),實現(xiàn)信息共享,協(xié)作共同完成一個處理任務。優(yōu)勢:稀有資源實現(xiàn)共享; 在多臺計算機上平衡計算負載; 將程序放在最適合它的計算機上運行分布式系統(tǒng):是建立在網(wǎng)絡之上的軟件系統(tǒng)。正是因為軟件的特性,所以分布式系統(tǒng)具有高度的內(nèi)聚性和透明性。
系統(tǒng)擁有多種通用的物理和邏輯資源,可以動態(tài)的分配任務,分散的物理和邏輯資源通過計算機網(wǎng)絡實現(xiàn)信息交換。分布式計算的一般步驟:
設計分布式計算模型,實現(xiàn)分布式系統(tǒng)通過分布式系統(tǒng)實現(xiàn)分布式任務分配依照分布式系統(tǒng)編寫并執(zhí)行分布式程序
理論基礎
CAP理論:一個分布式系統(tǒng)最多能夠同時滿足一致性(consistency)、可用性(Availability)、分區(qū)容錯性(Partition tolerance)中的兩項
一致性:一次操作之后,所有節(jié)點同一時間的數(shù)據(jù)完全一致。可用性:服務一直可用且在正常的響應時間內(nèi)。分區(qū)容錯性:分布式系統(tǒng)遇到某節(jié)點或網(wǎng)絡分區(qū)故障時,仍然能夠正常運行并對外提供服務。對于大多數(shù)大型互聯(lián)網(wǎng)服務而言,節(jié)點故障、網(wǎng)絡故障是常態(tài),均采取保證AP和最終一致性的策略BASE理論:追求最終一致性
Basically Available:基本可用-系統(tǒng)出現(xiàn)故障時,允許損失部分可用性,保證核心可用Soft State:軟狀態(tài),允許系統(tǒng)存在中間狀態(tài),但中間狀態(tài)不會影響系統(tǒng)的整體可用性Eventual Consistency:最終一致性-所有數(shù)據(jù)副本經(jīng)過一定時間后,能最終達到一致的狀態(tài)一致性算法/共識算法:需要在每一條指令上執(zhí)行一個“一致性算法”以保證每個節(jié)點看到的指令一致。
一臺機器中多個進程/線程達成數(shù)據(jù)一致分布式文件系統(tǒng)或者分布式數(shù)據(jù)庫中多客戶端并發(fā)讀寫數(shù)據(jù)分布式存儲中多個副本響應讀寫請求的一致性。一致性算法Paxos普通哈希算法
分布式系統(tǒng)特性
容錯性高可拓展性開放性并發(fā)處理能力透明性
分布式系統(tǒng)類型
結構化存儲:MySQL非結構化存儲:HDFS,GFS半結構化存儲:NoSQL,Key-Value Store,對象存儲基于內(nèi)存存儲:利用Redis等作緩存NewSQL
分布式計算系統(tǒng)類型
基于消息的系統(tǒng):MPIDataFlow系統(tǒng):
HadoopSpark
分布式資源管理系統(tǒng)
Yarn:Hadoop 2.0版本,解決了原來Hadoop擴展性較差的問題Apache MesosSpark Standalone:Spark自帶的簡單的資源管理系統(tǒng),負責跟蹤集群狀態(tài)并調(diào)度計算任務Kubernets:Google開發(fā)的一個強大的容器編排框架,用戶通過Kubernets管理容器,不需要和底層交互
案例1
問題
現(xiàn)有A、B、C三臺機器和f1、f2、f3三個文件,如何進行分布式存儲(對外顯示它們存于同一硬盤空間,對外顯示依舊為一個完整文件);實現(xiàn)分布式存儲以后如何進行分布式計算(統(tǒng)計f1里每個單詞出現(xiàn)的次數(shù));如何實現(xiàn)分布式系統(tǒng)的可靠性(機器宕機了如何保證數(shù)據(jù)不丟失)
實現(xiàn)
分布式存儲:
將多臺機器硬盤以某種方式連接到一起采用客戶-服務器模式構建分布式存儲集群 讓A管理B,CDFS:
對內(nèi):隨意添加“客戶”,硬盤無限擴大對外:整個集群就像是一臺機器、一片云,硬盤顯示為統(tǒng)一存儲空間,文件接口統(tǒng)一分布式計算:
取新機器D作為服務器,采用客戶-服務器模式構建由機器B、C和D組成的分布式計算集群A明確知道每一份數(shù)據(jù)都存儲在多個地方;D會要求存有待計算數(shù)據(jù)的機器都參與計算,并選擇先結束的機器計算結果;冗余存儲不僅提高了分布式存儲的可靠性,也提高了分布式計算的可靠性
?工具
Hadoop
Hadoop 1.0
Hadoop Common:支持其他兩個模塊的公用組件Hadoop DFS:分布式文件系統(tǒng)Hadoop MapReduce:分布式計算框架Hadoop 2.0
分布式存儲HDFS分布式操作系統(tǒng)Yarn通過調(diào)用程序庫,可使用簡單的編程模型處理分布在不同機器上的大規(guī)模數(shù)據(jù)采用客戶-服務器模式整體架構
構建大型分布式集群,提供海量存儲和計算服務存儲半結構化業(yè)務數(shù)據(jù)
分布式存儲HDFS
內(nèi)部特性:冗余備份、副本存放、副本選擇、心跳檢測 數(shù)據(jù)完整性檢測、元數(shù)據(jù)磁盤失效 簡單一致性模型、流式數(shù)據(jù)訪問、客戶端緩存 流水線復制、架構特征、超大規(guī)模數(shù)據(jù)集對外功能:
Namenode高可靠性:配置多個NameNode,一個失效時立即替換HDFS快照:當數(shù)據(jù)損壞時,支持回滾到正確的時間節(jié)點元數(shù)據(jù)管理與恢復工具:通過命令hdfs oiv和hdfs oev管理修復fsimage和editsHDFS安全性:用戶和文件級別安全認證、機器和服務級別安全認證HDFS配額功能:管理目錄或文件配額大小 HDFS C語言接口:使用C語言操HDFS的接口HDFS Short-Circuit功能:客戶端可以繞開Datanode直接讀取本機數(shù)據(jù),加快map操作 WebHdfs:通過Web方式操作HDFS(插、刪、改、查)
?分布式操作系統(tǒng)Yarn
管理計算機資源、提供用戶和程序訪問系統(tǒng)資源的API
包含實體:
Client:客戶端,負責向集群提交作業(yè)。ResourceManager:集群主進程,仲裁中心,負責集群資源管理和任務調(diào)度。Scheduler:資源仲裁模塊。ApplicationManager:選定,啟動和監(jiān)管ApplicationMaster。NodeManager:集群從進程,管理監(jiān)視Containers,執(zhí)行具體任務Container:本機資源集合體,如某Container為4個CPU,8GB內(nèi)存。ApplicationMaster:任務執(zhí)行和監(jiān)管中心。自帶兩種策略
容量調(diào)度算法CapacityScheduler:按照配置好的資源配比為不同層級的用戶分配最大可用資源公平調(diào)度算法FairScheduler:任務公平使用集群資源,短任務在合理時間內(nèi)完成;長任務不至于永遠等待資源管理——Yarn是可編程的,不僅僅支持自帶的MapReduce,還可以自定義算子一套編程協(xié)議 Client負責提交任務,ApplicationMaster負責執(zhí)行任務 Client中與RM通信;ApplicationMaster與RM通信;ApplicationMaster與NM通信 編寫符合協(xié)議的Client和ApplicationMaster即可
Zookeeper
提供通用的分布式協(xié)調(diào)服務,管理物理分布的子進程(如資源、任務分配等由多個Server組成的集群;一個Leader,多個Follower每個Server都保存了一份數(shù)據(jù)副本全局數(shù)據(jù)一致;分布式讀寫 更新請求轉發(fā),由Leader實施使用約定:
更新請求順序執(zhí)行:來自同一個Client的更新請求按其發(fā)送順序依次執(zhí)行數(shù)據(jù)更新原子性:一次數(shù)據(jù)更新要么成功,要么失敗。全局唯一數(shù)據(jù)視圖:Client無論連接哪個Server,數(shù)據(jù)視圖都是一致的實時性:在一定時間范圍內(nèi),Client能讀到最新數(shù)據(jù)統(tǒng)一命名服務、配置管理服務
Hbase
基于Hadoop的開源分布式數(shù)據(jù)庫,以Google BigTable為原型
Pig
構建在Hadoop之上,用來處理大規(guī)模數(shù)據(jù)集的腳本語言平臺,將根據(jù)業(yè)務邏輯寫好的數(shù)據(jù)流腳本翻譯成多個HDFS、Map和Reduce的操作。類似于MapReduce的另一個編程入口
Pig Latin-->MapReduce-->cluster
Hive
MapReduce的一個高層抽象,像是一個數(shù)據(jù)庫接口,使用類SQL的HSQL提供查詢和操作服務
Flume
分布式高性能、高可靠地數(shù)據(jù)傳輸工具
實踐--基于華為云的Flink實踐
手冊鏈接:鏈接:https://pan.baidu.com/s/1GqLBSiRy6slHiier0A_UXQ?pwd=i0ym? 提取碼:i0ym
遇到的問題:
在worker1、worker2、worker3中執(zhí)行/usr/local/zookeeper/bin/zkServer.sh start
/usr/local/zookeeper/bin/zkServer.sh status時報錯:
?"Error contacting service. It is probably not running."
?分析:在前面的配置環(huán)節(jié)中修改了配置文件zoo.cfg,修改了數(shù)據(jù)目錄,添加了以下內(nèi)容
server.1=worker1:2888:3888
server.2=worker2:2888:3888
server.3=worker3:2888:3888
admin.enableServer=true
quorumListenOnAllIPs=true
server.1=worker1:2888:3888:這一行表示 Zookeeper 集群中的第一個服務器,其中?worker1:2888:3888?表示服務器的信息,包括 hostname 或 IP 地址、用于選舉(election)的端口(2888)和用于數(shù)據(jù)傳輸(data transfer)的端口(3888)。 server.2=worker2:2888:3888?和?server.3=worker3:2888:3888:這兩行表示集群中的第二個和第三個服務器,具有類似的格式,分別對應不同的服務器信息。 admin.enableServer=true:這行配置表示啟用了 Zookeeper 集群中的管理員服務,該服務用于管理和監(jiān)控集群的狀態(tài)和配置。 quorumListenOnAllIPs=true:這行配置表示在 quorum 通信時 Zookeeper 服務將監(jiān)聽所有的 IP 地址,包括本地和外部 IP 地址,以進行集群之間的通信和數(shù)據(jù)同步。
在網(wǎng)上查找了很多解決錯誤的方法,參考:Zookeeper啟動顯示成功,zkServer.sh status報錯:Error contacting service. It is probably not running.-CSDN博客
但我的問題還是沒解決,不確定服務是否啟動可以使用這個命令在前臺運行,通過報錯信息排查:
zkServer.sh start-foreground
最后我發(fā)現(xiàn)我的服務能夠成功啟動,但是一直無法連接其他worker,最后我在每個worker的安全組里面加上2888端口和3888端口成功解決問題。
柚子快報激活碼778899分享:云計算·分布式計算實踐
精彩鏈接
本文內(nèi)容根據(jù)網(wǎng)絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉載請注明,如有侵權,聯(lián)系刪除。