首页 > 编程知识 正文

Spatchcock,Spackle

时间:2023-05-04 23:01:28 阅读:273668 作者:33

Spark 1.简介 Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark拥有Hadoop MapReduce所具有的优点,但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法 2.RDD 弹性分布式数据集RDD的五大特性 RDD是由一系列的partition组成函数是作用在partition上DRR之间存在一系列依赖分区器是作用在K,V格式的RDD上RDD提供一系列最佳的计算位置 RDD理解图

注意要点 textfile方法底层封装的是MR方法,读取文件前先sqilt,默认sqilt是一个block大小什么是k,v格式的RDD RDD里面存储的数据都是k,v数据,那么计算K.V格式的RDD 哪里体现了RDD的容错 partition的数量,大小是没有限制的,可以人为设置RDD之间存在依赖关系.可以基于上一个RDD计算出下一个 哪里体现了RDD的分布式 RDD是由partition组成,每一个partition分布在不同节点上 RDD提供了最佳的计算位置,体现了数据本地化. 每一个进行RDD计算都可以看做是一种优化

spack任务的执行原理图

Driver和worker是启动在节点上的进程,运行在JVM中的进程 Driver与集群之间的通信频繁Driver负责任务(task)与结果的回收Worker是Standalone资源调度框架里面资源管理的从节点。也是JVM进程Master是Standalone资源调度框架里面资源管理的主节点。也是JVM进程 3.算子

转换算子(延迟执行,也叫懒加载执行)(返回值不改变类型)

map :将RDD中数据通过map映射变成新的元素…特点:输入一条,输出一条数据flatMap :先map后flat,每个输出项可以映射为0到多个输出项reduceBykey :将相同的Key根据相应的逻辑进行处理filter :过滤,true保留,false过滤samper :随机抽样算子,根据传进去的小数按比例进行又放回或者无放回的抽样sortBy / sortBykey :作用在K,V格式的RDD上,对key进行升序或者降序排序join / leftOuterJoin / rightOuterJoin / fullOuterJoin 连接 作用在K,V格式的RDD上。根据K进行连接,对(K,V)join(K,W)返回(K,(V,W))join后的分区数与父RDD分区数多的那一个相同 union 并集 合并两个数据集。两个数据集的类型要一致返回新的RDD的分区数是合并RDD分区数的总和 intersection 交集 取两个数据集的交集 subtract 差集 取两个数据集的差集 mapPartition 输入一个pattition,输出一个pattition 与map类似,遍历的单位是每个partition上的数据 distinct 去重 map+reduceByKey+map

触发算子(触发执行)一个application应用程序中有几个Action类算子执行,就有几个job运行

count :返回数据集中的元素数。会在结果计算完成后回收到Driver端take :返回一个包含数据集前n个元素的集合first :first=take(1),返回数据集中的第一个元素foreach:循环遍历数据集中的每个元素,运行相应的逻辑collect:将计算结果回收到Driver端foreachPartition :遍历的数据是每个partition的数据

控制算子(都可以将RDD持久化)(持久化的单位是partition)

cache(用来优化) 默认将数据持久化到内存中.cache()=perisit()=persist(StorageLevel.Memory_Only) perisit(用来优化) 可以指定持久化的级别,常用的是MEMORY_ONLY和MEMORY_AND_DISK。”_2”表示有副本数。持久化级别
cache和persist的注意事项 都是懒执行,必须要一个action类算子触发执行它们的返回值可以直接赋值给一个变量,其它job中直接使用这个变量就是使用持久化的数据了cache和persist算子后不能立即紧跟action算子 错误:rdd.cache().count() 返回的不是持久化的RDD,而是一个数值了。 checkpoint(用来容错) checkpoint将RDD持久化到磁盘,还可以切断RDD之间的依赖关系。 当RDD的job执行完毕后,会从finalRDD从后往前回溯当回溯到某一个RDD调用了checkpoint方法,会对当前的RDD做一个标记Spark框架会自动启动一个新的job,重新计算这个RDD的数据,将数据持久化到HDFS上 优化: RDD执行checkpoint之前,RDD先执行cache,先持久化到内存中,这样启动新的job只需要将内存中的数据拷贝到HDFS上就可以,省去了重新计算这一步 4.Standalone模式两种提交任务方式 客户端模式 启动时worker向master发送本机资源client模式提交application后,会在相应的节点上开启一个Driver进程Driver会向Master申请启动Applicatin启动的资源资源申请成功后,会在worker节点上开启executor进程driver向Worker上的executor发送task任务worker上的excutor向driver发送task的执行结果该模式使用与测试环境,Driver进程在客户端启动,可以看到task执行的结果

cluster集群模式 集群模式启动后,会向Master发送请求启动driver,master接收到请求后会随机的在worker节点中启动driver进程driver向master申请启动application的资源driver向worker发送task任务worker向driver发送task的执行结果

总结 driver负责资源的申请任务的发放结果的回收监控task的执行情况 5,Yarm的两种提交方式 客户端模式 客户端提交appliation任务时,会启动一个driver.driver向resourmanager发送请求启动appliationMasterresourcemanager收到请求后随机在nodemanager中开启一个appliationManagerappliationMaster启动后向resourcemanager发送请求一批container,开启executorresourManager返回一批nodemanager,用于启动excutorapplictionMaster向nodemanager发送开启executorexecutor启动后,反向注册给driver,driver发送task给excutor,excutor发送执行结果给driver

注意: ApplicationMaster的作用 为当前的Application申请资源给NodeManager发送消息启动Executor 集群启动模式 客户端提交appliction到resourcemanager,请求启动applicationMasterresourceManager接到请求后随机在nodeManager上启动AM(相当于driver)AM发送请求到resourceManager,请求一批container,用于启动executorresourceManager返回一批nodeManagerAM发送请求给nodeManager启动executorexecutor反向注册到AM所在的节点的driver,Driver发送task到Executor

r,请求一批container,用于启动executor

resourcemanager返回一批nodeManagerAM发送请求给nodeManager启动executorexecutor反向注册到AM所在的节点的driver,Driver发送task到Executor

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。

  • 相关阅读