广播变量kyro_Spark简介
簡介:
spark是一個內(nèi)存計(jì)算框架 , 解決了mapreduce在迭代與交互方面的不足
迭代: 多輪算法計(jì)算形式,pagerank,邏輯回歸等
交互: 實(shí)時數(shù)據(jù),數(shù)據(jù)倉庫查詢等
spark重要概念:
RDD:
彈性分布式數(shù)據(jù)集, 彈性(數(shù)據(jù)多節(jié)點(diǎn)分片)分布式(集群節(jié)點(diǎn))數(shù)據(jù)集(默認(rèn)加載至內(nèi)存)
操作:
轉(zhuǎn)換(transformation) rdd->newrdd
# 注意此類操作不會提交作業(yè)
map(func) 形成新的RDD集
filter(func) 過濾結(jié)果成為新的RDD集
flatmap(func) 映射為多于0的輸出元素
groupbykey(key) 以Key為組的數(shù)據(jù)集
reducebykey(func) 以Key為組的數(shù)據(jù)集在經(jīng)過func的處理
join(newrdd) 連接兩個數(shù)據(jù)集 k,v k,w => k,(v,w)
sortbykey(desc) 排序數(shù)據(jù)集
動作(action) 結(jié)果處理
# 注意此類操作將提交作業(yè)
reduce(func) func函數(shù)輸入兩個返回一個結(jié)果
collect 返回操作后的數(shù)據(jù)元素
count 元素個數(shù)統(tǒng)計(jì)
countByKey 按Key統(tǒng)計(jì)每組的數(shù)目
saveastextfile 以文件形式保存計(jì)算結(jié)果集
saveassequencefile 以序列文件保存計(jì)算結(jié)果集
操作分類:
value:
1->1:
map, flatmap, mappartitions, glom
n->1:
union類型一致合并, cartesian分區(qū)笛卡爾積
n->n:
groupby
n屬于m:
filter, distinct, subtract, sample, takesample
cache:
cache僅內(nèi)存, persist可決定緩存位置
key-value:
1->1:
mapValues
union:
combineByKey, reduceByKey, partitionBy分區(qū)策略, cogroup協(xié)同劃分
join:
join(cogroup,flatMapValues), leftOutJoin, rightOutJoin
action:
無輸出:
foreach
HDFS:
saveAsTextFile, saveAsObjectFile
Scala:
collect, collectAsMap, reduceByKeyLocally, count, lookup, top(top,take,takeOrdered,first), reduce, fold, aggregate
DataType:
spark編程概念:
共享變量:
廣播變量(boarkcast不可修改) .value
累加器(accumulator可累加) ?.value
初始化:
構(gòu)建SparkContext(集群地址,作業(yè)名稱,sparkhome,作業(yè)依賴項(xiàng))
RDD類型:
并行集合與hadoop數(shù)據(jù)集
并行集合: scala集合,可分片slice(parallelize)
hadoop集合: 文本,序列(K,V),inputformat
(之后均可做map/reduce操作)
Cache:
RDD轉(zhuǎn)換后可緩存persist,cache,可容錯
cache級別: 僅內(nèi)存,內(nèi)存磁盤,內(nèi)存序列化kryo,內(nèi)存磁盤序列化,僅磁盤,
spark基本架構(gòu):
應(yīng)用程序間環(huán)境隔離 , 資源管理(YARN , Mesos) + 應(yīng)用程序管理 . 程序運(yùn)行過程中對RDD分片的優(yōu)化(窄fusion , 寬全局barrier)
spark運(yùn)行流程:
提交應(yīng)用 -> DAG依賴流程化 -> 執(zhí)行DAG至完成 -> 銷毀運(yùn)行環(huán)境
提交應(yīng)用:
構(gòu)建運(yùn)行環(huán)境: 粗(一次YARN,Mesos).細(xì)(多次Mesos)
啟動RDD管理器 BlockManager
DAG依賴流程化:
分解寬窄依賴: 歸組
fusion優(yōu)化,不需要物化
執(zhí)行DAG至完成:
數(shù)據(jù)本地化: 基架感知
推測執(zhí)行: 另起資源比較
銷毀運(yùn)行環(huán)境:
回收資源
spark on YARN:
客戶端 提交任務(wù) 至 ApplicationMaster 申請資源 向 Nodemanager
SAM 內(nèi)部有 ClusterScheduler(cpu核數(shù)) 有了資源 啟動 StandaloneExecutorBackend(container大小) 注冊 akka 等待任務(wù) 之后執(zhí)行 完畢回收資源
Mesos介紹:
集群資源管理器 twitter,douban
客戶端scheduler -> MesosSchedulerDriver -> MesosMaster(zk) -> MesosSlave(Executor)
master: 核心, 資源接入,分配Allocator,其他框架的管理
salve: 接收命令,報(bào)告狀態(tài)(任務(wù),資源)
framework scheduler: MesosSchedulerDriver第三方實(shí)現(xiàn)接入mesos, 雙層調(diào)度(資源給框架,框架自定任務(wù)) ?---> ?類似hadoop jobtrack
framework executor: MesosExecutorDriver第三方執(zhí)行實(shí)現(xiàn) ?---> 類似hadoop tasktrack
第三方框架注冊流程:
第三方實(shí)現(xiàn)MesosSchedulerDriver,啟動SchedulerProcess服務(wù),MasterDetector對象(探測master通知schedulerprocess),sp會向master發(fā)送注冊消息,sp確認(rèn),framework確認(rèn)
mesos資源分配: 主資源公平調(diào)度算法,多維度資源,授權(quán)接入框架
設(shè)計(jì): 資源拒絕(slave), 資源過濾(salve), 資源回收(master)
mesos容錯設(shè)計(jì):
master: zk
salve: 心跳,快照運(yùn)行目錄
mesos vs YARN:
設(shè)計(jì)目標(biāo)一致: 通用集群資源管理方案
容錯一致: zk,多主
在線升級: YARN的salve不支持
調(diào)度模型一致: 雙層
調(diào)度算法: YARN除了DRF還支持容量與失敗
資源隔離一致: cgroups
支持框架一致: mapreduce,strorm,spark等
資源分配顆粒度: YARN不支持動態(tài)資源分配
網(wǎng)絡(luò)庫:
rpc ? ? ? ? ? ?serialization
libprocess ? ? protocal buffer
avro ? ? ? ? ? avro
Thrift ? ? ? ? idl
socket kryo
libprocess設(shè)計(jì): 消息(類型) -> 消息隊(duì)列 -> 消息處理分發(fā)器(dispatcher) -> 消息處理 ? ?高效,易用
spark工作機(jī)制:
應(yīng)用運(yùn)行提交:
spark任務(wù)調(diào)度分配:
spark io: 序列化(進(jìn)程actor,NIO,netty,磁盤kyro)
壓縮(snappy,LZF)
spark net:RPC, RMI, WEB Service, EJB
AKKA
spark 容錯: 血統(tǒng), checkpoint
spark編程:
下載源碼包 , 安裝maven , ./make-distribution.sh --skip-java-test構(gòu)建本地模式
安裝sbt打包工具
編寫代碼:
python:
from pyspark import SparkContext
scala:
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
編寫sbt依賴文件:
name := "Simple Project"
version := "1.0"
scalaVersion := "2.10"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.1.0"
sbt打包: sbt package
提交應(yīng)用: /bin/spark-submit --class "SimpleApp" --master local test/target/scala-2.10/simple-project_2.10-1.0.jar
總結(jié)
以上是生活随笔為你收集整理的广播变量kyro_Spark简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 动机模型_解读冰山模型:强烈的动机是成功
- 下一篇: mysql left join on_m