從入門到精通:大數據編程開發

從入門到精通:大數據編程開發

5 人贊了文章

很多人都知道大數據很火,就業很好,薪資很高,想往大數據方向發展。但該學哪些技術,學習路線是什麼樣的呢?

大數據的三個發展方向,平台搭建/優化/運維/監控、大數據開發/設計/架構、數據分析/挖掘。

大數據學習交流群:"點擊加入『』,群里都是學大數據開發的,如果你正在學習大數據 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大數據軟體開發相關的),包括我自己整理的一份2018最新的大數據進階資料和高級開發教程,歡迎進階中和想深入大數據的小夥伴加入。

先說一下大數據的4V特徵:

數據量大,TB->PB

數據類型繁多,結構化、非結構化文本、日誌、視頻、圖片、地理位置等;

商業價值高,但是這種價值需要在海量數據之上,通過數據分析與機器學習更快速的挖掘出來;

處理時效性高,海量數據的處理需求不再局限在離線計算當中。

現如今,正式為了應對大數據的這幾個特點,開源的大數據框架越來越多,越來越強,再列舉

一些常見的:

文件存儲:hadoop HDFS、Tachyon、KFS

離線計算:Hadoop MapReduce、Spark

流式、實時計算:Storm、Spark Streaming、S4、Heron

K-V、NOSQL資料庫:HBase、Redis、MongoDB

資源管理:YARN、Mesos

日誌收集:Flume、Scribe、Logstash、Kibana

消息系統:Kafka、StormMQ、ZeroMQ、RabbitMQ

查詢分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid

分散式協調服務:Zookeeper

集群管理與監控:Ambari、Ganglia、Nagios、Cloudera Manager

數據挖掘、機器學習:Mahout、Spark MLLib

數據同步:Sqoop

任務調度:Oozie

……

上面有30多種吧,別說精通了,全部都會使用的,估計也沒幾個。

詳細講講第二個方向(開發/設計/架構),這個方向相當容易找工作。

第一章:初識Hadoop

1.1 學會百度與Google

不論遇到什麼問題,先試試搜索並自己解決。

Google首選,翻不過去的,就用百度吧。

1.2 參考資料首選官方文檔

特別是對於入門來說,官方文檔永遠是首選文檔。

相信搞這塊的大多是文化人,英文湊合就行,實在看不下去的,請參考第一步。

1.3 先讓Hadoop跑起來

Hadoop可以算是大數據存儲和計算的開山鼻祖,現在大多開源的大數據框架都依賴Hadoop或者與它能很好的兼容。

關於Hadoop,你至少需要搞清楚以下是什麼:

Hadoop 1.0、Hadoop 2.0

MapReduce、HDFS

NameNode、DataNode

JobTracker、TaskTracker

Yarn、ResourceManager、NodeManager

自己搭建Hadoop,請使用第一步和第二步,能讓它跑起來就行。

建議先使用安裝包命令行安裝,不要使用管理工具安裝。

1.4 試試使用Hadoop

HDFS目錄操作命令;

上傳、下載文件命令;

提交運行MapReduce示常式序;

打開Hadoop WEB界面,查看Job運行狀態,查看Job運行日誌。

知道Hadoop的系統日誌在哪裡。

1.5 你該了解它們的原理了

MapReduce:如何分而治之;

HDFS:數據到底在哪裡,什麼是副本;

Yarn到底是什麼,它能幹什麼;

NameNode到底在幹些什麼;

ResourceManager到底在幹些什麼;

1.6 自己寫一個MapReduce程序

請仿照WordCount例子,自己寫一個(照抄也行)WordCount程序,

打包並提交到Hadoop運行。

你不會Java?Shell、Python都可以,有個東西叫Hadoop Streaming。

如果你認真完成了以上幾步,恭喜你,你的一隻腳已經進來了。

第二章:更高效的WordCount

2.1 學點SQL吧

你知道資料庫嗎?你會寫SQL嗎?

如果不會,請學點SQL吧。

2.2 SQL版WordCount

在1.6中,你寫(或者抄)的WordCount一共有幾行代碼?

例如:

SELECT word,COUNT(1) FROM wordcount GROUP BY word;

這便是SQL的魅力,編程需要幾十行,甚至上百行代碼,這一句就搞定;使用SQL處理分析Hadoop上的數據,方便、高效、易上手、更是趨勢。不論是離線計算還是實時計算,越來越多的大數據處理框架都在積極提供SQL介面。

2.3 SQL On Hadoop之Hive

什麼是Hive?官方給的解釋是:

The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax.

為什麼說Hive是數據倉庫工具,而不是資料庫工具呢?有的朋友可能不知道數據倉庫,數據倉庫是邏輯上的概念,底層使用的是資料庫,數據倉庫中的數據有這兩個特點:最全的歷史數據(海量)、相對穩定的;所謂相對穩定,指的是數據倉庫不同於業務系統資料庫,數據經常會被更新,數據一旦進入數據倉庫,很少會被更新和刪除,只會被大量查詢。而Hive,也是具備這兩個特點,因此,Hive適合做海量數據的數據倉庫工具,而不是資料庫工具。

2.4 安裝配置Hive

請參考1.1和 1.2 完成Hive的安裝配置。可以正常進入Hive命令行。

2.5 試試使用Hive

請參考1.1和 1.2 ,在Hive中創建wordcount表,並運行2.2中的SQL語句。

在Hadoop WEB界面中找到剛才運行的SQL任務。

看SQL查詢結果是否和1.4中MapReduce中的結果一致。

2.6 Hive是怎麼工作的

明明寫的是SQL,為什麼Hadoop WEB界面中看到的是MapReduce任務?

2.7 學會Hive的基本命令

創建、刪除表;

載入數據到表;

下載Hive表的數據;

請參考1.2,學習更多關於Hive的語法和命令。

如果你已經按照《寫給大數據開發初學者的話》中第一章和第二章的流程認真完整的走了一遍,那麼你應該已經具備以下技能和知識點:

0和Hadoop2.0的區別;

MapReduce的原理(還是那個經典的題目,一個10G大小的文件,給定1G大小的內存,如何使用Java程序統計出現次數最多的10個單詞及次數);

HDFS讀寫數據的流程;向HDFS中PUT數據;從HDFS中下載數據;

自己會寫簡單的MapReduce程序,運行出現問題,知道在哪裡查看日誌;

會寫簡單的SELECT、WHERE、GROUP BY等SQL語句;

Hive SQL轉換成MapReduce的大致流程;

Hive中常見的語句:創建表、刪除表、往表中載入數據、分區、將表中數據下載到本地;

從上面的學習,你已經了解到,HDFS是Hadoop提供的分散式存儲框架,它可以用來存儲海量數據,MapReduce是Hadoop提供的分散式計算框架,它可以用來統計和分析HDFS上的海量數據,而Hive則是SQL On Hadoop,Hive提供了SQL介面,開發人員只需要編寫簡單易上手的SQL語句,Hive負責把SQL翻譯成MapReduce,提交運行。

那麼問題來了,海量數據如何到HDFS上呢?

第三章:把別處的數據搞到Hadoop上

此處也可以叫做數據採集,把各個數據源的數據採集到Hadoop上。

3.1 HDFS PUT命令

這個在前面你應該已經使用過了。

put命令在實際環境中也比較常用,通常配合shell、python等腳本語言來使用。

建議熟練掌握。

3.2 HDFS API

HDFS提供了寫數據的API,自己用編程語言將數據寫入HDFS,put命令本身也是使用API。

實際環境中一般自己較少編寫程序使用API來寫數據到HDFS,通常都是使用其他框架封裝好的方法。比如:Hive中的INSERT語句,Spark中的saveAsTextfile等。

建議了解原理,會寫Demo。

3.3 Sqoop

Sqoop是一個主要用於Hadoop/Hive與傳統關係型資料庫Oracle/MySQL/SQLServer等之間進行數據交換的開源框架。

就像Hive把SQL翻譯成MapReduce一樣,Sqoop把你指定的參數翻譯成MapReduce,提交到Hadoop運行,完成Hadoop與其他資料庫之間的數據交換。

自己下載和配置Sqoop(建議先使用Sqoop1,Sqoop2比較複雜)。

了解Sqoop常用的配置參數和方法。

使用Sqoop完成從MySQL同步數據到HDFS;

使用Sqoop完成從MySQL同步數據到Hive表;

PS:如果後續選型確定使用Sqoop作為數據交換工具,那麼建議熟練掌握,否則,了解和會用Demo即可。

3.4 Flume

Flume是一個分散式的海量日誌採集和傳輸框架,因為「採集和傳輸框架」,所以它並不適合關係型資料庫的數據採集和傳輸。

Flume可以實時的從網路協議、消息系統、文件系統採集日誌,並傳輸到HDFS上。

因此,如果你的業務有這些數據源的數據,並且需要實時的採集,那麼就應該考慮使用Flume。

下載和配置Flume。

使用Flume監控一個不斷追加數據的文件,並將數據傳輸到HDFS;

PS:Flume的配置和使用較為複雜,如果你沒有足夠的興趣和耐心,可以先跳過Flume。

3.5 阿里開源的DataX

之所以介紹這個,是因為我們公司目前使用的Hadoop與關係型資料庫數據交換的工具,就是之前基於DataX開發的,非常好用。

現在DataX已經是3.0版本,支持很多數據源。

你也可以在其之上做二次開發。

PS:有興趣的可以研究和使用一下,對比一下它與Sqoop。

第四章:把Hadoop上的數據搞到別處去

前面介紹了如何把數據源的數據採集到Hadoop上,數據到Hadoop上之後,便可以使用Hive和MapReduce進行分析了。那麼接下來的問題是,分析完的結果如何從Hadoop上同步到其他系統和應用中去呢?

其實,此處的方法和第三章基本一致的。

4.1 HDFS GET命令

把HDFS上的文件GET到本地。需要熟練掌握。

4.2 HDFS API

同3.2.

4.3 Sqoop

同3.3.

使用Sqoop完成將HDFS上的文件同步到MySQL;

使用Sqoop完成將Hive表中的數據同步到MySQL;

4.4 DataX

同3.5.

你應該已經具備以下技能和知識點:

知道如何把已有的數據採集到HDFS上,包括離線採集和實時採集;

你已經知道sqoop(或者還有DataX)是HDFS和其他數據源之間的數據交換工具;

你已經知道flume可以用作實時的日誌採集。

從前面的學習,對於大數據平台,你已經掌握的不少的知識和技能,搭建Hadoop集群,把數據採集到Hadoop上,使用Hive和MapReduce來分析數據,把分析結果同步到其他數據源。

接下來的問題來了,Hive使用的越來越多,你會發現很多不爽的地方,特別是速度慢,大多情況下,明明我的數據量很小,它都要申請資源,啟動MapReduce來執行。

第五章:快一點吧,我的SQL

其實大家都已經發現Hive後台使用MapReduce作為執行引擎,實在是有點慢。

因此SQL On Hadoop的框架越來越多,按我的了解,最常用的按照流行度依次為SparkSQL、Impala和Presto.

這三種框架基於半內存或者全內存,提供了SQL介面來快速查詢分析Hadoop上的數據。關於三者的比較,請參考1.1.

我們目前使用的是SparkSQL,至於為什麼用SparkSQL,原因大概有以下吧:

使用Spark還做了其他事情,不想引入過多的框架;

Impala對內存的需求太大,沒有過多資源部署;

5.1 關於Spark和SparkSQL

什麼是Spark,什麼是SparkSQL。

Spark有的核心概念及名詞解釋。

SparkSQL和Spark是什麼關係,SparkSQL和Hive是什麼關係。

SparkSQL為什麼比Hive跑的快。

5.2 如何部署和運行SparkSQL

Spark有哪些部署模式?

如何在Yarn上運行SparkSQL?

使用SparkSQL查詢Hive中的表。

PS: Spark不是一門短時間內就能掌握的技術,因此建議在了解了Spark之後,可以先從SparkSQL入手,循序漸進。

第六章:一夫多妻制

請不要被這個名字所誘惑。其實我想說的是數據的一次採集、多次消費。

在實際業務場景下,特別是對於一些監控日誌,想即時的從日誌中了解一些指標(關於實時計算,後面章節會有介紹),這時候,從HDFS上分析就太慢了,儘管是通過Flume採集的,但Flume也不能間隔很短就往HDFS上滾動文件,這樣會導致小文件特別多。

為了滿足數據的一次採集、多次消費的需求,這裡要說的便是Kafka。

6.1 關於Kafka

什麼是Kafka?

Kafka的核心概念及名詞解釋。

6.2 如何部署和使用Kafka

使用單機部署Kafka,並成功運行自帶的生產者和消費者例子。

使用Java程序自己編寫並運行生產者和消費者程序。

Flume和Kafka的集成,使用Flume監控日誌,並將日誌數據實時發送至Kafka。

這時,使用Flume採集的數據,不是直接到HDFS上,而是先到Kafka,Kafka中的數據可以由多個消費者同時消費,其中一個消費者,就是將數據同步到HDFS。

你應該已經具備以下技能和知識點:

為什麼Spark比MapReduce快。

使用SparkSQL代替Hive,更快的運行SQL。

使用Kafka完成數據的一次收集,多次消費架構。

自己可以寫程序完成Kafka的生產者和消費者。

從前面的學習,你已經掌握了大數據平台中的數據採集、數據存儲和計算、數據交換等大部分技能,而這其中的每一步,都需要一個任務(程序)來完成,各個任務之間又存在一定的依賴性,比如,必須等數據採集任務成功完成後,數據計算任務才能開始運行。如果一個任務執行失敗,需要給開發運維人員發送告警,同時需要提供完整的日誌來方便查錯。

第七章:越來越多的分析任務

不僅僅是分析任務,數據採集、數據交換同樣是一個個的任務。這些任務中,有的是定時觸發,有點則需要依賴其他任務來觸發。當平台中有幾百上千個任務需要維護和運行時候,僅僅靠crontab遠遠不夠了,這時便需要一個調度監控系統來完成這件事。調度監控系統是整個數據平台的中樞系統,類似於AppMaster,負責分配和監控任務。

7.1 Apache Oozie

1. Oozie是什麼?有哪些功能?

2. Oozie可以調度哪些類型的任務(程序)?

3. Oozie可以支持哪些任務觸發方式?

4. 安裝配置Oozie。

7.2 其他開源的任務調度系統

Azkaban:

azkaban.github.io/

light-task-scheduler:

github.com/ltsopensourc

Zeus:

github.com/alibaba/zeus

等等……

第八章:我的數據要實時

在第六章介紹Kafka的時候提到了一些需要實時指標的業務場景,實時基本可以分為絕對實時和准實時,絕對實時的延遲要求一般在毫秒級,准實時的延遲要求一般在秒、分鐘級。對於需要絕對實時的業務場景,用的比較多的是Storm,對於其他准實時的業務場景,可以是Storm,也可以是Spark Streaming。當然,如果可以的話,也可以自己寫程序來做。

8.1 Storm

1. 什麼是Storm?有哪些可能的應用場景?

2. Storm由哪些核心組件構成,各自擔任什麼角色?

3. Storm的簡單安裝和部署。

4. 自己編寫Demo程序,使用Storm完成實時數據流計算。

8.2 Spark Streaming

1. 什麼是Spark Streaming,它和Spark是什麼關係?

2. Spark Streaming和Storm比較,各有什麼優缺點?

3. 使用Kafka + Spark Streaming,完成實時計算的Demo程序。

至此,你的大數據平台底層架構已經成型了,其中包括了數據採集、數據存儲與計算(離線和實時)、數據同步、任務調度與監控這幾大模塊。接下來是時候考慮如何更好的對外提供數據了。

第九章:我的數據要對外

通常對外(業務)提供數據訪問,大體上包含以下方面:

離線:比如,每天將前一天的數據提供到指定的數據源(DB、FILE、FTP)等;離線數據的提供可以採用Sqoop、DataX等離線數據交換工具。

實時:比如,在線網站的推薦系統,需要實時從數據平台中獲取給用戶的推薦數據,這種要求延時非常低(50毫秒以內)。

根據延時要求和實時數據的查詢需要,可能的方案有:HBase、Redis、MongoDB、ElasticSearch等。

OLAP分析:OLAP除了要求底層的數據模型比較規範,另外,對查詢的響應速度要求也越來越高,可能的方案有:Impala、Presto、SparkSQL、Kylin。如果你的數據模型比較規模,那麼Kylin是最好的選擇。

即席查詢:即席查詢的數據比較隨意,一般很難建立通用的數據模型,因此可能的方案有:Impala、Presto、SparkSQL。

這麼多比較成熟的框架和方案,需要結合自己的業務需求及數據平台技術架構,選擇合適的。原則只有一個:越簡單越穩定的,就是最好的。

第十章:逼格高的機器學習

關於這塊,大講台老師只是簡單介紹一下了。

在我們的業務中,遇到的能用機器學習解決的問題大概這麼三類:

分類問題:包括二分類和多分類,二分類就是解決了預測的問題,就像預測一封郵件是否垃圾郵件;多分類解決的是文本的分類;

聚類問題:從用戶搜索過的關鍵詞,對用戶進行大概的歸類。

推薦問題:根據用戶的歷史瀏覽和點擊行為進行相關推薦。

大多數行業,使用機器學習解決的,也就是這幾類問題。

入門學習線路:

數學基礎;

機器學習實戰(Machine Learning in Action),懂Python最好;

SparkMlLib提供了一些封裝好的演算法,以及特徵處理、特徵選擇的方法。當然,你如果想更快掌握大數據,可以了解大講台主推的大數據培訓相關課程,不會讓你失望的。

大數據學習交流群:「點擊加入」,群里都是學大數據開發的,如果你正在學習大數據 ,小編歡迎你加入,大家都是軟體開發黨,不定期分享乾貨(只有大數據軟體開發相關的),包括我自己整理的一份2018最新的大數據進階資料和高級開發教程,歡迎進階中和想深入大數據的小夥伴加入。

一、Scala編程詳解:

第1講-Spark的前世今生

第2講-課程介紹、特色與價值

第3講-Scala編程詳解:基礎語法

第4講-Scala編程詳解:條件控制與循環

第5講-Scala編程詳解:函數入門

第6講-Scala編程詳解:函數入門之默認參數和帶名參數

第7講-Scala編程詳解:函數入門之變長參數

第8講-Scala編程詳解:函數入門之過程、lazy值和異常

第9講-Scala編程詳解:數組操作之Array、ArrayBuffer以及遍曆數組

第10講-Scala編程詳解:數組操作之數組轉換

第11講-Scala編程詳解:Map與Tuple

第12講-Scala編程詳解:面向對象編程之類

第13講-Scala編程詳解:面向對象編程之對象

第14講-Scala編程詳解:面向對象編程之繼承

第15講-Scala編程詳解:面向對象編程之Trait

第16講-Scala編程詳解:函數式編程

第17講-Scala編程詳解:函數式編程之集合操作

第18講-Scala編程詳解:模式匹配

第19講-Scala編程詳解:類型參數

第20講-Scala編程詳解:隱式轉換與隱式參數

第21講-Scala編程詳解:Actor入門

二、課程環境搭建:

第22講-課程環境搭建:CentOS 6.5集群搭建

第23講-課程環境搭建:Hadoop 2.4.1集群搭建

第24講-課程環境搭建:Hive 0.13搭建

第25講-課程環境搭建:ZooKeeper 3.4.5集群搭建

第26講-課程環境搭建:kafka_2.9.2-0.8.1集群搭建

第27講-課程環境搭建:Spark 1.3.0集群搭建

三、Spark核心編程:

第28講-Spark核心編程:Spark基本工作原理與RDD

第29講-Spark核心編程:使用Java、Scala和spark-shell開發wordcount程序

第30講-Spark核心編程:wordcount程序原理深度剖析

第31講-Spark核心編程:Spark架構原理

第32講-Spark核心編程:創建RDD實戰(集合、本地文件、HDFS文件)

第33講-Spark核心編程:操作RDD實戰(transformation和action案例實戰)

第34講-Spark核心編程:transformation操作開發案例實戰

第35講-Spark核心編程:action操作開發案例實戰

第36講-Spark核心編程:RDD持久化詳解

第37講-Spark核心編程:共享變數(Broadcast Variable和Accumulator)

第38講-Spark核心編程:高級編程之基於排序機制的wordcount程序

第39講-Spark核心編程:高級編程之二次排序實戰

第40講-Spark核心編程:高級編程之topn與分組取topn實戰

四、Spark內核源碼深度剖析:

第41講-Spark內核源碼深度剖析:Spark內核架構深度剖析

第42講-Spark內核源碼深度剖析:寬依賴與窄依賴深度剖析

第43講-Spark內核源碼深度剖析:基於Yarn的兩種提交模式深度剖析

第44講-Spark內核源碼深度剖析:SparkContext初始化原理剖析與源碼分析

第45講-Spark內核源碼深度剖析:Master主備切換機制原理剖析與源碼分析

第46講-Spark內核源碼深度剖析:Master註冊機制原理剖析與源碼分析

第47講-Spark內核源碼深度剖析:Master狀態改變處理機制原理剖析與源碼分析

第48講-Spark內核源碼深度剖析:Master資源調度演算法原理剖析與源碼分析

第49講-Spark內核源碼深度剖析:Worker原理剖析與源碼分析

第50講-Spark內核源碼深度剖析:Job觸發流程原理剖析與源碼分析

第51講-Spark內核源碼深度剖析:DAGScheduler原理剖析與源碼分析(stage劃分演算法與task最佳位置演算法)

第52講-Spark內核源碼深度剖析:TaskScheduler原理剖析與源碼分析(task分配演算法)

第53講-Spark內核源碼深度剖析:Executor原理剖析與源碼分析

第54講-Spark內核源碼深度剖析:Task原理剖析與源碼分析

第55講-Spark內核源碼深度剖析:Shuffle原理剖析與源碼分析(普通Shuffle與優化後的Shuffle)

第56講-Spark內核源碼深度剖析:BlockManager原理剖析與源碼分析(Spark底層存儲機制)

第57講-Spark內核源碼深度剖析:CacheManager原理剖析與源碼分析

第58講-Spark內核源碼深度剖析:Checkpoint原理剖析與源碼分析

五、Spark性能優化:

第59講-Spark性能優化:性能優化概覽

第60講-Spark性能優化:診斷內存的消耗

第61講-Spark性能優化:高性能序列化類庫

第62講-Spark性能優化:優化數據結構

第63講-Spark性能優化:對多次使用的RDD進行持久化或Checkpoint

第64講-Spark性能優化:使用序列化的持久化級別

第65講-Spark性能優化:Java虛擬機垃圾回收調優

第66講-Spark性能優化:提高並行度

第67講-Spark性能優化:廣播共享數據

第68講-Spark性能優化:數據本地化

第69講-Spark性能優化:reduceByKey和groupByKey

第70講-Spark性能優化:shuffle性能優化

六、Spark SQL:

第71講-課程環境搭建:Spark 1.5.1新版本特性、源碼編譯、集群搭建

第72講-Spark SQL:前世今生

第73講-Spark SQL:DataFrame的使用

第74講-Spark SQL:使用反射方式將RDD轉換為DataFrame

第75講-Spark SQL:使用編程方式將RDD轉換為DataFrame

第76講-Spark SQL:數據源之通用的load和save操作

第77講-Spark SQL:Parquet數據源之使用編程方式載入數據

第78講-Spark SQL:Parquet數據源之自動分區推斷

第79講-Spark SQL:Parquet數據源之合併元數據

第80講-Spark SQL:JSON數據源複雜綜合案例實戰

第81講-Spark SQL:Hive數據源複雜綜合案例實戰

第82講-Spark SQL:JDBC數據源複雜綜合案例實戰

第83講-Spark SQL:內置函數以及每日uv和銷售額統計案例實戰

第84講-Spark SQL:開窗函數以及top3銷售額統計案例實戰

第85講-Spark SQL:UDF自定義函數實戰

第86講-Spark SQL:UDAF自定義聚合函數實戰

第87講-Spark SQL:工作原理剖析以及性能優化

第87講-Spark SQL:與Spark Core整合之每日top3熱點搜索詞統計案例實戰

第87講-Spark SQL:核心源碼深度剖析(DataFrame lazy特性、Optimizer優化策略等)

第87講-Spark SQL:延伸知識之Hive On Spark

七、Spark Streaming:

第88講-Spark Streaming:大數據實時計算介紹

第89講-Spark Streaming:DStream以及基本工作原理

第90講-Spark Streaming:與Storm的對比分析

第91講-Spark Streaming:實時wordcount程序開發

第92講-Spark Streaming:StreamingContext詳解

第93講-Spark Streaming:輸入DStream和Receiver詳解

第94講-Spark Streaming:輸入DStream之基礎數據源以及基於HDFS的實時wordcount案例實戰

第95講-Spark Streaming:輸入DStream之Kafka數據源實戰(基於Receiver的方式)

第96講-Spark Streaming:輸入DStream之Kafka數據源實戰(基於Direct的方式)

第97講-Spark Streaming:DStream的transformation操作概覽

第98講-Spark Streaming:updateStateByKey以及基於緩存的實時wordcount案例實戰

第99講-Spark Streaming:transform以及廣告計費日誌實時黑名單過濾案例實戰

第100講-Spark Streaming:window滑動窗口以及熱點搜索詞滑動統計案例實戰

第101講-Spark Streaming:DStream的output操作以及foreachRDD性能優化詳解

第102講-Spark Streaming:與Spark SQL結合使用之top3熱門商品實時統計案例實戰

第103講-Spark Streaming:緩存與持久化機制詳解

第104講-Spark Streaming:Checkpoint機制詳解(Driver高可靠方案詳解)

第105講-Spark Streaming:部署、升級和監控實時應用程序

第106講-Spark Streaming:容錯機制以及事務語義詳解

第107講-Spark Streaming:架構原理深度剖析

第108講-Spark Streaming:StreamingContext初始化與Receiver啟動原理剖析與源碼分析

第109講-Spark Streaming:數據接收原理剖析與源碼分析

第110講-Spark Streaming:數據處理原理剖析與源碼分析(block與batch關係透徹解析)

第111講-Spark Streaming:性能調優詳解

第112講-課程總結(學到了什麼?達到了什麼水平?)

Spark開發進階(升級內容!)

一、Scala編程進階:

第113講-Scala編程進階:Scaladoc的使用

第114講-Scala編程進階:跳出循環語句的3種方法

第115講-Scala編程進階:多維數組、Java數組與Scala數組的隱式轉換

第116講-Scala編程進階:Tuple拉鏈操作、Java Map與Scala Map的隱式轉換

第117講-Scala編程進階:擴大內部類作用域的2種方法、內部類獲取外部類引用

第118講-Scala編程進階:package與import實戰詳解

第119講-Scala編程進階:重寫field的提前定義、Scala繼承層級、對象相等性

第120講-Scala編程進階:文件操作實戰詳解

第121講-Scala編程進階:偏函數實戰詳解

第122講-Scala編程進階:執行外部命令

第123講-Scala編程進階:正則表達式支持

第124講-Scala編程進階:提取器實戰詳解

第125講-Scala編程進階:樣例類的提取器實戰詳解

第126講-Scala編程進階:只有一個參數的提取器

第127講-Scala編程進階:註解實戰詳解

第128講-Scala編程進階:常用註解介紹

第129講-Scala編程進階:XML基礎操作實戰詳解

第130講-Scala編程進階:XML中嵌入scala代碼

第131講-Scala編程進階:XML修改元素實戰詳解

第132講-Scala編程進階:XML載入和寫入外部文檔

第133講-Scala編程進階:集合元素操作

第134講-Scala編程進階:集合的常用操作方法

第135講-Scala編程進階:map、flatMap、collect、foreach實戰詳解

第136講-Scala編程進階:reduce和fold實戰詳解

二、Spark核心編程進階:

第137講-環境搭建-CentOS 6.4虛擬機安裝

第138講-環境搭建-Hadoop 2.5偽分散式集群搭建

第139講-環境搭建-Spark 1.5偽分散式集群搭建

第140講-第一次課程升級大綱介紹以及要點說明

第141講-Spark核心編程進階-Spark集群架構概覽

第142講-Spark核心編程進階-Spark集群架構的幾點特別說明

第143講-Spark核心編程進階-Spark的核心術語講解

第144講-Spark核心編程進階-Spark Standalone集群架構

第145講-Spark核心編程進階-單獨啟動master和worker腳本詳解

第146講-Spark核心編程進階-實驗:單獨啟動master和worker進程以及啟動日誌查看

第147講-Spark核心編程進階-worker節點配置以及spark-evn.sh參數詳解

第148講-Spark核心編程進階-實驗:local模式提交spark作業

第149講-Spark核心編程進階-實驗:standalone client模式提交spark作業

第150講-Spark核心編程進階-實驗:standalone cluster模式提交spark作業

第151講-Spark核心編程進階-standalone模式下的多作業資源調度

第152講-Spark核心編程進階-standalone模式下的作業監控與日誌記錄

第153講-Spark核心編程進階-實驗:運行中作業監控以及手工列印日誌

第154講-Spark核心編程進階-yarn-client模式原理講解

第155講-Spark核心編程進階-yarn-cluster模式原理講解

第156講-Spark核心編程進階-實驗:yarn-client模式提交spark作業

第157講-Spark核心編程進階-yarn模式下日誌查看詳解

第158講-Spark核心編程進階-yarn模式相關參數詳解

第159講-Spark核心編程進階-spark工程打包以及spark-submit詳解

第160講-Spark核心編程進階-spark-submit示例以及基礎參數講解

第161講-Spark核心編程進階-實驗:spark-submit簡單版本提交spark作業

第162講-Spark核心編程進階-實驗:spark-submit給main類傳遞參數

第163講-Spark核心編程進階-spark-submit多個示例以及常用參數詳解

第164講-Spark核心編程進階-SparkConf、spark-submit以及spark-defaults.conf

第165講-Spark核心編程進階-spark-submit配置第三方依賴

第166講-Spark核心編程進階-spark運算元的閉包原理詳解

第167講-Spark核心編程進階-實驗:對閉包變數進行累加操作的無效現象

第168講-Spark核心編程進階-實驗:在運算元內列印數據的無法看到現象

第169講-Spark核心編程進階-mapPartitions以及學生成績查詢案例

第170講-Spark核心編程進階-mapPartitionsWithIndex以開學分班案例

第171講-Spark核心編程進階-sample以及公司年會抽獎案例

第172講-Spark核心編程進階-union以及公司部門合併案例

第173講-Spark核心編程進階-intersection以及公司跨多項目人員查詢案例

第174講-Spark核心編程進階-distinct以及網站uv統計案例

第175講-Spark核心編程進階-aggregateByKey以及單詞計數案例

第176講-Spark核心編程進階-cartesian以及服裝搭配案例

第177講-Spark核心編程進階-coalesce以及公司部門整合案例

第178講-Spark核心編程進階-repartition以及公司新增部門案例

第179講-Spark核心編程進階-takeSampled以及公司年會抽獎案例

第180講-Spark核心編程進階-shuffle操作原理詳解

第181講-Spark核心編程進階-shuffle操作過程中進行數據排序

第182講-Spark核心編程進階-會觸發shuffle操作的運算元

第183講-Spark核心編程進階-shuffle操作對性能消耗的原理詳解

第184講-Spark核心編程進階-shuffle操作所有相關參數詳解以及性能調優

第185講-Spark核心編程進階-綜合案例1:移動端app訪問流量日誌分析

第186講-Spark核心編程進階-綜合案例1:日誌文件格式分析

第187講-Spark核心編程進階-綜合案例1:讀取日誌文件並創建RDD

第188講-Spark核心編程進階-綜合案例1:創建自定義的可序列化類

第189講-Spark核心編程進階-綜合案例1:將RDD映射為key-value格式

第190講-Spark核心編程進階-綜合案例1:基於deviceID進行聚合操作

第191講-Spark核心編程進階-綜合案例1:自定義二次排序key類

第192講-Spark核心編程進階-綜合案例1:將二次排序key映射為RDD的key

第193講-Spark核心編程進階-綜合案例1:執行二次排序以及獲取top10數據

第194講-Spark核心編程進階-綜合案例1:程序運行測試以及代碼調試

第195講-Spark核心編程進階-部署第二台CentOS機器

第196講-Spark核心編程進階-部署第二個Hadoop節點

第197講-Spark核心編程進階-將第二個Hadoop節點動態加入集群

第198講-Spark核心編程進階-使用yarn-client和yarn-cluster提交spark作業

三、Spark內核原理進階:

第199講-Spark內核原理進階-union運算元內部實現原理剖析

第200講-Spark內核原理進階-groupByKey運算元內部實現原理剖析

第201講-Spark內核原理進階-reduceByKey運算元內部實現原理剖析

第202講-Spark內核原理進階-distinct運算元內部實現原理剖析

第203講-Spark內核原理進階-cogroup運算元內部實現原理剖析

第204講-Spark內核原理進階-intersection運算元內部實現原理剖析

第205講-Spark內核原理進階-join運算元內部實現原理剖析

第206講-Spark內核原理進階-sortByKey運算元內部實現原理剖析

第207講-Spark內核原理進階-cartesian運算元內部實現原理剖析

第208講-Spark內核原理進階-coalesce運算元內部實現原理剖析

第209講-Spark內核原理進階-repartition運算元內部實現原理剖析

四、Spark SQL實戰開發進階:

第210講-Spark SQL實戰開發進階-Hive 0.13安裝與測試

第211講-Spark SQL實戰開發進階-Thrift JDBC、ODBC Server

第212講-Spark SQL實戰開發進階-CLI命令行使用

第213講-Spark SQL實戰開發進階-綜合案例2:新聞網站關鍵指標離線統計

第214講-Spark SQL實戰開發進階-綜合案例2:頁面pv統計以及排序和企業級項目開發流程說明

第215講-Spark SQL實戰開發進階-綜合案例2:頁面uv統計以及排序和count(distinct) bug說明

第216講-Spark SQL實戰開發進階-綜合案例2:新用戶註冊比例統計

第217講-Spark SQL實戰開發進階-綜合案例2:用戶跳出率統計

第218講-Spark SQL實戰開發進階-綜合案例2:版塊熱度排行榜統計

第219講-Spark SQL實戰開發進階-綜合案例2:測試與調試

五、Spark Streaming實戰開發進階:

第220講-Spark Streaming實戰開發進階-flume安裝

第221講-Spark Streaming實戰開發進階-接收flume實時數據流-flume風格的基於push的方式

第222講-Spark Streaming實戰開發進階-接收flume實時數據流-自定義sink的基於poll的方式

第223講-Spark Streaming實戰開發進階-高階技術之自定義Receiver

第224講-Spark Streaming實戰開發進階-kafka安裝

第225講-Spark Streaming實戰開發進階-綜合案例3:新聞網站關鍵指標實時統計

第226講-Spark Streaming實戰開發進階-綜合案例3:頁面pv實時統計

第227講-Spark Streaming實戰開發進階-綜合案例3:頁面uv實時統計

第228講-Spark Streaming實戰開發進階-綜合案例3:註冊用戶數實時統計

第229講-Spark Streaming實戰開發進階-綜合案例3:用戶跳出量實時統計

第230講-Spark Streaming實戰開發進階-綜合案例3:版塊pv實時統計

六、Spark運維管理進階:

第231講-Spark運維管理進階-基於ZooKeeper實現HA高可用性以及自動主備切換

第232講-Spark運維管理進階-實驗:基於ZooKeeper實現HA高可用性以及自動主備切換

第233講-Spark運維管理進階-基於文件系統實現HA高可用性以及手動主備切換

第234講-Spark運維管理進階-實驗:基於文件系統實現HA高可用性以及手動主備切換

第235講-Spark運維管理進階-作業監控-實驗:通過Spark Web UI進行作業監控

第236講-Spark運維管理進階-作業監控-實驗:standalone模式下查看歷史作業的Web UI

第237講-Spark運維管理進階-作業監控-實驗:啟動HistoryServer查看歷史作業的Web UI

第238講-Spark運維管理進階-作業監控-實驗:使用curl+REST API進行作業監控

第239講-Spark運維管理進階-作業監控-實驗:Spark Metrics系統以及自定義Metrics Sink

第240講-Spark運維管理進階-作業資源調度-靜態資源分配原理

第241講-Spark運維管理進階-作業資源調度-動態資源分配原理

第242講-Spark運維管理進階-作業資源調度-實驗:standalone模式下使用動態資源分配

第243講-Spark運維管理進階-作業資源調度-實驗:yarn模式下使用動態資源分配

第244講-Spark運維管理進階-作業資源調度-多個job資源調度原理

第245講-Spark運維管理進階-作業資源調度-Fair Scheduler使用詳解

Spark2.0(升級內容!)

七、Spark 2.0深入淺出

第246講-Spark 2.0-新特性介紹

第247講-Spark 2.0-新特性介紹-易用性:標準化SQL支持以及更合理的API

第248講-Spark 2.0-新特性介紹-高性能:讓Spark作為編譯器來運行

第249講-Spark 2.0-新特性介紹-智能化:Structured Streaming介紹

第250講-Spark 2.0-新特性介紹-Spark 1.x的Volcano Iterator Model技術缺陷分析

第251講-Spark 2.0-新特性介紹-whole-stage code generation技術和vectorization技術

第252講-Spark 2.0-Spark 2.x與1.x對比以及分析、學習建議以及使用建議

第253講-Spark 2.0-課程環境搭建:虛擬機、CentOS、Hadoop、Spark等

第254講-Spark 2.0-開發環境搭建:Eclipse+Maven+Scala+Spark

第255講-Spark 2.0-SparkSession、Dataframe、Dataset開發入門

第256講-Spark 2.0-Dataset開發詳解-初步體驗untypd操作案例:計算部門平均年齡與薪資

第257講-Spark 2.0-Dataset開發詳解-action操作:collect、、foreach、reduce等

第258講-Spark 2.0-Dataset開發詳解-基礎操作:持久化、臨時視圖、ds與df互轉換、寫數據等

第259講-Spark 2.0-Dataset開發詳解-typed操作:coalesce、repartition

第260講-Spark 2.0-Dataset開發詳解-typed操作:distinct、dropDuplicates

第261講-Spark 2.0-Dataset開發詳解-typed操作:except、filter、intersect

第262講-Spark 2.0-Dataset開發詳解-typed操作:map、flatMap、mapPartitions

第263講-Spark 2.0-Dataset開發詳解-typed操作:joinWith

第264講-Spark 2.0-Dataset開發詳解-typed操作:sort

第265講-Spark 2.0-Dataset開發詳解-typed操作:randomSplit、sample

第266講-Spark 2.0-Dataset開發詳解-untyped操作:、where、groupBy、agg、col、join

第267講-Spark 2.0-Dataset開發詳解-聚合函數:avg、sum、max、min、、countDistinct

第268講-Spark 2.0-Dataset開發詳解-聚合函數:collect_list、collect_set

第269講-Spark 2.0-Dataset開發詳解-其他常用函數

第270講-Spark 2.0-Structured Streaming:深入淺出的介紹

第271講-Spark 2.0-Structured Streaming:wordcount入門案例

第272講-Spark 2.0-Structured Streaming:編程模型

第273講-Spark 2.0-Structured Streaming:創建流式的dataset和dataframe

第274講-Spark 2.0-Structured Streaming:對流式的dataset和dataframe執行計算操作

第275講-Spark 2.0-Structured Streaming:output mode、sink以及foreach sink詳解

第276講-Spark 2.0-Structured Streaming:管理streaming query

第277講-Spark 2.0-Structured Streaming:基於checkpoint的容錯機制

第278講-Spark面試、簡歷中的項目編寫以及實際生產環境的集群和資源配置等


推薦閱讀:

大數據計算服務MaxCompute 5月新功能發布一覽
大數據的誤區,看易經呈現給人類的大智慧
機器學習與數據挖掘中的十大經典演算法
用R語言進行文本挖掘和主題建模
因為一次講座 通過金融結緣數據科學家

TAG:大數據 | 數據分析 | 數據挖掘 |