SparkStreaming的编程模型及原理的认识
数据结构
DStream :SparkStreaming中使用的数据结构,代表一个连续的数据流,是由一系列带有时间维度的RDD组成
RDD:只读、有分区的数据集,利用有向无环图(DAG)记录数据结构之间的变化,属性如下:
属性 | 含义 | 使用场景 |
---|---|---|
分区列表— partitios | 每个分区存储RDD的一部分数据 | |
分区位置列表—preferredLocations | 记录每个分区数据存储在哪台机器节点上 | 重写方法getPreferredLocations,实现让分区尽可能和数据在相同的机器上 |
依赖列表—dependencies | 记录RDD的依赖关系 | |
分区器—partitioner | 记录RDD的依赖关系 | 重写方法getPartitions,按自定义方式分区,目前支持Hash和Range分区 |
计算函数—compute | 利用父分区计算RDD分区的值 |
yarn-cluster提交任务流程
流程描述:
1.SparkStreaming任务提交后,Client向HDFS上传SparkStreaming的Jar包和配置,之后向Yarn ResourceManager提交任务
2. ResourceManager通知对应的NodeManager启动ApplicationMaster,ApplicationMaster启动后加载SparkStreaming的Jar包和配置构建环境,启动Driver(包含SparkStreamingContext和SparkContext)
3. ApplicationMaster向ResourceManager申请资源启动Executor,ResourceManager分配Executor资源后,由ApplicationMaster通知资源所在节点的NodeManager启动Executor
4. Executor启动后向Driver发送心跳包,并等待Driver向其分配任务