20年清華掃地僧,整理的Storm、Spark學習筆記,面試官:拿來看看

寫在前面

大數據並不是一個突如其來的時興科技詞語,而是在厚積薄發中不斷演變,時機到來時一下變得廣爲人知。傳統數據庫和數據倉庫的統治地位本來看上去牢不可破,隨着Hadoop等大數據技術的日趨成熟,這種情況到了終結的時候。

作爲當前最受關注的實時大數據開源平臺項目,Storm和Spark都能爲廣大潛在用戶提供良好的實時大數據處理功能。除在功能方面的部分交集外,Storm、 Spark 還各自擁有獨特的特性與市場定位。

 

企業過去曾執迷於數據倉庫的開發。通過這些數據倉庫,企業努力從每個可能的數據源獲取數據並存儲下來,再利用各種商業智能工具對數據倉庫中存儲的數據進行分析。但是開發數據倉庫是一個複雜、耗時和大開銷的過程,需要相當程度的資金和時間投入。Hadoop及其生態系統的湧現無疑爲海量大數據問題的處理提供了一種新的方法或架構,通過這種低成本、可伸縮的解決方案,過去需要數天時間處理的成TB數據將在幾小時內被處理完畢。

 

爲應對這些企業實時數據分析的應用場景,出現了一些高性能、易於使用的開源平臺。Apache Storm和Apache Spark是其中最爲引人注目的代表性平臺,能夠爲廣大相關用戶提供實時數據處理和分析功能。這兩個項目都歸屬於Apache 軟件基金會。儘管有部分功能重疊,這兩個工具平臺仍保持着各自的特色和不同功能。

 

相信看到這裏,大家應該對Hadoop、Storm和Spark的學習內容及路線有了一定認識,那現在是不是就差一篇學習Storm和Spark的寶典了呢?

主要結構

本篇結合真實的大數據用例,爲讀者提供了快速設計、實施和部署實時分析所需的技巧,主要涉及以下內容:

  • 探討大數據技術和框架。
  • 比照實時分析與批量分析的應用情景,應對大數據實踐所面臨的挑戰。
  • 採用Apache Storm的編程範式開發處理、分析實時數據的現實應用。
  • 接受處理實時事務性數據。
  • 針對不同任務和產品部署情況,優化Apache Storm實現。
  • 使用Amazon Kinesis和Elastic MapReduce進行數據的處理和流傳遞。
  • 使用Spark SQL進行交互式、探索式的數據分析。
  • 應用Spark Streaming進行實時分析。
  • 爲實時和批量分析開發通用型的企業架構和應用。

整體預覽

本篇根據業務應用需求選用恰當的技術平臺,既涵蓋了不同實時數據處理框架和技術的基礎知識,又論述了大數據批量及實時處理的差異化細節,還深入探討了使用Storm、Spark 進行大數據處理的技術和程序設計概念。

以豐富的應用場景及範例說明如何利用Storm 進行實時大數據分析,既涉及了Storm的組件及關鍵概念內部實現的基礎,又整合了Kafka來處理實時事務性數據,還探討了Storm微小批處理抽象延伸的Trident框架和性能優化。此外,包括了使用Kinesis服務在亞馬遜雲上處理流數據的內容。本篇後半部分着重介紹瞭如何利用Spark爲實時和批量分析開發通用型的企業架構和應用,既可通過RDD編程輕鬆實現數據轉換和保存操作,亦介紹了Spark SQL訪問數據庫的實踐案例,還擴展了Spark Streaming 來分析流數據,最後利用Spark Streaming和Spark批處理等實現了實時批處理兼顧的Lambda架構。

第1章:大數據技術前景及分析平臺

 

本章探討了大數據技術領域的各個方面。已經討論過大數據環境中所使用的主要術語、定義、縮略語、組件和基礎設施,還描述了大數據分析平臺的架構。此外,還從順序處理到批處理,到分佈式,再到實時處理探討了大數據的各種進深計算方法。在本章結尾,相信大家者現在已經熟悉了大數據及其特點。


第2章:熟悉Storm

 

本章涉及不少Storm及其歷史沿革等方面內容,介紹了Storm的組件以及Storm某些關鍵概念的內部實現。其中瀏覽分析了實際的代碼,現在希望大家可以搭建Storm(本地版和集羣版)並運行Storm,編程部分基本範例。


第3章:用Storm處理數據

 

本章重點在於讓讀者熟悉Kafka及其基礎知識。此外,還整合了Kafka和Storm,探索了Storm的文件和套接字等其他數據源,然後介紹了可靠性和錨定等概念,還對Storm的聯結和批處理模式建立了理解。最後,通過Storm與數據庫的集成,瞭解並實現了Storm中的持久性。本章介紹了一些動手練習示例,建議大家自行嘗試實現。


第4章:Trident概述和Storm性能優化

 

本章重點在於讓大家熟悉Trident框架,以其作爲Storm微小批處理抽象的延伸。我們已經看到了Trident 的各種關鍵概念和操作,然後還探索了Storm 內部與LMAX、ZeroMQ和Netty的聯繫。最後總結了Storm 性能優化方面的內容。


第5章:熟悉Kinesis

 

在本章中,討論了Kinesis用於處理實時數據饋送的架構。使用AWSAPI探索了Kinesis流生產者和消費者的開發。最後,還提到諸如KPL和KCL此類更高級的API以及它們的示例,來作爲創建Kinesis生產者和消費者的推薦機制。


第6章:熟悉Spark

 

 

在本章中,討論了Spark及其各種組件的架構,還談到了Spark框架的一些核心組件,如RDD。此外,討論了Spark 及其各種核心API的包裝結構,還配置了Spark 集羣,並用Scala和Java編寫並執行了第一個Spark作業。


第7章:使用RDD編程

 

在本章中,討論了SparkRDDAPI提供的各種轉換及操作,還討論了各種現實問題,並通過使用Spark轉換及操作來解決它們。最後,還討論了Spark提供的用於性能優化的持久性/高速緩存。


第8章:Spark的SQL查詢引擎一Spark SQL

 

 

本章涵蓋了Spark SQL架構和各種組件在內的多個方面,還討論了在Scala中編寫Spark SQL作業的完整過程,同時討論了將Spark RDD轉換爲DataFrame的各種方法。在本章的中間部分,執行了Spark SQL的各種示例,包括使用如Hive/Parquet這些不同數據格式以及如模式演化和模式合併等重要方面,最後討論了Spark SQL代碼/查詢的性能調優的各個方面。


第9章:用Spark Streaming分析流數據

 

在本章中,討論了Spark Streaming的各個方面。討論了Spark Streaming的架構、組件和封裝結構,還編碼和執行了第一個Spark Streaming應用程序,也使用Spark Streaming和SparkSQL對芝加哥犯罪數據進行了實時分析。


第10章:介紹Lambda架構

 

在本章中討論了Lambda架構的各個方面。討論了Lambda架構的各個層/組件所執行的角色,還利用Spark和Cassandra來設計、開發和執行了Lambda架構的所有層。


適用讀者

本篇的讀者最好擁有Java或Scala語言的編程經驗,對Apache Hadoop等代表性分佈式計算平臺的基礎知識亦有一定了解。

本篇主要面向應用開源技術進行實時分析應用和框架開發的大數據架構師、開發者及程序員羣體。這些有實力的開發者閱讀本篇時可以運用Java或Scala語言的功底來進行高效的核心要素和應用編程實現。

本篇會幫助讀者直面不少大數據方面的難點及挑戰。不但包括應用於實時/準實時流數據及高頻採集數據處理分析的大量工具和技術,而且涵蓋了Apache Storm、ApacheSpark、Kinesis 等各種工具和技術的內存分佈式計算範式。

後記

任何技術都不是孤立發展的,大數據更是如此。在如今的大數據時代,任何項目的實現,基本上都需要應用大數據,而在此大潮中,我們又能把握住多少機會呢?

有對文中提到的PDF文檔有興趣的朋友,請轉發文章並關注小編,私信回覆【學習】即可哦~~~

喜歡小編請多多點贊評論分享,予人玫瑰,手有餘香,讓更多的的人看到獲益。

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