游客7ygkl73u5msna个人页面-阿里云开发者社区

个人头像照片 游客7ygkl73u5msna TA的个人档案
0
1532

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
  • 高分内容
  • 最新动态
  • 文章
  • 问答
正在加载, 请稍后...
暂无更多信息

2021年12月

  • 12.12 23:59:47
    回答了问题 2021-12-12 23:59:47

    划分本地与远程Block的初始化过程是什么?

    1) 使用splitLocalRemoteBlocks方法划分本地读取和远程读取的Block的请求。

    2) 将FetchRequest随机排序后存入fetchRequests:newQueue[FetchRequest]。

    3) 遍历fetchRequests中的所有FetchRequest,远程请求Block中间结果。

    4) 调用fetchLocalBlocks获取本地Block。

    踩0 评论0
  • 12.12 23:59:26
    回答了问题 2021-12-12 23:59:26

    将HDFS容灾备份到阿里云对象存储OSS的业务场景是什么?

    当前业界有很多公司是以Hadoop技术构建数据中心,而越来越多的公司和企业希望将业务顺畅地迁移到云上。

    在阿里云上使用最广泛的存储服务是对象存储OSS。OSS的数据迁移工具ossimport2可以将您本地或第三方云存储服务上的文件同步到OSS上,但这个工具无法读取Hadoop文件系统的数据,从而发挥Hadoop分布式的特点。并且,该工具只支持本地文件,需要将HDFS上的文件先下载到本地,再通过工具上传,整个过程耗时又耗力。

    阿里云E-MapReduce团队开发的Hadoop数据迁移工具emr-tools,能让您从Hadoop集群直接迁移数据到OSS上。

    踩0 评论0
  • 12.12 23:58:46
    回答了问题 2021-12-12 23:58:46

    MaxCompute的数仓数据质量管理的背景是什么?

    数据对一个企业来说已经是一项重要的资产,既然是资产,肯定需要管理。

    随着业务的增加,数据的应用越来越多,企业在创建的数仓过程中对数据的管理也提出了更高的要求,而数据质量也是数仓建设过程不容忽视的环节。

    踩0 评论0
  • 12.12 23:57:56
    回答了问题 2021-12-12 23:57:56

    使用数据地图作为数据管理工具是什么意思?

    大多数用户更希望通过现有的数据管理应用或服务,来了解自己的数据:“DataWorks-数据地图”就是这样的应用。

    数据总览、数据明细等信息能帮助用户了解自己有哪些数据以及数据的明细信息;产出和使用信息、血缘信息,则能帮助用户了解数据的来龙去脉,帮助用户正确、合理的使用数据。 使正确的数据,被正确的使用在正确的场景下。

    踩0 评论0
  • 12.12 23:57:29
    回答了问题 2021-12-12 23:57:29

    数据保护伞有助于安全管理团队的实现什么目标?

    数据保护伞帮助企业的安全管理人员在易于上手的界面管理自动发现并分类敏感信息。安全人员可利用系列步骤发现包含敏感信息的project。为了保障安全策略的执行以及保护敏感数据,数据保护伞持续对访问敏感数据的人员进行监控。

    除传统数据监控外,还具备异常值检测功能,数据保护伞充分利用机器学习和UEBA行为异常检测模型对数据操作日志进行智能分析,从纷繁众多的数据操作中识别恶意操作行为。

    这种基于行为轨迹变化进行智能分析的风险识别模块对风险发现效率有很大的提升。根据每次数据访问的具体上下文信息“人物、事件、地点、时间和方式”,使用深度机器学习算法来检测行为有异于正常操作的行为模式。借助一种适应性学习流程,通过历史正常活动模式与新的活动进行比较。其直观的用户界面有助于指出异常状况,这样安全管理员就可深入研究其根本原因。

    踩0 评论0
  • 12.12 23:57:00
    回答了问题 2021-12-12 23:57:00

    数据保护伞有什么用?

    数据保护伞是蚂蚁金服数据安全和Dataworks联合打造的一款保护企业在MaxCompute数据平台上的数据资产安全产品。

    通过易上手的管理配置界面,企业安全人员可识别并管理敏感数据(无论是动态数据还是静态数据)的相关风险。

    满足各个场景的数据安全要求,从基本合规性到综合数据保护。这种多层解决方案包括自动化数据风险识别、动态数据保护和直观的数据管理驾驶舱,进而可适应敏感数据环境中的变化。

    踩0 评论0
  • 12.12 23:56:21
    回答了问题 2021-12-12 23:56:21

    大数据安全管理的挑战是什么?

    数据安全是大数据发展道路上的重要挑战之一,数据,作为企业的核心资产,80%以上的核心信息是以结构化数据存储,包含个人身份证号、银行账号、电话、客户数据、医疗、交易、薪资等极其重要又敏感的信息。一旦发生数据篡改、盗取、滥用等安全事件,将给企业带来经济和声誉上的双重打击,造成的后果将不堪设想。

    在冗长而复杂的数据加工和使用链路中,企业安全管理团队如何识别企业的大数据平台中有哪些敏感数据,这些敏感数据在数据应用的链路中是如何被使用的,是否存在数据滥用和泄露的风险,在数据开发使用过程中如何加强个人隐私数据保护,相关监管机关的要求是什么,特别是在《网络安全法》以及相关配套管理规范发布后,对敏感数据的管理有了更具体的要求。这些问题都是大数据安全管理中需要应对的挑战。

    以防范数据泄漏为例,目前市面上很多安全产品主要用于应对来自外部的威胁,但是缺少对来自内部威胁的有效识别和防范,而敏感数据泄露往往发生在内部,在DT时代中,企业内部的数据运维人员、数据开发人员、数据分析人员都有可能接触到敏感数据进而产生数据安全风险。

    踩0 评论0
  • 12.12 23:54:34
    回答了问题 2021-12-12 23:54:34

    Zookeeper包含那些内容?

    1 保证任何时候,集群中只有一个master

    2 存贮所有Region的寻址入口。

    3 实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master

    4 存储Hbase的schema,包括有哪些table,每个table有哪些column family

    踩0 评论0
  • 12.12 23:52:50
    回答了问题 2021-12-12 23:52:50

    HFile分为那六个部分?

    Data Block 段–保存表中的数据,这部分可以被压缩

    Meta Block 段 (可选的)–保存用户自定义的kv对,可以被压缩。

    File Info 段–Hfile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息。

    Data Block Index 段–Data Block的索引。每条索引的key是被索引的block的第一条记录的key。

    Meta Block Index段 (可选的)–Meta Block的索引。

    Trailer– 这一段是定长的。保存了每一段的偏移量,读取一个HFile时,会首先读取Trailer,Trailer保存了每个段的起始位置(段的Magic Number用来做安全check),然后,DataBlock Index会被读取到内存中,这样,当检索某个key时,不需要扫描整个HFile,而只需从内存中找到key所在的block,通过一次磁盘io将整个 block读取到内存中,再找到需要的key。DataBlock Index采用LRU机制淘汰。

    踩0 评论0
  • 12.12 23:51:51
    回答了问题 2021-12-12 23:51:51

    物理存储包括那些内容?

    1 已经提到过,Table中的所有行都按照row key的字典序排列。

    2 Table 在行的方向上分割为多个Hregion。

    3 region按大小分割的,每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,Hregion就会等分会两个新的Hregion。当table中的行不断增多,就会有越来越多的Hregion。

    4 HRegion是Hbase中分布式存储和负载均衡的最小单元。最小单元就表示不同的 Hregion可以分布在不同的HRegion server上。但一个Hregion是不会拆分到多个server上的。

    5 HRegion虽然是分布式存储的最小单元,但并不是存储的最小单元。

    事实上,HRegion由一个或者多个Store组成,每个store保存一个columns family。

    每个Strore又由一个memStore和0至多个StoreFile组成。如图:

    StoreFile以HFile格式保存在HDFS上。

    踩0 评论0
  • 12.12 23:50:08
    回答了问题 2021-12-12 23:50:08

    访问hbase table中的行有那三种方式?

    1 通过单个row key访问

    2 通过row key的range

    3 全表扫描

    踩0 评论0
  • 12.12 23:44:52
    回答了问题 2021-12-12 23:44:52

    stage是怎么划分的?

    涉及的数据结构:栈、HashSet

    1.通过最后的RDD,获取父RDD

    2.将finalRDD放入栈中,然后出栈,进行for循环的找到RDD的依赖,需要注意的是RDD可能有多个依赖

    3.如果RDD依赖是ShuffleDependency,那么就可以划分成为一个新的Stage,然后通过getShuffleMapStage()获取这个stage的父stage;如果是一般的窄依赖,那么将会入栈

    4.通过getShuffleMapStage()递归调用,得到父stage;一直到父stage是null

    5.最后返回stage的集合

    踩0 评论0
  • 12.12 23:43:07
    回答了问题 2021-12-12 23:43:07

    创建Executor进程的步骤是什么?

    1.Worker创建Executor进程,该进程的实现类其实是CoarseGrainedExecutorBackend

    2.CoarseGrainedExecutorBackend向DriverActor注册成功后创建Executor对象,内部有一个可变的线程池

    3.执行makeOffers()方法,查看是否有任务需要提交

    踩0 评论0
  • 12.12 23:41:44
    回答了问题 2021-12-12 23:41:44

    Executor启动流程流程图怎么画?

    20180706160010392.jpg

    踩0 评论0
  • 12.12 23:40:16
    回答了问题 2021-12-12 23:40:16

    SparkContext的主要工作是什么?

    1.创建SparkEnv,里面有一个很重要的对象ActorSystem

    2.创建TaskScheduler,这里是根据提交的集群来创建相应的TaskScheduler

    3.对于TaskScheduler,主要的任务调度模式有FIFO和FAIR

    4.在SparkContext中创建了两个Actor,一个是DriverActor,这里主要用于Driver和Executor之间的通信;还有一个是ClientActor,主要用于Driver和Master之间的通信。

    5.创建DAGScheduler,其实这个是用于Stage的划分

    6.调用taskScheduler.start()方法启动,进行资源调度,有两种资源分配方法,一种是尽量打散;一种是尽量集中

    7.Driver向Master注册,发送了一些信息,其中一个重要的类是CoarseGrainedExecutorBackend,这个类以后用于创建Executor进程。

    踩0 评论0
  • 12.12 23:38:35
    回答了问题 2021-12-12 23:38:35

    SparkContext内部执行的时序图是怎样的?

    20180709085850717.jpg

    踩0 评论0
  • 12.12 23:35:31
    回答了问题 2021-12-12 23:35:31

    SparkSubmit类的流程是怎样的?

    1.SparkSubmit在main()方法中执行,然后根据提交的类型调用相应的方法,这里是"Submit",调用submit()方法,submit()里面进行一些判断后,使用反射Class.forName(childMainClass, true, loader),然后调用invoke()方法来调用程序员自己写的类,我们这里是WordCount。

    2.在WordCount类中,main()方法里有调用SparkContext,SparkContext构造器使用createSparkEnv()方法,这个方法使用SparkEnv.createDriverEnv(conf, isLocal, listenerBus)方法创建SparkEnv对象;在SparkEnv类,调用create()方法来进行创建SparkEnv,在这个方法内部,有一个AkkaUtils.createActorSystem(actorSystemName, hostname, port, conf, securityManager)的调用过程,主要用来产生Akka中的ActorSystem以及得到绑定的端口号。

    3.在创建SparkEnv对象后,SparkContext构造器使用代码SparkContext.createTaskScheduler(this, master)创建TaskScheduler对象,这里根据实际的提交模式来进行创建TaskScheduler对象,提交模式有:local、Mesos、Zookeeper、Simr、Spark,这里模们主要分析Spark集群下的模式;然后还需要创建一个SparkDeploySchedulerBackend对象;在创建TaskScheduler对象调用initialize()方法,这里选择调度模式,主要有两种模式,FIFO和FAIR,默认的调度模式;最后调用taskScheduler的start()方法,里面主要调用SparkDeploySchedulerBackend对象的start()方法,首先调用父类的start()方法产生一个用于和Executor通信的DriverActor对象,然后里面主要创建一个AppClient对象内部有ClientActor类对象,用于Driver和Master进行RPC通信。

    踩0 评论0
  • 12.12 23:33:45
    回答了问题 2021-12-12 23:33:45

    Spark启动Shell脚本的步骤是什么?

    1.start-all.sh

    2.start-master.sh脚本

    3.spark-daemon.sh脚本

    4.spark-class文件

    踩0 评论0
  • 12.12 23:31:27
    回答了问题 2021-12-12 23:31:27

    在map端溢出分区文件和reduce端合并组合有几种情况?

    三种情况,分别是: bypassMergeSort标记是否传递到reduce端再做合并和排序。

    1.此种情况不使用缓存,而是先将数据按照partition写入不同文件,最后按partition顺序合并写入同一文件。当没有指定聚合、排序函数,且partition数量较小时,一般采用这种方式。此种方式将多个bucket合并到同一个文件,通过减少map输出的文件数量,节省了磁盘I/O,最终提升了性能,

    2 在map端简单缓存、排序分组,在reduce端合并组合

    此种情况在缓存中利用指定的排序函数对数据按照partition或者key进行排序,最后按partition顺序合并写入同一文件。当没有指定聚合函数,且partition数量大时,一般采用这种方式,见如下图。此种方式将多个bucket合并到同一个文件,通过减少map输出的文件数量,节省了磁盘I/O,提升了性能;对SizeTrackingPairBuffer的缓存进行溢出判断,当超过myMemoryThreshold的大小时,将数据写入磁盘,防止内存溢出。

    3在map端缓存中聚合、排序分组,在reduce端组合

    此种情况在缓存中对数据按照key聚合,并且利用指定的排序函数对数据按照partition或者key进行排序,最后按partition顺序合并写入同一文件。当指定了聚合函数时,一般采用这种方式,见如下图。此种方式将多个bucket合并到同一个文件,通过减少map输出的文件数量,节省了磁盘I/O,提升了性能;对中间输出数据不是一次性读取,而是逐条放入AppendOnlyMap的缓存,并对数据进行聚合,减少了中间结果占用的内存大小;对AppendOnlyMap的缓存进行溢出判断,当超出myMemoryThreshold的大小时,将数据写入磁盘,防止内存溢出。

    踩0 评论0
  • 12.12 23:28:27
    回答了问题 2021-12-12 23:28:27

    plitLocalRemoteBlocks方法的处理逻辑是什么?

    1) 遍历已经按照BlockManagerId分组的blockInfo,

    如果blockInfo所在的Executor与当前Executor相同,则将它的BlockId存入localBlocks;否则,将blockInfo的BlockId和size累加到curBlocks,将blockId存入remoteBlocks,curRequestSize增加size的大小,每当curRequestSize >= targetRequestSize,则新建FetchRequest放入remoteRequests,并且为生成下一个FetchRequest做一些准备(如新建curBlocks,curRequestSize置为0)。

    2) 遍历结束,

    curBlocks中如果仍然有缓存的(BlockId,Long),新建FetchRequest放入remoteRequests。此次请求不受maxBytesInFlight和targetRequestSize的影响。

    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2021-12-12

    划分本地与远程Block的初始化过程是什么?

    1) 使用splitLocalRemoteBlocks方法划分本地读取和远程读取的Block的请求。

    2) 将FetchRequest随机排序后存入fetchRequests:newQueue[FetchRequest]。

    3) 遍历fetchRequests中的所有FetchRequest,远程请求Block中间结果。

    4) 调用fetchLocalBlocks获取本地Block。

    踩0 评论0
  • 回答了问题 2021-12-13

    将HDFS容灾备份到阿里云对象存储OSS的业务场景是什么?

    当前业界有很多公司是以Hadoop技术构建数据中心,而越来越多的公司和企业希望将业务顺畅地迁移到云上。

    在阿里云上使用最广泛的存储服务是对象存储OSS。OSS的数据迁移工具ossimport2可以将您本地或第三方云存储服务上的文件同步到OSS上,但这个工具无法读取Hadoop文件系统的数据,从而发挥Hadoop分布式的特点。并且,该工具只支持本地文件,需要将HDFS上的文件先下载到本地,再通过工具上传,整个过程耗时又耗力。

    阿里云E-MapReduce团队开发的Hadoop数据迁移工具emr-tools,能让您从Hadoop集群直接迁移数据到OSS上。

    踩0 评论0
  • 回答了问题 2021-12-13

    MaxCompute的数仓数据质量管理的背景是什么?

    数据对一个企业来说已经是一项重要的资产,既然是资产,肯定需要管理。

    随着业务的增加,数据的应用越来越多,企业在创建的数仓过程中对数据的管理也提出了更高的要求,而数据质量也是数仓建设过程不容忽视的环节。

    踩0 评论0
  • 回答了问题 2021-12-13

    使用数据地图作为数据管理工具是什么意思?

    大多数用户更希望通过现有的数据管理应用或服务,来了解自己的数据:“DataWorks-数据地图”就是这样的应用。

    数据总览、数据明细等信息能帮助用户了解自己有哪些数据以及数据的明细信息;产出和使用信息、血缘信息,则能帮助用户了解数据的来龙去脉,帮助用户正确、合理的使用数据。 使正确的数据,被正确的使用在正确的场景下。

    踩0 评论0
  • 回答了问题 2021-12-13

    数据保护伞有助于安全管理团队的实现什么目标?

    数据保护伞帮助企业的安全管理人员在易于上手的界面管理自动发现并分类敏感信息。安全人员可利用系列步骤发现包含敏感信息的project。为了保障安全策略的执行以及保护敏感数据,数据保护伞持续对访问敏感数据的人员进行监控。

    除传统数据监控外,还具备异常值检测功能,数据保护伞充分利用机器学习和UEBA行为异常检测模型对数据操作日志进行智能分析,从纷繁众多的数据操作中识别恶意操作行为。

    这种基于行为轨迹变化进行智能分析的风险识别模块对风险发现效率有很大的提升。根据每次数据访问的具体上下文信息“人物、事件、地点、时间和方式”,使用深度机器学习算法来检测行为有异于正常操作的行为模式。借助一种适应性学习流程,通过历史正常活动模式与新的活动进行比较。其直观的用户界面有助于指出异常状况,这样安全管理员就可深入研究其根本原因。

    踩0 评论0
  • 回答了问题 2021-12-13

    数据保护伞有什么用?

    数据保护伞是蚂蚁金服数据安全和Dataworks联合打造的一款保护企业在MaxCompute数据平台上的数据资产安全产品。

    通过易上手的管理配置界面,企业安全人员可识别并管理敏感数据(无论是动态数据还是静态数据)的相关风险。

    满足各个场景的数据安全要求,从基本合规性到综合数据保护。这种多层解决方案包括自动化数据风险识别、动态数据保护和直观的数据管理驾驶舱,进而可适应敏感数据环境中的变化。

    踩0 评论0
  • 回答了问题 2021-12-13

    大数据安全管理的挑战是什么?

    数据安全是大数据发展道路上的重要挑战之一,数据,作为企业的核心资产,80%以上的核心信息是以结构化数据存储,包含个人身份证号、银行账号、电话、客户数据、医疗、交易、薪资等极其重要又敏感的信息。一旦发生数据篡改、盗取、滥用等安全事件,将给企业带来经济和声誉上的双重打击,造成的后果将不堪设想。

    在冗长而复杂的数据加工和使用链路中,企业安全管理团队如何识别企业的大数据平台中有哪些敏感数据,这些敏感数据在数据应用的链路中是如何被使用的,是否存在数据滥用和泄露的风险,在数据开发使用过程中如何加强个人隐私数据保护,相关监管机关的要求是什么,特别是在《网络安全法》以及相关配套管理规范发布后,对敏感数据的管理有了更具体的要求。这些问题都是大数据安全管理中需要应对的挑战。

    以防范数据泄漏为例,目前市面上很多安全产品主要用于应对来自外部的威胁,但是缺少对来自内部威胁的有效识别和防范,而敏感数据泄露往往发生在内部,在DT时代中,企业内部的数据运维人员、数据开发人员、数据分析人员都有可能接触到敏感数据进而产生数据安全风险。

    踩0 评论0
  • 回答了问题 2021-12-12

    Zookeeper包含那些内容?

    1 保证任何时候,集群中只有一个master

    2 存贮所有Region的寻址入口。

    3 实时监控Region Server的状态,将Region server的上线和下线信息实时通知给Master

    4 存储Hbase的schema,包括有哪些table,每个table有哪些column family

    踩0 评论0
  • 回答了问题 2021-12-12

    HFile分为那六个部分?

    Data Block 段–保存表中的数据,这部分可以被压缩

    Meta Block 段 (可选的)–保存用户自定义的kv对,可以被压缩。

    File Info 段–Hfile的元信息,不被压缩,用户也可以在这一部分添加自己的元信息。

    Data Block Index 段–Data Block的索引。每条索引的key是被索引的block的第一条记录的key。

    Meta Block Index段 (可选的)–Meta Block的索引。

    Trailer– 这一段是定长的。保存了每一段的偏移量,读取一个HFile时,会首先读取Trailer,Trailer保存了每个段的起始位置(段的Magic Number用来做安全check),然后,DataBlock Index会被读取到内存中,这样,当检索某个key时,不需要扫描整个HFile,而只需从内存中找到key所在的block,通过一次磁盘io将整个 block读取到内存中,再找到需要的key。DataBlock Index采用LRU机制淘汰。

    踩0 评论0
  • 回答了问题 2021-12-12

    物理存储包括那些内容?

    1 已经提到过,Table中的所有行都按照row key的字典序排列。

    2 Table 在行的方向上分割为多个Hregion。

    3 region按大小分割的,每个表一开始只有一个region,随着数据不断插入表,region不断增大,当增大到一个阀值的时候,Hregion就会等分会两个新的Hregion。当table中的行不断增多,就会有越来越多的Hregion。

    4 HRegion是Hbase中分布式存储和负载均衡的最小单元。最小单元就表示不同的 Hregion可以分布在不同的HRegion server上。但一个Hregion是不会拆分到多个server上的。

    5 HRegion虽然是分布式存储的最小单元,但并不是存储的最小单元。

    事实上,HRegion由一个或者多个Store组成,每个store保存一个columns family。

    每个Strore又由一个memStore和0至多个StoreFile组成。如图:

    StoreFile以HFile格式保存在HDFS上。

    踩0 评论0
  • 回答了问题 2021-12-12

    访问hbase table中的行有那三种方式?

    1 通过单个row key访问

    2 通过row key的range

    3 全表扫描

    踩0 评论0
  • 回答了问题 2021-12-12

    stage是怎么划分的?

    涉及的数据结构:栈、HashSet

    1.通过最后的RDD,获取父RDD

    2.将finalRDD放入栈中,然后出栈,进行for循环的找到RDD的依赖,需要注意的是RDD可能有多个依赖

    3.如果RDD依赖是ShuffleDependency,那么就可以划分成为一个新的Stage,然后通过getShuffleMapStage()获取这个stage的父stage;如果是一般的窄依赖,那么将会入栈

    4.通过getShuffleMapStage()递归调用,得到父stage;一直到父stage是null

    5.最后返回stage的集合

    踩0 评论0
  • 回答了问题 2021-12-12

    创建Executor进程的步骤是什么?

    1.Worker创建Executor进程,该进程的实现类其实是CoarseGrainedExecutorBackend

    2.CoarseGrainedExecutorBackend向DriverActor注册成功后创建Executor对象,内部有一个可变的线程池

    3.执行makeOffers()方法,查看是否有任务需要提交

    踩0 评论0
  • 回答了问题 2021-12-12

    Executor启动流程流程图怎么画?

    20180706160010392.jpg

    踩0 评论0
  • 回答了问题 2021-12-12

    SparkContext的主要工作是什么?

    1.创建SparkEnv,里面有一个很重要的对象ActorSystem

    2.创建TaskScheduler,这里是根据提交的集群来创建相应的TaskScheduler

    3.对于TaskScheduler,主要的任务调度模式有FIFO和FAIR

    4.在SparkContext中创建了两个Actor,一个是DriverActor,这里主要用于Driver和Executor之间的通信;还有一个是ClientActor,主要用于Driver和Master之间的通信。

    5.创建DAGScheduler,其实这个是用于Stage的划分

    6.调用taskScheduler.start()方法启动,进行资源调度,有两种资源分配方法,一种是尽量打散;一种是尽量集中

    7.Driver向Master注册,发送了一些信息,其中一个重要的类是CoarseGrainedExecutorBackend,这个类以后用于创建Executor进程。

    踩0 评论0
  • 回答了问题 2021-12-12

    SparkContext内部执行的时序图是怎样的?

    20180709085850717.jpg

    踩0 评论0
  • 回答了问题 2021-12-12

    SparkSubmit类的流程是怎样的?

    1.SparkSubmit在main()方法中执行,然后根据提交的类型调用相应的方法,这里是"Submit",调用submit()方法,submit()里面进行一些判断后,使用反射Class.forName(childMainClass, true, loader),然后调用invoke()方法来调用程序员自己写的类,我们这里是WordCount。

    2.在WordCount类中,main()方法里有调用SparkContext,SparkContext构造器使用createSparkEnv()方法,这个方法使用SparkEnv.createDriverEnv(conf, isLocal, listenerBus)方法创建SparkEnv对象;在SparkEnv类,调用create()方法来进行创建SparkEnv,在这个方法内部,有一个AkkaUtils.createActorSystem(actorSystemName, hostname, port, conf, securityManager)的调用过程,主要用来产生Akka中的ActorSystem以及得到绑定的端口号。

    3.在创建SparkEnv对象后,SparkContext构造器使用代码SparkContext.createTaskScheduler(this, master)创建TaskScheduler对象,这里根据实际的提交模式来进行创建TaskScheduler对象,提交模式有:local、Mesos、Zookeeper、Simr、Spark,这里模们主要分析Spark集群下的模式;然后还需要创建一个SparkDeploySchedulerBackend对象;在创建TaskScheduler对象调用initialize()方法,这里选择调度模式,主要有两种模式,FIFO和FAIR,默认的调度模式;最后调用taskScheduler的start()方法,里面主要调用SparkDeploySchedulerBackend对象的start()方法,首先调用父类的start()方法产生一个用于和Executor通信的DriverActor对象,然后里面主要创建一个AppClient对象内部有ClientActor类对象,用于Driver和Master进行RPC通信。

    踩0 评论0
  • 回答了问题 2021-12-12

    Spark启动Shell脚本的步骤是什么?

    1.start-all.sh

    2.start-master.sh脚本

    3.spark-daemon.sh脚本

    4.spark-class文件

    踩0 评论0
  • 回答了问题 2021-12-12

    在map端溢出分区文件和reduce端合并组合有几种情况?

    三种情况,分别是: bypassMergeSort标记是否传递到reduce端再做合并和排序。

    1.此种情况不使用缓存,而是先将数据按照partition写入不同文件,最后按partition顺序合并写入同一文件。当没有指定聚合、排序函数,且partition数量较小时,一般采用这种方式。此种方式将多个bucket合并到同一个文件,通过减少map输出的文件数量,节省了磁盘I/O,最终提升了性能,

    2 在map端简单缓存、排序分组,在reduce端合并组合

    此种情况在缓存中利用指定的排序函数对数据按照partition或者key进行排序,最后按partition顺序合并写入同一文件。当没有指定聚合函数,且partition数量大时,一般采用这种方式,见如下图。此种方式将多个bucket合并到同一个文件,通过减少map输出的文件数量,节省了磁盘I/O,提升了性能;对SizeTrackingPairBuffer的缓存进行溢出判断,当超过myMemoryThreshold的大小时,将数据写入磁盘,防止内存溢出。

    3在map端缓存中聚合、排序分组,在reduce端组合

    此种情况在缓存中对数据按照key聚合,并且利用指定的排序函数对数据按照partition或者key进行排序,最后按partition顺序合并写入同一文件。当指定了聚合函数时,一般采用这种方式,见如下图。此种方式将多个bucket合并到同一个文件,通过减少map输出的文件数量,节省了磁盘I/O,提升了性能;对中间输出数据不是一次性读取,而是逐条放入AppendOnlyMap的缓存,并对数据进行聚合,减少了中间结果占用的内存大小;对AppendOnlyMap的缓存进行溢出判断,当超出myMemoryThreshold的大小时,将数据写入磁盘,防止内存溢出。

    踩0 评论0
  • 回答了问题 2021-12-12

    plitLocalRemoteBlocks方法的处理逻辑是什么?

    1) 遍历已经按照BlockManagerId分组的blockInfo,

    如果blockInfo所在的Executor与当前Executor相同,则将它的BlockId存入localBlocks;否则,将blockInfo的BlockId和size累加到curBlocks,将blockId存入remoteBlocks,curRequestSize增加size的大小,每当curRequestSize >= targetRequestSize,则新建FetchRequest放入remoteRequests,并且为生成下一个FetchRequest做一些准备(如新建curBlocks,curRequestSize置为0)。

    2) 遍历结束,

    curBlocks中如果仍然有缓存的(BlockId,Long),新建FetchRequest放入remoteRequests。此次请求不受maxBytesInFlight和targetRequestSize的影响。

    踩0 评论0
正在加载, 请稍后...
滑动查看更多