題目:如何用形象的比喻描述大資料的技術生態?
其實也不用形象的比喻你就能懂,
首先需要知道Hadoop生態圈主要包含哪些框架
HDFS:Hadoop分散式檔案系統
MapReduce:MapReduce分散式程式設計模型
Yarn:資源分配
Hbase:海量資料庫,面向列
Hive:透過SQL操作結構化資料,為使用者操作結構化資料提供一個易用的介面。
Flume:日誌收集
Kafka:訊息佇列
Storm:流計算
Spark框架
Spark-Core:Spark框架的核心,包括RDD,任務排程等。
Spark-SQL:作用也是透過SQL操作結構化資料,提供一個易用的介面,相當於一個前端,其後端可以包括HDFS、MongoDB等。
Spark-Streaming:流計算
Spark-Mlib:機器學習庫
Spark-GraphX:圖計算
下面的四個模組都是在Spark-Core的基礎上實現的,可以看出來Spark其主要作用還是在於高效計算,其核心在於RDD與任務排程。
所以在學習的時候可以重點關注Hadoop的儲存,Spark的計算,發揮各自的優勢。
早些的時候,我聽過一句話計算機的東西無非就三樣,儲存、計算和通訊,下面就從這三點理一下大資料生態圈的那些框架
檔案系統:HDFS
資料庫:HBase
批計算:MapReduce,Spark-Core
互動式計算:Hive,Spark-SQL
實時計算:Storm,Spark-Streaming
分散式框架一般都會需要一個基礎,那就是RPC(遠端過程呼叫),RPC提供了這樣一種功能,客戶端和服務端遵循某種介面協議,當客戶端呼叫介面協議中的某個函式時,會轉發給服務端,然後服務端呼叫服務端的實現函式,透過序列化在將結果透過網路返回給客戶端。
在學習這些框架的時候,無非就是先學習
它是幹什麼的,使用場景?
它的架構,元件包括哪些?
一些重要的流程?
在深入的話就是原始碼了。
接下來說一說MapReduce,它的主要原理是演算法思想中的分治法,也就是把一個大的作業分發到不同的子節點去分別執行,在將結果合併,MR分為兩個版本MRv1和MRv2,MR主要由程式設計模型(MapReduce API)、資源管理與作業控制(v1:JobTracker,TaskTracker,v2:Yarn)、資料處理引擎(MapTask、ReduceTask)。v1和v2的主要區別在於,v1將資源管理和作業控制都交給JobTracker,而v2將資源管理和作業控制分開,分別由RM和NM(AppMaster)節點去管理。MR的執行過程其實也挺複雜,裡面包含多處最佳化、容錯等機制,簡單說一下就是先對資料進行分片,然後用一個RecorderReader不斷的去讀這個分片,解析出一個kv,在去呼叫使用者編寫map,處理完後寫入到一個緩衝區中,在溢位到磁碟,然後執行reduce任務的節點在從map節點拉取結果(透過http方式),依次透過合併,歸併排序,執行使用者編寫的reduce函式,在寫入到相應的輸出中(例如HDFS)。
HBase,海量資料庫,以HDFS為基礎,可擴充套件,高可靠,關鍵概念有下面一些:行健、列族、cell、版本,透過這四個座標可以確定一條資料。元件包括HMaster和RegionServer,其中HMaster負責RegionServer的執行狀態和RegionServer的負載均衡,當表格過大時,就會分割成Region,儲存到不同的RegionServer上,一個RegionServer上可以包含多個Region,Region以Hfile的形式儲存在HDFS上,所以Region是個邏輯概念,這麼多的資料,索引必然成為一個問題,Hbase採取的方式是二級索引,有點像作業系統中的頁表。
想要了解大資料可以關注我,每天都有新的資料更新,想要學習資料私信【學習】
題目:如何用形象的比喻描述大資料的技術生態?
其實也不用形象的比喻你就能懂,
首先需要知道Hadoop生態圈主要包含哪些框架
1. HadoopHDFS:Hadoop分散式檔案系統
MapReduce:MapReduce分散式程式設計模型
Yarn:資源分配
Hbase:海量資料庫,面向列
Hive:透過SQL操作結構化資料,為使用者操作結構化資料提供一個易用的介面。
Flume:日誌收集
Kafka:訊息佇列
Storm:流計算
Spark框架
Spark-Core:Spark框架的核心,包括RDD,任務排程等。
Spark-SQL:作用也是透過SQL操作結構化資料,提供一個易用的介面,相當於一個前端,其後端可以包括HDFS、MongoDB等。
Spark-Streaming:流計算
Spark-Mlib:機器學習庫
Spark-GraphX:圖計算
下面的四個模組都是在Spark-Core的基礎上實現的,可以看出來Spark其主要作用還是在於高效計算,其核心在於RDD與任務排程。
所以在學習的時候可以重點關注Hadoop的儲存,Spark的計算,發揮各自的優勢。
早些的時候,我聽過一句話計算機的東西無非就三樣,儲存、計算和通訊,下面就從這三點理一下大資料生態圈的那些框架
1.儲存檔案系統:HDFS
資料庫:HBase
2. 計算批計算:MapReduce,Spark-Core
互動式計算:Hive,Spark-SQL
實時計算:Storm,Spark-Streaming
3. 通訊分散式框架一般都會需要一個基礎,那就是RPC(遠端過程呼叫),RPC提供了這樣一種功能,客戶端和服務端遵循某種介面協議,當客戶端呼叫介面協議中的某個函式時,會轉發給服務端,然後服務端呼叫服務端的實現函式,透過序列化在將結果透過網路返回給客戶端。
在學習這些框架的時候,無非就是先學習
它是幹什麼的,使用場景?
它的架構,元件包括哪些?
一些重要的流程?
在深入的話就是原始碼了。
HDFS主要解決海量檔案儲存,它提供一個高可靠、可擴充套件的分散式檔案儲存系統,其主要元件包含NameNode與DataNode,其中NameNode負責管理資料的元資訊,DataNode負責儲存實際的資料資訊,重要的流程比如上傳檔案(其實很複雜),首先客戶端會向NameNode申請元資訊,拿到元資訊後,客戶端就會想相應的DataNode寫資料,如果副本數為3的話,客戶端會拿到三個元資訊(一般不會在同一個DataNode上),然後用這三個DataNode組成Pipline,客戶端只負責第一個DataNode資料的寫入,後續的DataNode的資料由前一個DataNode負責寫入。這樣的話,一個叢集中就會有三份資料,提供了高可靠,當然這個寫過程中還包括容錯(寫過程中某個環節出錯),也有執行中的容錯,比如執行中某個節點突然宕機,最嚴重的NameNode節點宕機該怎麼辦?不展開說了,太多一時半會講不完。接下來說一說MapReduce,它的主要原理是演算法思想中的分治法,也就是把一個大的作業分發到不同的子節點去分別執行,在將結果合併,MR分為兩個版本MRv1和MRv2,MR主要由程式設計模型(MapReduce API)、資源管理與作業控制(v1:JobTracker,TaskTracker,v2:Yarn)、資料處理引擎(MapTask、ReduceTask)。v1和v2的主要區別在於,v1將資源管理和作業控制都交給JobTracker,而v2將資源管理和作業控制分開,分別由RM和NM(AppMaster)節點去管理。MR的執行過程其實也挺複雜,裡面包含多處最佳化、容錯等機制,簡單說一下就是先對資料進行分片,然後用一個RecorderReader不斷的去讀這個分片,解析出一個kv,在去呼叫使用者編寫map,處理完後寫入到一個緩衝區中,在溢位到磁碟,然後執行reduce任務的節點在從map節點拉取結果(透過http方式),依次透過合併,歸併排序,執行使用者編寫的reduce函式,在寫入到相應的輸出中(例如HDFS)。
下面說一下Yarn,Yarn框架主要作用是資源管理,它上面可以執行多種計算框架,MapReduce,Spark等,以MR的提交為例,客戶端先從RM上申請一個JobID,然後向一個共享檔案系統提交作業(包括作業配置檔案,切片),RM分配資源,在NM中分配一個Container,其中一臺是AppMaster,其他NM負責執行map,reduce任務,AppMaster負責map、reduce任務的啟動與跟蹤,當map任務結束後,reduce任務會拉取map任務的結果,這個時候就需要知道map和任務節點的對映關係,因為AppMaster會向RM報告任務先關資訊,所以從RM中可以獲取對映關係,當任務結束後,RM回收NM的資源並更新叢集資源資訊。HBase,海量資料庫,以HDFS為基礎,可擴充套件,高可靠,關鍵概念有下面一些:行健、列族、cell、版本,透過這四個座標可以確定一條資料。元件包括HMaster和RegionServer,其中HMaster負責RegionServer的執行狀態和RegionServer的負載均衡,當表格過大時,就會分割成Region,儲存到不同的RegionServer上,一個RegionServer上可以包含多個Region,Region以Hfile的形式儲存在HDFS上,所以Region是個邏輯概念,這麼多的資料,索引必然成為一個問題,Hbase採取的方式是二級索引,有點像作業系統中的頁表。
Spark,高效計算框架,因為是學院派做的,又加入了機器學習、圖計算框架,它的核心在於RDD與任務排程,從資料結構的角度看RDD,它就是一種資料結構加上操作資料結構的API,RDD的操作主要分為Transformation和Action任務執行主要分為兩個步驟,Stage劃分與提交,Task排程與執行,說到這裡,又不得不說一下Spark的APP模型,一個App中可以包含多個action操作,一個action操作會觸發一個Job,一個Job包含多個Stage,每個Stage中會包含一個或多個RDD,一個RDD包含一個或多個Partition...各個階段RDD的依賴主要是由DAGScheduler計算得到的,然後在提交執行的時候,會將Stage轉換為Taskset,由TaskScheduler把Tasks排程到相應的Worker節點,交由Executor執行。想要了解大資料可以關注我,每天都有新的資料更新,想要學習資料私信【學習】