Driver 官方解释是 “The process running the main() function of the application and creating the SparkContext”。 Application 就是用户自己写的 Spark 程序(driver program),比如 WordCount.scala。 如果 driver program 在 Master(应该也是可以在worker节点上启动driver的) 上运行,比如在 Master 上运行。那么 SparkPi 就是 Master 上的 Driver。 如果是YARN集群,那么Driver可能被调度到Worker节点上运行。
广播变量,主要是用于在大表和小表进行join的时候,可以将小表数据提前发到executor里面去,将reduce端的join转化成为map端的join操作,移动小表的数据,尽量保持不动大表数据的位置。减少了数据拷贝的过程,移动计算比移动数据便宜的思想。
在对某个中间过程的rdd使用checkpoint的时候,强烈建议先把该rdd进行cache,checkpoint的话会重新进行计算,当内存中存在的时候,只需要从内存中拿过来就行了,这样就不用再计算一遍了,直接读取 cache 写磁盘。其实 Spark 提供了 rdd.persist(StorageLevel.DISK_ONLY) 这样的方法,相当于 cache 到磁盘上,这样可以做到 rdd 第一次被计算得到时就存储到磁盘上。
Driver 运行在yarn的某一个nodeManager上,通常情况下cluster模式driver和yarn集群是在一个机房所以性能比较好。
Extending the logic to running on a cluster, the number of cores allocated to the Spark Streaming application must be more than the number of receivers. Otherwise the system will receive data, but not be able to process it。将逻辑扩展到在集群上运行,分配给Spark流媒体应用程序的内核数量必须大于receivers的数量。否则系统将接收数据,但不能处理它。
OLTP(on-line transaction processing)翻译为联机事务处理, OLAP(On-Line Analytical Processing)翻译为联机分析处理,从字面上来看OLTP是做事务处理,OLAP是做分析处理。从对数据库操作来看,OLTP主要是对数据的增删改,OLAP是对数据的查询。
hbase本质是OLTP的nosqlDB,而hive是OLAP底层是hdfs,需要从已有的数据库同步到hdfs;hive可以用到hbase中的数据,hive一般只用于查询分析统计,而不是常见的CUD操作,hive是需要从已有的数据库或者日志文件进行同步最终到hdfs文件系统中,当前要做到增量实时同步是相当困难的。
application master启动位置,可以是任何集群内的节点。在spark on yarn Cluster 模式下,driver 位于ApplicationMaster进程中。该进程负责申请资源,还负责监控程序、资源的动态情况。