學習建議,大資料元件那麼多,可以重點學習這幾個

小柯同學發表於2021-05-25

經常有同學問我,基於Hadoop生態圈的大資料元件有很多,怎麼學的過來呢,畢竟精力有限,我們需要有側重點,我覺得下面這幾個元件至關重要,是基礎元件,大部分人都需要會的,其它元件可以用的時候再去查查資料學習。

  • hadoop
  • Hbase
  • Hive
  • Spark
  • Flink
  • Kafka

Hadoop

是大資料的基礎元件,很多元件都需要依賴它的分散式儲存、計算;主要包括Hdfs、MR、Yarn三部分,這個需要找一些好的資料(我的主頁有資料領取方法),好好學學各自的用法,熟練之後,需要了解其背後的原理。

基本的,你得知道hadoop安裝方法,cdh/hdp等等,啟動後幾個後臺程式各自的作用,namenode高可用,以及高可用基於zk,namenode對後設資料fs_image的儲存,還有datanode,jobhistoryserver等。

  • Hdfs:你需要知道檔案的基本操作,命令跟Linux命令差不多,用的時候自然就有機會敲了,上傳、下載,回收站,多副本容錯(hadoop3的糾刪碼容錯,不使用多副本了,可以節約空間),檔案分散式儲存的切分,檔案儲存格式,壓縮等待;
  • MR:主要是要掌握map -> shuffle -> reduce這一套經典程式設計模型的原理,MR的基本編寫方法,以及map切塊,reduce輸出,mapjoin優化,記憶體調優等等;
  • Yarn:作為一個資源排程工具,yarn的資源分配(以container為單位,container指的是包含一點cpu和記憶體),一些常用引數的配置(比如每個應用最多使用資源,每個container資源,虛擬記憶體率等等),為了任務之間不互相影響,引入資源排程池,將資源隔離開,任務的排程方式(FIFO,fair,capacity)等 YARN排程器(Scheduler)詳解

img

Hbase

這是一個基於Hdfs的列式儲存的分散式資料庫,在企業中使用普遍,需要重點學習其用法、原理和優化;Hbase叢集掛掉的一次驚險經歷

需要掌握的基本知識,hbase的基本原理,邏輯上的行與列,列式儲存,底層資料hfile基於hdfs,併發高,橫向擴充套件。hbase的HMaster和HRegionServer的作用,zk的作用,客戶端讀寫資料的流程,memstore和bucketcache等快取,region的分裂,建表預分割槽,rowkey的設計,資料容錯HLog等。

img

Hive

hive是基於Hadoop的一個資料倉儲工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce或者Spark任務進行執行。其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合資料倉儲的統計分析。

  1. hive建表,分割槽表,外部表;
  2. udf開發和使用,Hiveserver2訪問Hive;
  3. 關聯hbase,使用Spark作為執行引擎等;
  4. join優化;
  5. 資料傾斜;
  6. 常用視窗函式;
  7. 基於Hive搭建資料倉儲;

hive

Spark

Apache Spark 是專為大規模資料處理而設計的快速通用的計算引擎。Spark使用Scala開發,擁有Hadoop MapReduce所具有的優點,可以進行微批實時處理;但不同於MapReduce的是——Job中間輸出結果可以儲存在記憶體中,從而不再需要讀寫HDFS,因此Spark能更好地適用於資料探勘與機器學習等需要迭代的MapReduce的演算法。

  1. Spark架構,DAG排程器,standalone/yarn/Kubernetes 提供資源執行,記憶體管理;
  2. Spark Core,主要包括SparkContext,RDD、action和transform運算元;
  3. SparkStreaming,checkpoint和手動維護offset,消費kafka資料來源;
  4. SQL,DataFrame與RDD的轉化;
  5. Structured Streaming,有點雞肋,通常用Flink基於event實時處理;
  6. ML(機器學習),包含了大部分常用的演算法,分類、迴歸、聚類等等;
  7. Graphx,圖計算,有些行業需要用,比如社會關係挖掘、詐騙交易等;
  8. SparkR,資料科學工作者使用R進行大規模分散式計算,R很耗記憶體一直是個詬病;
  9. PySpark,Spark又是很包容的,提供了Python程式設計的Api;

圖9-7-Spark執行基本流程圖

Flink

這是個實時資料處理的元件,企業普遍使用,Flink狀態管理與狀態一致性(長文)。Apache Flink 是一個框架和分散式處理引擎,用於在無邊界和有邊界資料流上進行有狀態的計算。Flink 能在所有常見叢集環境中執行,並能以記憶體速度和任意規模進行計算。

主要包括,

  1. Flink的架構,提交應用在Yarn上面;
  2. DataSet / DataStream / Table Api ;
  3. Flink流式計算,flink對接kafka資料來源;
  4. 容錯,CheckPoint / Savepoint,兩階段提交等;
  5. Source / Sink操作(hbase、mysql、redis);
  6. WaterMark機制;
  7. 視窗函式Window;
  8. 不同資料流join操作;
  9. 側輸出(亂序、分流);
  10. Flink非同步IO;

img

Kafka:Apache Kafka® 是 一個分散式流處理平臺。可以讓你釋出和訂閱流式的記錄。這一方面與訊息佇列或者企業訊息系統類似。可以儲存流式的記錄,並且有較好的容錯性。可以在流式記錄產生時就進行處理。

  1. 生產者、消費者,消費者組、broker,leader,flower選舉等;
  2. topic,partition,多副本,資料同步,高水位等;
  3. 抗峰流,資料生命週期;
  4. 資料寫入的acks保證,資料的消費語義,資料的全域性和區域性有序;
  5. kafka效能為什麼這麼快,順序寫、零拷貝、分割槽併發、傳輸壓縮、時間輪等,面試常問;
  6. 新版本kafka摒棄了zk;

img

資料倉儲

資料倉儲是一個面向主題的(Subject Oriented)、整合的(Integrate)、相對穩定的(Non-Volatile)、反映歷史變化(Time Variant)的資料集合,用於支援管理決策,資料倉儲在資料平臺中的建設有兩個環節:一個是資料倉儲的構建,另外一個就是資料倉儲的應用。數倉架構發展史

  1. 經典的三正規化,維表和事實表;
  2. 星型模型,雪花模型,星座模型;
  3. 正規化建模和維度建模;
  4. 數倉分層,ods/dwd/dws/dim, ads層,dm層;
  5. 資料湖,與資料倉儲相比更加靈活和節約成本;

img

impala

Impala是Cloudera公司主導開發的新型查詢系統,它提供SQL語義,能查詢儲存在Hadoop的HDFS和HBase中的PB級大資料。已有的Hive系統雖然也提供了SQL語義,但由於Hive底層執行使用的是MapReduce引擎,仍然是一個批處理過程,難以滿足查詢的互動性。相比之下,Impala的最大特點也是最大賣點就是它的快速。

clickhouse

ClickHouse 是 Yandex(俄羅斯最大的搜尋引擎)開源的一個用於實時資料分析的基於列儲存的資料庫,其處理資料的速度比傳統方法快 100-1000 倍。

kylin

Apache Kylin™是一個開源的、分散式的分析型資料倉儲,提供Hadoop/Spark 之上的 SQL 查詢介面及多維分析(OLAP)能力以支援超大規模資料,最初由 eBay 開發並貢獻至開源社群。它能在亞秒內查詢巨大的表。

Apache Kylin™ 令使用者僅需三步,即可實現超大資料集上的亞秒級查詢。

  • 定義資料集上的一個星形或雪花形模型
  • 在定義的資料表上構建cube
  • 使用標準 SQL 通過 ODBC、JDBC 或 RESTFUL API 進行查詢,僅需亞秒級響應時間即可獲得查詢結果

kylin

**docker / Kubernetes **

Kubernetes 是一個可移植的、可擴充套件的開源平臺,用於管理容器化的工作負載和服務,可促進宣告式配置和自動化。 Kubernetes 擁有一個龐大且快速增長的生態系統。Kubernetes 的服務、支援和工具廣泛可用。

kudu

Kudu是Cloudera開源的新型列式儲存系統,是Apache Hadoop生態圈的成員之一(incubating),專門為了對快速變化的資料進行快速的分析,填補了以往Hadoop儲存層的空缺。

kudu

cdh/hdp

Apache Hadoop的開源協議決定了任何人可以對其進行修改,並作為開源或者商業版釋出/銷售。故而目前Hadoop發行版非常的多,有華為發行版(收費)、Intel發行版(收費)、Cloudera發行版CDH(免費)、Hortonworks版本HDP(免費),這些發行版都是基於Apache Hadoop衍生出來的。

當然了,還有很多其它的元件,比如sqoop,oozie等等,都有自己的應用場景。

相關文章