大數據架構師之路 | 概念術語理解

架構師,不明覺厲,也是我的追求目標,因此蒐集了很多大數據架構相關的知識,理解並整理出來,一起學習。


知識拓展

大數據人工智能行業技術人員必備技能

hive入門 | 數據類型、數據存儲、數據結構詳解+SQl代碼示例

hive進階 | 數據的導入、數據查詢、Java客戶端詳解+代碼示例

Hadoop基礎與實戰 | 簡明理解

大數據流式計算 storm 基礎


kafka

kafka是什麼:

是用於構建實時數據管道和流應用程序。具有橫向擴展,容錯,wicked fast(變態快)等優點,並已在成千上萬家公司運行。

理解kafka:

舉個例子,生產者消費者,生產者生產雞蛋,消費者消費雞蛋,生產者生產一個雞蛋,消費者就消費一個雞蛋,假設消費者消費雞蛋的時候噎住了(系統宕機了),生產者還在生產雞蛋,那新生產的雞蛋就丟失了。再比如生產者很強勁(大交易量的情況),生產者1秒鐘生產100個雞蛋,消費者1秒鐘只能吃50個雞蛋,那要不了一會,消費者就吃不消了(消息堵塞,最終導致系統超時),消費者拒絕再吃了,”雞蛋“又丟失了,這個時候我們放個籃子在它們中間,生產出來的雞蛋都放到籃子裏,消費者去籃子裏拿雞蛋,這樣雞蛋就不會丟失了,都在籃子裏,而這個籃子就是”kafka“。
雞蛋其實就是“數據流”,系統之間的交互都是通過“數據流”來傳輸的(就是tcp、http什麼的),也稱爲報文,也叫“消息”。
消息隊列滿了,其實就是籃子滿了,”雞蛋“ 放不下了,那趕緊多放幾個籃子,其實就是kafka的擴容。
各位現在知道kafka是幹什麼的了吧,它就是那個”籃子”。

名詞解釋:

● producer:生產者,就是它來生產“雞蛋”的。
● consumer:消費者,生出的“雞蛋”它來消費。
● topic:你把它理解爲標籤,生產者每生產出來一個雞蛋就貼上一個標籤(topic),消費者可不是誰生產的“雞蛋”都吃的,這樣不同的生產者生產出來的“雞蛋”,消費者就可以選擇性的“吃”了。
● broker:就是籃子了。
大家一定要學會抽象的去思考,上面只是屬於業務的角度,如果從技術角度,topic標籤實際就是隊列,生產者把所有“雞蛋(消息)”都放到對應的隊列裏了,消費者到指定的隊列裏取。


ZooKeeper

ZooKeeper是什麼:

是一種爲分佈式應用所設計的高可用、高性能且一致的開源協調服務,它提供了一項基本服務:分佈式鎖服務。由於ZooKeeper的開源特性,後來我們的開發者在分佈式鎖的基礎上,摸索了出了其他的使用方法:配置維護、組服務、分佈式消息隊列、分佈式通知/協調等。

理解分佈式鎖應用場景:

在分佈式鎖服務中,有一種最典型應用場景,就是通過對集羣進行Master選舉,來解決分佈式系統中的單點故障。什麼是分佈式系統中的單點故障:通常分佈式系統採用主從模式,就是一個主控機連接多個處理節點。主節點負責分發任務,從節點負責處理任務,當我們的主節點發生故障時,那麼整個系統就都癱瘓了,那麼我們把這種故障叫作單點故障。

傳統方式

是採用一個備用節點,這個備用節點定期給當前主節點發送ping包,主節點收到ping包以後向備用節點發送回復Ack,當備用節點收到回覆的時候就會認爲當前主節點還活着,讓他繼續提供服務。
當主節點掛了,這時候備用節點收不到回覆了,然後他就認爲主節點掛了接替他成爲主節點。
但是這種方式就是有一個隱患,就是網絡問題。
也就是說我們的主節點的並沒有掛,只是在回覆的時候網絡發生故障,這樣我們的備用節點同樣收不到回覆,就會認爲主節點掛了,然後備用節點將他的Master實例啓動起來,這樣我們的分佈式系統當中就有了兩個主節點也就是—雙Master, 出現Master以後我們的從節點就會將它所做的事一部分彙報給了主節點,一部分彙報給了從節點,這樣服務就全亂了。爲了防止出現這種情況,我們引入了 ZooKeeper,它雖然不能避免網絡故障,但它能夠保證每時每刻只有一個Master。我麼來看一下ZooKeeper是如何實現的。

ZooKeeper解決方案

(1) Master啓動
在引入了Zookeeper以後我們啓動了兩個主節點,”主節點-A”和”主節點-B”他們啓動以後,都向ZooKeeper去註冊一個節點。我們 假設”主節點-A”鎖註冊地節點是”master-00001”,”主節點-B”註冊的節點是”master-00002”,註冊完以後進行選舉,編號最 小的節點將在選舉中獲勝獲得鎖成爲主節點,也就是我們的”主節點-A”將會獲得鎖成爲主節點,然後”主節點-B”將被阻塞成爲一個備用節點。那麼,通過這 種方式就完成了對兩個Master進程的調度。
(2) Master故障
如果”主節點-A”掛了,這時候他所註冊的節點將被自動刪除,ZooKeeper會自動感知節點的變化,然後再次發出選舉,這時候”主節點-B”將在選舉中獲勝,替代”主節點-A”成爲主節點。
(3) Master 恢復
如果主節點恢復了,他會再次向ZooKeeper註冊一個節點,這時候他註冊的節點將會是”master-00003”,ZooKeeper會感知節點的變化再次發動選舉,這時候”主節點-B”在選舉中會再次獲勝繼續擔任”主節點”,”主節點-A”會擔任備用節點。


Storm

Storm是什麼

Storm是一個免費並開源的分佈式實時計算系統。利用Storm可以很容易做到可靠地處理無限的數據流,像Hadoop批量處理大數據一樣,Storm可以實時處理數據。Storm簡單,可以使用任何編程語言。

深入理解storm

在Storm之前,進行實時處理是非常痛苦的事情: 需要維護一堆消息隊列和消費者,他們構成了非常複雜的圖結構。消費者進程從隊列裏取消息,處理完成後,去更新數據庫,或者給其他隊列發新消息。
這樣進行實時處理是非常痛苦的。我們主要的時間都花在關注往哪裏發消息,從哪裏接收消息,消息如何序列化,真正的業務邏輯只佔了源代碼的一小部分。一個應用程序的邏輯運行在很多worker上,但這些worker需要各自單獨部署,還需要部署消息隊列。最大問題是系統很脆弱,而且不是容錯的:需要自己保證消息隊列和worker進程工作正常。
Storm完整地解決了這些問題。它是爲分佈式場景而生的,抽象了消息傳遞,會自動地在集羣機器上併發地處理流式計算,讓你專注於實時處理的業務邏輯。

Storm的特點

  • 編程簡單:開發人員只需要關注應用邏輯,而且跟Hadoop類似,Storm提供的編程原語也很簡單
  • 高性能,低延遲:可以應用於廣告搜索引擎這種要求對廣告主的操作進行實時響應的場景。
  • 分佈式:可以輕鬆應對數據量大,單機搞不定的場景
  • 可擴展: 隨着業務發展,數據量和計算量越來越大,系統可水平擴展
  • 容錯:單個節點掛了不影響應用
  • 消息不丟失:保證消息處理

Hadoop

hadoop是什麼

Hadoop是一個用於分佈式大數據處理的編程框架。同時它也是個大數據處理完整的生態系統,圍繞着Hadoop,這個生態系統還包括但不限於:
● HBase
● Hive
● Pig
● Spark
● ZooKeeper

理解hadoop

假設老王在某不知名IT公司工作,由於最近太陽活動異常,引起了領導的外甥的讀碩士的同學的關注,領導讓老王把山西鐵島太陽射電望遠鏡觀測到的近30年的太陽射電數據下載下來,讓老王從裏面找到最高的記錄。老王畢竟搞挨踢已有多年,雖然技術不行,終日碌碌無爲,但多年的直覺告訴老王這個很簡單。老王立刻下載了其中一個文件並大致看了文件的機構:數據保存在txt文件裏,每行N列,其中包含了時間和數據信息列,大約每0.1s記錄一條數據,一個文件記錄15分鐘的數據,大約有9000條記錄,1個小時4個文件,1天96個文件,30年大約1051200個文件,一共大約100億條數據,這其中還有一些損壞的文件,還有一些用9999表示的未檢測到值的佔位數據需要特殊照顧。
老王覺得單機處理這些數據耗時太久,於是老王找來一些公司淘汰下來的舊服務器(一般小公司最破的機器都是服務器),準備每個機器負責一部分,最後把結果彙總,老王在開發的過程中還是遇到了很多問題,比如,如何分配任務,有的機器破,有的機器新,還有的文件大,有的文件小,總是不能保證所有的任務一起完成,先完成任務的機器閒置浪費掉了資源;還有最後把結果通過網絡通信匯總起來,如何保證數據不丟失,不覆蓋;還有如果某臺機器出了問題,如何重新分配任務,這些非核心業務的開發使得老王心力憔悴,還好,老王最後找到了Hadoop這個工具,這個工具給老王提供了一個簡單的編程模型,老王在map方法中寫了分配的任務的邏輯,在reduce方法中寫了合併結果的邏輯,然後Hadoop幫老王完成了其他所有事情,Hadoop就是幹這個的。

Hadoop核心項目

HDFS: Hadoop Distributed File System 分佈式文件系統
MapReduce:並行計算框架

HDFS架構

(1) 主從結構

•主節點,只有一個: namenode
•從節點,有很多個: datanodes

(2) namenode負責:管理

•接收用戶操作請求,可以實現對文件系統的操作(一般的操作方式有兩種,命令行方式和Java API方式)
•維護文件系統的目錄結構(用來對文件進行分類管理)。
•管理文件與block之間關係(文件被劃分成了Block,Block屬於哪個文件,以及Block的順序好比電影剪輯),block與datanode之間關係。

(3) datanode負責:存儲

•存儲文件
•文件被分成block(block一般是以64M來劃分,但每個Block塊所佔用的空間是文件實際的空間)存儲在磁盤上,將大數據劃分成相對較小的block塊,這樣可以充分利用磁盤空間,方便管理。
•爲保證數據安全,文件會有多個副本(就好比配鑰匙,都是爲了預防丟失),這些副本會一塊一塊複製,分別存儲在不同的DataNode上。

MapReduce架構

(1)主從結構

•主節點,只有一個: JobTracker
•從節點,有很多個: TaskTrackers

(2)JobTracker 負責

•接收客戶提交的計算任務
•把計算任務分給TaskTrackers執行
•監控TaskTracker的執行情況

(3)TaskTrackers負責

•執行JobTracker分配的計算任務


HBase

HBase是什麼

HBase是Apache Hadoop的數據庫,能夠對大型數據提供隨機、實時的讀寫訪問。HBase的目標是存儲並處理大型的數據。HBase是一個開源的,分佈式的,多版本的,面向列的存儲模型。它存儲的是鬆散型數據

理解HBase

HBase是Google BigTable的開源實現,其相互對應如下:

Tables Google HBase
文件存儲系統 GFS HDFS
海量數據處理 MapReduce Hadoop MapReduce
協同服務管理 Chubby Zookeeper

HBase位於結構化存儲層,圍繞HBase,各部件對HBase的支持情況:

Hadoop部件 作用
HDFS 高可靠的底層存儲支持
MapReduce 高性能的計算能力
Zookeeper 穩定服務和failover機制
Pig&Hive 高層語言支持,便於數據統計
Sqoop 提供RDBMS數據導入,便於傳統數據庫向HBase遷移

HIVE

Hive是什麼

Hive 是建立在 Hadoop 上的數據倉庫基礎構架。它提供了一系列的工具,可以用來進行數據提取轉化加載(ETL),這是一種可以存儲、查詢和分析存儲在 Hadoop 中的大規模數據的機制。

理解Hive

馬雲在退休的時候說互聯網現在進入了大數據時代,大數據是現在互聯網的趨勢,而hadoop就是大數據時代裏的核心技術,但是hadoop和mapreduce操作專業型太強,所以facebook在這些的基礎上開發了hive框架,畢竟世界上會sql的人比會java的人多的多,hive是可以說是學習hadoop相關技術的一個突破口


docker

docker是什麼

Docker是基於Go語言實現的雲開源項目,誕生於2013年初,最初發起者是dotCloud公司,其目標是“Build, Ship and Run Any App, Anywhere”,主要概念包括鏡像、容器、倉庫。Docker引擎的技術是Linux容器(Linux Containers, LXC)技術。容器有效地將由單個操作系統的資源劃分到孤立的組中,以便更好地在孤立的組之間平衡有衝突的資源使用需求。

docker的優點

1.快速分發應用

Docker可以幫助你把控開發各個週期。Docker允許你在本地的開發環境中進行代碼開發,然後將開發好的應用整合到團隊的開發流程中。
比如:你可以再本地編寫代碼,當編寫完成後。你將代碼開發堆棧信息共享給團隊成員。當他們也編寫完成後,同樣共享開發堆棧信息。然後再測試環境中,使用團隊共享的開發堆棧就可以進行所需要的測試了。當完成測試後,團隊就可以將測試通過的docker鏡像(images)發佈到產品環境中。
 
2. 方便部署和易於管理

Docker基於容器的機制可以很容易進行部署。Docker容器可以在本地主機上面執行,也可以在虛擬機中執行,不論這些虛擬機是在本地或者雲中。
Docker快速部署和輕量級的特性也使得管理負載變得很容易。你可以快速啓動或者銷燬容器。這種時間幾乎是實時的。
 
3. 可以執行大量的工作負載

因爲Docker具有便於部署和快速啓停的方式,同時docker也提供了可行的,符合效益-成本的虛擬機管理機制。使得docker很適合負載要求高的環境。比如:將你的雲平臺作爲PAAS用途時,或者你要求你的環境具有高資源使用率時。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章