2021-03-11

Spark初識

spark幾種模式

  1. local 下載下來后,不做什么配置
  2. StandLone 了解即可
    ·····Spark集群: 1個節(jié)點 N個節(jié)點 VS Hadoop
    ······· Master Worker
一臺機器

·····vi spark-env.sh
export Spark_MASTER_HOST=hadoop
·····slaves
hadoop

多個機器:

slaves 每行配置一個hostname
scp到其他機器上
start-all.sh
jps
Master
Worker

hadoop:8080 +1 WebUI
spark://hadoop:7077
spark-shell --master hadoop:7077

····啟動集群:sbin ./start-all.sh

默認端口號是8080,假如被占用,默認加一 8081

測試執(zhí)行的命令:

spark-submit
--class org.apache.spark.examples.SparkPi
--master spark://ruozedata001:7077
/home/hadoop/app/spark-3.1.1-bin-hadoop3.2/examples/jars/spark-examples_2.12-3.1.1.jar
3

YARN 生產(chǎn)上

IDEA 編程 開發(fā) 本地都不需要去下載Spark的安裝包 pom里面加上對應的依賴

RDD

A Resilient【彈性的】 Distributed【分布式】 Dataset【數(shù)據(jù)集】 (RDD)
彈性 分布式計算可以容錯(節(jié)點掛了、數(shù)據(jù)丟了....)
分布式 可以運行在多個節(jié)點上 并行
數(shù)據(jù)集 集合、文件、Hive Table、HBase Table、RDBMS Table

RDD ===》 集合就是一個數(shù)據(jù)集

Represents an immutable, 不可變 RDDA map => RDDB
partitioned collection of elements 集合里面的元素是可以分區(qū)的、切割 vs hdfs
that can be operated on in parallel.

Array(1,2,3 4,5,6, 7,8,9,10 )
map filter zip sortBy group ...

PairRDDFunctions: k-v

MR:File ==》 Input Split ==》 Map Task 并行方式執(zhí)行

Internally, each RDD is characterized by five main properties:【RDD的五大特性】

    • A list of partitions 一個RDD包含多個分區(qū)
      file ==> 多個block
      partition/block ==> 并行

    RDD中體現(xiàn):protected def getPartitions: Array[Partition]

    • A function for computing each split/parttion
      一個函數(shù)對RDD每個分區(qū)的數(shù)據(jù)進行操作
      RDD 進行Map方法 ===》RDD里面的每個分區(qū)/分片 都作用上map方法
      Input Split ===》 MapTask
      input ===> N個InputSplit分別交給對應的MR去執(zhí)行

    RDD中體現(xiàn):def compute(split: Partition, context: TaskContext): Iterator[T]

    • A list of dependencies on other RDDs RDD有很多依賴的
      RDDA ==》 RDDB ===> RDDC
      RDD:沒依賴:集合數(shù)據(jù)、測試數(shù)據(jù)、文本數(shù)據(jù)

    RDD中體現(xiàn):protected def getDependencies: Seq[Dependency[_]] = deps

    • Optionally【可選的】, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)

      hash分區(qū)
      13x ==>
      18x ==>
      other ==>

    RDD中體現(xiàn):val partitioner: Option[Partitioner] = None

    • Optionally【可選的】, a list of preferred locations to compute each split on (e.g. block locations for
  • an HDFS file)
    preferred locations:最佳位置
    移動計算優(yōu)于移動數(shù)據(jù),就近原則,減少網(wǎng)絡IO開銷

RDD中體現(xiàn):protected def getPreferredLocations(split: Partition): Seq[String] = Nil

1個partition分區(qū) ==》對應 一個task[線程]

RDD = 5 5個task就是并選走的
Partition是一個邏輯概念 InputSplit

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容