spark(五)-----广播变量、累加器、Spark Master、Shuffle

1.广播变量是什么
普通变量每个任务都会得到这些变量的一份副本,广播变量是只读变量,打破了这一限制
2.使用
调用要使用.value来调用

object spark03 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf();
    conf.setAppName("broadcast")
    conf.setMaster("local")
    val list=List("hello hadoop")
    val context: SparkContext = new SparkContext(conf)
    val value: RDD[String] = context.textFile("D:\\BigData\\spark\\filterWC\\src\\main\\data\\word")
    val broadcast: Broadcast[List[String]] = context.broadcast(list)
    value.filter(x=>broadcast.value.contains(x)).foreach(println)
  }
}

3.累加器

将工作节点中的值居合道驱动器中,常见用途是在调试时对作业执行过程中的事件进行计数。
4.使用
longAccumulator或doubleAccumulator来调用

object spark04 {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
    conf.setAppName("accumulator")
    conf.setMaster("local")
    val context = new SparkContext(conf)
    val accumulator: LongAccumulator = context.longAccumulator
    context.textFile("D:\\BigData\\spark\\filterWC\\src\\main\\data\\word").foreach{
      x=>{accumulator.add(1)}
    }
    println(accumulator.value)
  }
}

5.Master的高可用
Standalone集群只有一个Master,如果Master挂了就无法提交应用程序,需要给Master进行高可用配置,Master的高可用可以使用fileSystem(文件系统)和zookeeper(分布式协调服务)。
fileSystem只有存储功能,可以存储Master的元数据信息,用fileSystem搭建的Master高可用,在Master失败时,需要我们手动启动另外的备用Master,这种方式不推荐使用。
zookeeper有选举和存储功能,可以存储Master的元素据信息,使用zookeeper搭建的Master高可用,当Master挂掉时,备用的Master会自动切换,推荐使用这种方式搭建Master的HA

6.Spark Shuffle
Shuffle描述着数据从map task输出到reduce task输入的这段过程,shuffle是连接Map和Reduce之间的桥梁。
通常shuffle分为两部分:Map阶段的数据准备和Reduce阶段的数据拷贝处理。一般将在map端的Shuffle称之为Shuffle Write,在Reduce端的Shuffle称之为Shuffle Read.

7.Spark Shuffle 文件寻址
(1) MapOutputTracker
MapOutputTracker是Spark架构中的一个模块,是一个主从架构。管理磁盘小文件的地址。
1)MapOutputTrackerMaster是主对象,存在于Driver中。
2)MapOutputTrackerWorker是从对象,存在于Excutor中。
(2) BlockManager
BlockManager块管理者,是Spark架构中的一个模块,也是一个主从架构。
BlockManagerMaster,主对象,存在于Driver中。
1)BlockManagerMaster会在集群中有用到广播变量和缓存数据或者删除缓存数据的时候,通知BlockManagerSlave传输或者删除数据。
2)BlockManagerSlave,从对象,存在于Excutor中。
BlockManagerSlave会与BlockManagerSlave之间通信。
3)无论在Driver端的BlockManager还是在Excutor端的BlockManager都含有三个对象:
① DiskStore:负责磁盘的管理。
② MemoryStore:负责内存的管理。
③ BlockTransferService:负责数据的传输。

8.Shuffle调优
在提交spark任务的时候,推荐使用。
spark-submit --conf spark.shuffle.file.buffer=64 –conf ….

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值