視頻地址:尚硅谷大數(shù)據(jù)Spark教程從入門到精通_嗶哩嗶哩_bilibili
- 尚硅谷大數(shù)據(jù)技術(shù)Spark教程-筆記01【Spark(概述、快速上手、運(yùn)行環(huán)境、運(yùn)行架構(gòu))】
- 尚硅谷大數(shù)據(jù)技術(shù)Spark教程-筆記02【SparkCore(核心編程、案例實(shí)操)】
- 尚硅谷大數(shù)據(jù)技術(shù)Spark教程-筆記03【SparkSQL(概述、核心編程、項(xiàng)目實(shí)戰(zhàn))】
- 尚硅谷大數(shù)據(jù)技術(shù)Spark教程-筆記04【SparkStreaming(概述、Dstream入門、DStream創(chuàng)建)】
- 尚硅谷大數(shù)據(jù)技術(shù)Spark教程-筆記05【SparkStreaming(DStream轉(zhuǎn)換、DStream輸出、優(yōu)雅關(guān)閉、SparkStreaming案例實(shí)操)】
目錄
01_尚硅谷大數(shù)據(jù)技術(shù)之SparkCore
第01章-Spark概述
P001【001.尚硅谷_Spark框架 - 簡介】04:54
P002【002.尚硅谷_Spark框架 - Vs Hadoop】07:49
P003【003.尚硅谷_Spark框架 - 核心模塊 - 介紹】02:24
第02章-Spark快速上手
P004【004.尚硅谷_Spark框架 - 快速上手 - 開發(fā)環(huán)境準(zhǔn)備】05:46
P005【005.尚硅谷_Spark框架 - 快速上手 - WordCount - 案例分析】07:57
P006【006.尚硅谷_Spark框架 - 快速上手 - WordCount - Spark環(huán)境】07:07
P007【007.尚硅谷_Spark框架 - 快速上手 - WordCount - 功能實(shí)現(xiàn)】11:56
P008【008.尚硅谷_Spark框架 - 快速上手 - WordCount - 不同的實(shí)現(xiàn)】08:31
P009【009.尚硅谷_Spark框架 - 快速上手 - WordCount - Spark的實(shí)現(xiàn)】04:24
P010【010.尚硅谷_Spark框架 - 快速上手 - WordCount - 日志和錯(cuò)誤】03:50
第03章-Spark運(yùn)行環(huán)境
P011【011.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 本地環(huán)境 - 基本配置和操作】08:11
P012【012.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 本地環(huán)境 - 提交應(yīng)用程序】03:10
P013【013.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 獨(dú)立部署環(huán)境 - 基本配置和操作】06:13
P014【014.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 獨(dú)立部署環(huán)境 - 提交參數(shù)解析】03:08
P015【015.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 獨(dú)立部署環(huán)境 - 配置歷史服務(wù)】04:08
P016【016.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 獨(dú)立部署環(huán)境 - 配置高可用】05:51
P017【017.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - Yarn環(huán)境 - 基本配置 & 歷史服務(wù)】06:42
P018【018.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - Windows環(huán)境 & 總結(jié)】11:06
第04章-Spark運(yùn)行架構(gòu)
P019【019.尚硅谷_Spark框架 - 核心組件 - 介紹】03:33
P020【020.尚硅谷_Spark框架 - 核心概念 - Executor & Core & 并行度】03:31
P021【021.尚硅谷_Spark框架 - 核心概念 - DAG & 提交流程 & Yarn兩種部署模式】07:00
01_尚硅谷大數(shù)據(jù)技術(shù)之SparkCore
制作不易,大家記得點(diǎn)個(gè)關(guān)注,一鍵三連呀【點(diǎn)贊、投幣、收藏】感謝支持~ 眾所期待,隆重推出!大數(shù)據(jù)領(lǐng)域中殺手級(jí)的應(yīng)用計(jì)算框架:Spark視頻教程。 本套視頻教程基于Scala 2.12版本,對(duì)Spark 3.0版本的核心模塊進(jìn)行了詳盡的源碼級(jí)講解,授課圖文并茂,資料詳實(shí)豐富,帶你領(lǐng)略不一樣的技術(shù)風(fēng)景線。課程內(nèi)容涉及方方面面,函數(shù)式編程,你熟悉嗎?認(rèn)知心理學(xué),你知道嗎?工程化代碼框架,你了解嗎?在這套Spark視頻教程中,你想要的這些全都有!
第01章-Spark概述
P001【001.尚硅谷_Spark框架 - 簡介】04:54
Spark 出現(xiàn)的時(shí)間相對(duì)較晚,并且主要功能主要是用于數(shù)據(jù)計(jì)算,所以其實(shí) Spark 一直被認(rèn)為是 Hadoop 框架的升級(jí)版。
P002【002.尚硅谷_Spark框架 - Vs Hadoop】07:49
spark將計(jì)算結(jié)果放到了內(nèi)存中為下一次計(jì)算提供了更加便利的方式。
選擇spark而非hadoop與MapReduce的原因:spark計(jì)算快,內(nèi)存計(jì)算策略、先進(jìn)的調(diào)度機(jī)制,spark可以更快地處理相同的數(shù)據(jù)集。
spark面對(duì)的問題:spark若部署在共享的集群中可能會(huì)遇到資源不足的問題,spark占用的資源更多一些,所以spark不適合與hadoop堆棧等組件一起使用。
Spark 和Hadoop的根本差異是多個(gè)作業(yè)之間的數(shù)據(jù)通信問題:Spark多個(gè)作業(yè)之間數(shù)據(jù)通信是基于內(nèi)存,而Hadoop是基于磁盤。
P003【003.尚硅谷_Spark框架 - 核心模塊 - 介紹】02:24
1.4 核心模塊
- 【Spark Core】Spark Core 中提供了Spark最基礎(chǔ)與最核心的功能,Spark 其他的功能如:Spark SQL, Spark Streaming,GraphX, MLlib 都是在 Spark Core 的基礎(chǔ)上進(jìn)行擴(kuò)展的
- 【Spark SQL】Spark SQL 是Spark 用來操作結(jié)構(gòu)化數(shù)據(jù)的組件。通過 Spark SQL,用戶可以使用 SQL或者Apache Hive 版本的 SQL 方言(HQL)來查詢數(shù)據(jù)。
- 【Spark Streaming】Spark Streaming 是 Spark 平臺(tái)上針對(duì)實(shí)時(shí)數(shù)據(jù)進(jìn)行流式計(jì)算的組件,提供了豐富的處理數(shù)據(jù)流的API。
- 【Spark MLlib】MLlib 是 Spark 提供的一個(gè)機(jī)器學(xué)習(xí)算法庫。MLlib不僅提供了模型評(píng)估、數(shù)據(jù)導(dǎo)入等額外的功能,還提供了一些更底層的機(jī)器學(xué)習(xí)原語。
- 【Spark GraphX】GraphX 是 Spark 面向圖計(jì)算提供的框架與算法庫。
第02章-Spark快速上手
P004【004.尚硅谷_Spark框架 - 快速上手 - 開發(fā)環(huán)境準(zhǔn)備】05:46
第2章 Spark快速上手
先在file-settings-plugin里面安裝Scala插件,然后在這里的global libraries里點(diǎn)+號(hào)選Scala,再downloading對(duì)應(yīng)版本的scala。
?
package com.atguigu.bigdata.spark.core
object Test {
def main(args: Array[String]): Unit = {
println("Hello, spark!")
}
}
P005【005.尚硅谷_Spark框架 - 快速上手 - WordCount - 案例分析】07:57
WordCount思路
P006【006.尚硅谷_Spark框架 - 快速上手 - WordCount - Spark環(huán)境】07:07
TODO是標(biāo)記下,表示待完善。
package com.atguigu.bigdata.spark.core.wc
import org.apache.spark.{SparkConf, SparkContext};
object Spark01_WordCount {
def main(args: Array[String]): Unit = {
//Application、Spark框架,如何讓Spark框架運(yùn)行application
//Application應(yīng)用程序
//Spark框架,運(yùn)行應(yīng)用程序的環(huán)境
//TODO 建立和Spark框架的連接
//JDBC:Connection
//SparkConf():基礎(chǔ)配置對(duì)象、setMaster():本地運(yùn)行環(huán)境、setAppName():設(shè)置應(yīng)用程序名稱
val sparkConf = new SparkConf().setMaster("local").setAppName("WordCount")
val sc = new SparkContext(sparkConf) //saprk上下文對(duì)象
//TODO 執(zhí)行業(yè)務(wù)操作
//TODO 關(guān)閉連接
sc.stop()
}
}
P007【007.尚硅谷_Spark框架 - 快速上手 - WordCount - 功能實(shí)現(xiàn)】11:56
_.split() 等價(jià)于 x => x.split() 等價(jià)于 (x) => {x.split},是一個(gè)匿名函數(shù)。
package com.atguigu.bigdata.spark.core.wc
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext};
object Spark01_WordCount {
def main(args: Array[String]): Unit = {
//Application、Spark框架,如何讓Spark框架運(yùn)行application
//Application應(yīng)用程序
//Spark框架,運(yùn)行應(yīng)用程序的環(huán)境
//TODO 建立和Spark框架的連接
//JDBC:Connection
val sparkConf = new SparkConf().setMaster("local").setAppName("WordCount")
//SparkConf():基礎(chǔ)配置對(duì)象、setMaster():本地運(yùn)行環(huán)境、setAppName():設(shè)置應(yīng)用程序名稱
val sc = new SparkContext(sparkConf) //saprk上下文對(duì)象
//TODO 執(zhí)行業(yè)務(wù)操作
//1.讀取文件,獲取一行一行的數(shù)據(jù)(以行為單位讀取數(shù)據(jù))
//hello world
val lines: RDD[String] = sc.textFile("datas")
//2.將一行數(shù)據(jù)進(jìn)行拆分,形成一個(gè)一個(gè)的單詞(分詞)
//扁平化:將整體拆分成個(gè)體的操作
//"hello world" => hello, world, hello, world
val words: RDD[String] = lines.flatMap(_.split(" "))
//3.將數(shù)據(jù)根據(jù)單詞進(jìn)行分組,便于統(tǒng)計(jì)
//(hello, hello, hello), (world, world)
val wordGroup: RDD[(String, Iterable[String])] = words.groupBy(word => word)
//4.對(duì)分組后的數(shù)據(jù)進(jìn)行轉(zhuǎn)換
//(hello, hello, hello), (world, world)
//(hello, 3), (world, 2)
val wordToCount = wordGroup.map {
case (word, list) => {
(word, list.size)
}
}
//5.將轉(zhuǎn)換結(jié)果采集到控制臺(tái)打印出來
val array: Array[(String, Int)] = wordToCount.collect()
array.foreach(println)
//TODO 關(guān)閉連接
sc.stop()
}
}
P008【008.尚硅谷_Spark框架 - 快速上手 - WordCount - 不同的實(shí)現(xiàn)】08:31
package com.atguigu.bigdata.spark.core.wc
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object Spark02_WordCount {
def main(args: Array[String]): Unit = {
// TODO 建立和Spark框架的連接
val sparConf = new SparkConf().setMaster("local").setAppName("WordCount")
val sc = new SparkContext(sparConf)
// TODO 執(zhí)行業(yè)務(wù)操作
// 1. 讀取文件,獲取一行一行的數(shù)據(jù)
val lines: RDD[String] = sc.textFile("datas")
// 2. 將一行數(shù)據(jù)進(jìn)行拆分,形成一個(gè)一個(gè)的單詞(分詞),扁平化
val words: RDD[String] = lines.flatMap(_.split(" "))
var wordToOne = words.map(
word => (word, 1)
)
// 3. 將單詞進(jìn)行結(jié)構(gòu)的轉(zhuǎn)換,方便統(tǒng)計(jì)
val wordGroup: RDD[(String, Iterable[(String, Int)])] = wordToOne.groupBy(
t => t._1
)
// 4. 對(duì)分組后的數(shù)據(jù)進(jìn)行轉(zhuǎn)換
val wordToCount = wordGroup.map {
case (word, list) => {
list.reduce( //val wordCount: (String, Int) =
(t1, t2) => {
(t1._1, t1._2 + t2._2)
}
)
}
}
// 5. 將轉(zhuǎn)換結(jié)果采集到控制臺(tái)打印出來
val array: Array[(String, Int)] = wordToCount.collect()
array.foreach(println)
//TODO 關(guān)閉連接
sc.stop()
}
}
P009【009.尚硅谷_Spark框架 - 快速上手 - WordCount - Spark的實(shí)現(xiàn)】04:24
package com.atguigu.bigdata.spark.core.wc
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object Spark03_WordCount {
def main(args: Array[String]): Unit = {
// TODO 建立和Spark框架的連接
val sparConf = new SparkConf().setMaster("local").setAppName("WordCount")
val sc = new SparkContext(sparConf)
// TODO 執(zhí)行業(yè)務(wù)操作
val lines: RDD[String] = sc.textFile("datas")
val words: RDD[String] = lines.flatMap(_.split(" "))
var wordToOne = words.map(
word => (word, 1)
)
// Spark框架提供了更多的功能,可以將分組和聚合使用一個(gè)方法實(shí)現(xiàn)
// reduceByKey:相同的key數(shù)據(jù),可以對(duì)value進(jìn)行reduce聚合
// wordToOne.reduceByKey((x, y) => {x + y})
// wordToOne.reduceByKey((x, y) => x + y)
val wordToCount = wordToOne.reduceByKey(_ + _)
val array: Array[(String, Int)] = wordToCount.collect()
array.foreach(println)
//TODO 關(guān)閉連接
sc.stop()
}
}
P010【010.尚硅谷_Spark框架 - 快速上手 - WordCount - 日志和錯(cuò)誤】03:50
執(zhí)行過程中,會(huì)產(chǎn)生大量的執(zhí)行日志,如果為了能夠更好的查看程序的執(zhí)行結(jié)果,可以在項(xiàng)目的resources目錄中創(chuàng)建log4j.properties文件,并添加日志配置信息。
log4j.rootCategory=ERROR, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n
# Set the default spark-shell log level to ERROR. When running the spark-shell, the
# log level for this class is used to overwrite the root logger's log level, so that
# the user can have different defaults for the shell and regular Spark apps.
log4j.logger.org.apache.spark.repl.Main=ERROR
# Settings to quiet third party logs that are too verbose
log4j.logger.org.spark_project.jetty=ERROR
log4j.logger.org.spark_project.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=ERROR
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=ERROR
log4j.logger.org.apache.parquet=ERROR
log4j.logger.parquet=ERROR
# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL
log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR
第03章-Spark運(yùn)行環(huán)境
P011【011.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 本地環(huán)境 - 基本配置和操作】08:11
第3章-spark運(yùn)行環(huán)境
?
sc.textFile("data/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
P012【012.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 本地環(huán)境 - 提交應(yīng)用程序】03:10
P013【013.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 獨(dú)立部署環(huán)境 - 基本配置和操作】06:13
3.2?Standalone模式
P014【014.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 獨(dú)立部署環(huán)境 - 提交參數(shù)解析】03:08
3.2.4 提交應(yīng)用
bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://linux1:7077 \
./examples/jars/spark-examples_2.12-3.0.0.jar \
10
- --class表示要執(zhí)行程序的主類
- --masterspark:/nux1:7077獨(dú)立部署模式,連接到Spark集群
- spark-examples_2.12-3.0.0.jar運(yùn)行類所在的jar包
- 數(shù)字10表示程序的入口參數(shù),用于設(shè)定當(dāng)前應(yīng)用的任務(wù)數(shù)量
P015【015.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 獨(dú)立部署環(huán)境 - 配置歷史服務(wù)】04:08
先啟動(dòng)hadoop服務(wù)(主要是hdfs),再啟動(dòng)spark相關(guān)服務(wù)。
?
su atguigu
myhadoop.sh start
jpsallcd /opt/module/spark-standalone/
bin/spark-shell
sbin/start-all.sh
sbin/start-history-server.sh
jpsallhistory
- http://node1:9870/explorer.html#/
- http://node1:4040/jobs/
- http://node1:8080/
- http://node1:8020/
- http://node1:18080/
3.2.6 配置歷史服務(wù)
P016【016.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - 獨(dú)立部署環(huán)境 - 配置高可用】05:51
3.2.7 配置高可用(HA)
所謂的高可用是因?yàn)楫?dāng)前集群中的Master節(jié)點(diǎn)只有一個(gè),所以會(huì)存在單點(diǎn)故障問題。所以為了解決單點(diǎn)故障問題,需要在集群中配置多個(gè)Master節(jié)點(diǎn),一旦處于活動(dòng)狀態(tài)的Master發(fā)生故障時(shí),由備用Master提供服務(wù),保證作業(yè)可以繼續(xù)執(zhí)行。這里的高可用一般采用Zookeeper設(shè)置。
Linux1
Linux2
Linux3
Spark
Master
Zookeeper?
Worker
Master
Zookeeper
Worker
Zookeeper
Worker
省流簡潔版zookeeper環(huán)境搭建:zookeeper 3.5.7安裝部署
視頻地址:【尚硅谷】大數(shù)據(jù)技術(shù)之Zookeeper 3.5.7版本教程_嗶哩嗶哩_bilibili
- 尚硅谷大數(shù)據(jù)技術(shù)Zookeeper教程-筆記01【Zookeeper(入門、本地安裝、集群操作)】
- 尚硅谷大數(shù)據(jù)技術(shù)Zookeeper教程-筆記02【服務(wù)器動(dòng)態(tài)上下線監(jiān)聽案例、ZooKeeper分布式鎖案例、企業(yè)面試真題】
- 尚硅谷大數(shù)據(jù)技術(shù)Zookeeper教程-筆記03【源碼解析-算法基礎(chǔ)】
- 尚硅谷大數(shù)據(jù)技術(shù)Zookeeper教程-筆記04【源碼解析-源碼詳解】
P017【017.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - Yarn環(huán)境 - 基本配置 & 歷史服務(wù)】06:42
3.3 Yarn模式
獨(dú)立部署(Standalone)模式由 Spark 自身提供計(jì)算資源,無需其他框架提供資源。這種方式降低了和其他第三方資源框架的耦合性,獨(dú)立性非常強(qiáng)。但是你也要記住,Spark 主要是計(jì)算框架,而不是資源調(diào)度框架,所以本身提供的資源調(diào)度并不是它的強(qiáng)項(xiàng),所以還是和其他專業(yè)的資源調(diào)度框架集成會(huì)更靠譜一些。所以接下來我們來學(xué)習(xí)在強(qiáng)大的Yarn 環(huán)境下 Spark 是如何工作的(其實(shí)是因?yàn)樵趪鴥?nèi)工作中,Yarn 使用的非常多)。
3.3.5 配置歷史服務(wù)器
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=root, access=WRITE, inode="/user":atguigu:super
hadoop fs -chmod -R 777 /
P018【018.尚硅谷_Spark框架 - 運(yùn)行環(huán)境 - Windows環(huán)境 & 總結(jié)】11:06
3.4?K8S&Mesos模式
Mesos 是Apache 下的開源分布式資源管理框架,它被稱為是分布式系統(tǒng)的內(nèi)核,在Twitter 得到廣泛使用,管理著 Twitter 超過 30,0000 臺(tái)服務(wù)器上的應(yīng)用部署,但是在國內(nèi),依然使用著傳統(tǒng)的Hadoop 大數(shù)據(jù)框架,所以國內(nèi)使用 Mesos 框架的并不多,但是原理其實(shí)都差不多,這里我們就不做過多講解了。
3.5 Windows模式
sc.textFile("input/word.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
spark-submit?--class?org.apache.spark.examples.SparkPi?--master?local[2] ../examples/jars/spark-examples_2.12-3.0.0.jar 10
3.6 部署模式對(duì)比
模式
Spark 安裝機(jī)器數(shù)
需啟動(dòng)的進(jìn)程
所屬者
應(yīng)用場景
Local
1
無
Spark
測試
Standalone
3
Master 及 Worker
Spark
單獨(dú)部署
Yarn
1
Yarn 及 HDFS
Hadoop
混合部署
3.7 端口號(hào)
- Spark 查看當(dāng)前 Spark-shell 運(yùn)行任務(wù)情況端口號(hào):4040(計(jì)算)
- Spark Master 內(nèi)部通信服務(wù)端口號(hào):7077
- Standalone 模式下,Spark Master Web 端口號(hào):8080(資源)
- Spark 歷史服務(wù)器端口號(hào):18080
- Hadoop YARN 任務(wù)運(yùn)行情況查看端口號(hào):8088
第04章-Spark運(yùn)行架構(gòu)
P019【019.尚硅谷_Spark框架 - 核心組件 - 介紹】03:33
第4章 Spark運(yùn)行架構(gòu)
4.1 運(yùn)行架構(gòu)
4.2.1 Driver
4.2.2 Executor
4.2.3 Master&Worker
4.2.4 ApplicationMaster
P020【020.尚硅谷_Spark框架 - 核心概念 - Executor & Core & 并行度】03:31
4.3 核心概念
4.3.1 Executor與Core
4.3.2 并行度(Parallelism)
P021【021.尚硅谷_Spark框架 - 核心概念 - DAG & 提交流程 & Yarn兩種部署模式】07:00
4.3.3 有向無環(huán)圖(DAG)
4.4 提交流程
4.2.1 Yarn Client 模式文章來源:http://www.zghlxwxcb.cn/news/detail-413840.html
4.2.2 Yarn Cluster 模式文章來源地址http://www.zghlxwxcb.cn/news/detail-413840.html
到了這里,關(guān)于尚硅谷大數(shù)據(jù)技術(shù)Spark教程-筆記01【Spark(概述、快速上手、運(yùn)行環(huán)境)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!