首页 > 其他分享 >2022-10.md

2022-10.md

时间:2022-10-20 18:56:43浏览次数:50  
标签:case 10 task shuffle map md 2022 stage

2022-10.md

新建模板小书匠

一、面试准备(去节奏把控-慢)

1. 业态

  1. 业态分析:业态就是指零售店卖给谁、卖什么和如何卖的具体经营形式。
    我们的saas服务主要用户是餐饮行业的商家,主要提供门店,菜品等管理能力和数据BI报表支撑能力,从商家中挑取KA商户,以逐渐迭代的方式卖出服务。
  2. 事实表有哪些类型?怎么用的?:账单流水表,订单流水表,活动流水表,主要用于统计营业额,活动投入产出比等。

2. 数据量

  1. 数据量100t级别

3. MR原理

  1. MR的执行步骤
    split:128M->yarnchild(map task)会有inputformat.getRecordReader.lineReader.next()->交给Map.map(k,v,context).outCollector.collection(kv)->

序列化MR的map底层唤醒缓冲区.spill()->调用分区Partitiner.getPartition和排序k.compareTo(o)+combiner溢写到磁盘--》再做一次Merger.merge()(Conbiner)合并小文件罗磁盘(并且形成索引文件)

YarnChild(reduce task).fetch()通过http拉取map结果再进行merge->然后iter分组比较groupingcomparator.compare(k1,k2)->交给Reducer.reduce().write->outputformat.lineReordWrite.write(kv)

4. HIVE原理

  • hive的执行原理
    hive主要有两大服务hive-server,metastore

当client请求hive时,server里的driver会接收请求然后经过complier编译,compiler获取metastore的数据进行解析成执行计划(mapreduce)交给exec引擎==》exec引擎调用yarn的api提交job到yarn上

5. CLICKHOUSE

    1. clickhouse 的引擎,mergeTree,SummingMergeTree,AggreagtingMergeTree
  • clickhouse怎么用的?主要是做大宽表,单表查询用,利用order by的组合字段做过滤索引

6. 团队

  • 团队:10个人的规模,角色PTL

7. SPARK原理

10.SPARK的shuffle引擎三类

  • 数据不进行排序,速度较快,数据量比较小且不需要进行排序的场景:每个core生成并行度相同的文件个数,优化机制Consolidate
  • SortShuffleManager(默认):对数据进行排序,非聚合无需排序场景下可用ByPass机制:每个core生成并行度相同的文件,然后合并
  • Tungsten-sortShuffleManaer:数据的操作是基于serialized binary data基础上进行操作,Shuffle 文件的数量不能大于16777216

11.SPARKONYARN的原理
spark提交任务会有几个实例:
cluster模式:clientActor-submit,driverActor-AppMaster 还有;在YC中mr执行maptask,reducertask;spark通过ceb进程执行executor的task
client模式:client+driver=submit在客户端机器上,cluster上有一个executorlauncher,和若Cao..Exec...Backend进程;EL仅请求RM资源不再监控exec的task.
12SPARK的初始化过程和stage切分
job、stage、task

  1. Worker Node:物理节点,上面执行executor进程
  2. Executor:Worker Node为某应用启动的一个进程,执行多个tasks
  3. Jobs:action 的触发会生成一个job, Job会提交给DAGScheduler,分解成Stage:逆向解析
  4. Stage:DAGScheduler 根据shuffle将job划分为不同的stage,同一个stage中包含多个task,这些tasks有相同的 shuffle dependencies。
    有两类shuffle map stage和result stage:
    shuffle map stage:case its tasks' results are input for other stage(s)
    . result stage:case its tasks directly compute a Spark action (e.g. count(), save(), etc) by running a function on an RDD,输入与结果间划分stage
  5. Task:被送到executor上的工作单元,task简单的说就是在一个数据partition上的单个数据处理流程。

SparkContext.scala
提交任务之前的准备工作都是在SparkContext中完成的
准备工作都是在sparkcontext的主构造器中完成的
1.创建SparkEnv
actorSystem,shufflemanager,blockmanager
2.创建TaskScheduler
3.创建DagScheduler
4.启动TaskScheduler
Driver最终要两句代码:
New SparkContext()执行SparkContext.scala主构造器
saveAstextFile(args(1)) Rdd触发Action提交任务(构建DAG->切分Stage->TaskScheduler将任务提交给Executor--之前都在Driver端执行-->在Executor中执行计算任务)

13 SPARK的界定

  • 视图界定T%V
    隐士函数即具有转换类型关系的方法def或者函数 (科里化里:函数做参被使用(implicit ord:T=>Ordered[T]))
  • 上下文界定T:M
    隐士值即具有继承实现关系的对象实例可以通过关系进行转换类型 (科里化里:值作参数被使用(implicit ord:Ordering[T]))

界定-demo
界定-demo

  • akka的通信:引用彼此的代理进行actor通信

akka通信=demo
akka通信=demo

  • 常用算子
    map,filter,flatMap,mapPartitions,reduceByKey<=Trans,Action=>collect,saveAsTextFile,foreach,foreachPatition

  • ip2long代码:闭包:序列化

 val ip2Long: String => Long = { ip =>
    val fragments = ip.split("[.]")
    var ipNum = 0L
    for (i <- 0 until fragments.length){
      ipNum =  fragments(i).toLong | ipNum << 8L
    }
    ipNum
  }
  • DataFrame,DataSet
    DataFrame也可以叫Dataset[Row],
    Dataset在需要访问列中的某个字段时是非常方便的,但是:如果要写一些适配性很强的函数时,如果使用Dataset,行的类型又不确定,可能是各种case class,无法实现适配,这时候用DataFrame即Dataset[Row]就能比较好的解决问题

  • SparkStreaming,Struct Streaming:
    SparkStreaming更像微批的一种处理方式
    同时Structedstreaming可以从数据中获取时间(eventTime),从而可以针对流数据的生产时间而非收到数据的时间进行处理,同样任务是“long-running“不停的以微批获取数据,

  • case class
    样例类(case class)适合用于不可变的数据。它是一种特殊的类,能够被优化以用于模式匹配。 会自动生成apply方法,这个方法负责对象的创建.

8. KAFKA原理

  • kafka存储原理
    副本<=broker数,log和index文件是从开始到第某条结束,文件名以起始记录索引号为名
    index是kv结构,k是西树后的分段文件记录条数从1开始编号,v是该编号的消息所在的相对索引位置(0开始)
  • 选举机制
    Controller负责故障转移-fialover;leader负责读写,follower负责副本备份,isr-有机会成为leader
    - 1 异步,leader接收
    - -1 同步所有broker接收
  • 分区,副本,节点的关系
    分区可以根据磁盘数取增加,提高并发性能,跟broker和副本没有关系

producer不连zk,broker采取分摊活跃分区去支持读写,进行负载,其他非活跃只同步,conumer连zk,通过zk的偏移量来决定从哪个分区哪个位置消费。

直连模式|receiver模式

标签:case,10,task,shuffle,map,md,2022,stage
From: https://www.cnblogs.com/bchjazh/p/16810915.html

相关文章

  • 今天到了10月20日留笔
    金秋时节了,今年的生意的挺难的。昨天晚上临睡时看到了一句话:“要么被人卷死,要么卷死别人!”对于现在的情况,这句话就尤为觉得很对了。只是金秋,深秋而已,生意就变得像寒冬一样......
  • #yyds干货盘点# LeetCode 热题 HOT 100:单词拆分
    题目:给你一个字符串s和一个字符串列表wordDict作为字典。请你判断是否可以利用字典中出现的单词拼接出s。注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以......
  • #yyds干货盘点# LeetCode 热题 HOT 100:环形链表
    题目:给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用......
  • 10月更新!又一波新功能上线,升级后的EasyOps®简直神了
    又到了每月产品盘点的时刻,回顾9月,又是满满的收获!11项新功能的上线和升级优化,在不断的技术创新和产品的快速迭代过程中,进一步提升企业运维效能。下面,让我们看看9月优维EasyOp......
  • 计算机基础与程序设计 2022-2023-1 熟悉编程语言
    从以上的内容中我们看到理想让我们确定了未来的目标,为人生的价值追求提供着自觉的目标和典范。理想好比是人的生活形象的“底片”:对过去和现在,它是人生事业现实的“曝光......
  • 1~100内偶数相加,但不包括66和88
    <!DOCTYPEhtml><html>   <head>      <metacharset="utf-8">      <title></title>   </head>   <body>      <scripttype="text/......
  • 10分钟完成一个审批页面
    近期,面向企业级的低代码开发平台用友YonBuilder首次面向社会化开发者开放了体验沙箱。这里通过一个简单的员工信息审批表单的开发流程帮助用户熟悉平台用法。名称功能员工审......
  • 2022最新可用,喜马拉雅付费音频爬取工具,给力推荐!
    之前找了几个Python爬取喜马拉雅付费音频的脚本,但是无奈好多都用不了了,毕竟经常算法更新什么的,然后自己又不会写代码,太难了。 找了好久,终于找到一款不需要会代码就能爬......
  • 来老男孩教育,为2022画上圆满的句号!
    时间教会我们成长但并未教会我们如何选择人生的方向时光转瞬即逝转眼间,2022年仅剩下最后70多天你是否还在一边焦虑时光飞逝一边在原地徘徊不前?......
  • 2022.10.20小记
    想下班,又困又饿又虚弱,我的好朋友们已经在给我分享他们的晚饭了,而我还得接着干一小时。晚上不想去游泳了,累死了收到了新的鼠标,很开心没有其他特别的事了......