spark学习-34-Spark的BroadcastManager广播管理器

1.Broadcast就是将数据从一个节点发送到其他的节点上。例如Driver上有一张表,而Executor中的每个并行执行的Task(100万个)都要查询这张表,那我们通过Broadcast的方式就只需要往每个Executor把这张表发送一次就行了。Executor中的每个运行的Task查询这张唯一的表,而不是每次执行的时候都从Driver获得这张表!

2.这就好像ServletContext的具体作用,只是Broadcast是分布式的共享数据。默认情况下,只要程序在运行Broadcast变量就会存在,因为Broadcast在底层是通过BlockManager管理的!但是你可以手动指定或者配置具体周期来销毁Broadcast变量!

3.Broadcast一般用于处理共享配置文件,通用的Dataset,常用的数据结构等等。但是不适合存放太大的数据在Broadcast中,Broadcast不会内存溢出,因为其数据的保存的StorageLevel是MEMORY_AND_DISK的方式。虽然如此,我们也不可以放入太大的数据在Broadcast中,因为网络IO和可能的单点压力会非常大!

4.广播Broadcast变量是只读变量,保持数据一致性。

5.spark2.0.x以前貌似有HttpBroadcast(HttpBroadcastFactory)和TorrentBroadcastFactory,但是spark2.0.x中貌似把HttpBroadcastFactory给排除在外了,看这个文件F:\002-spark\01-sourceCode\spark-2.2.0\project\MimaExcludes.scala,最顶端注释如下

/*

你可能感兴趣的:(大数据-spark)