自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zhou12314的专栏

业精于勤,荒于嬉;行成于思,毁于随

  • 博客(81)
  • 收藏
  • 关注

原创 2021-05-28

spark的工作流程是什么​所有spark程序都离不开程序初始化和执行任务这两部分。一、程序初始化的流程 用户通过sparksubmit提交程序以后,driver程序开始运行(driver程序就是运行起来的提交的程序,可以理解为spark的main程序)。 driver程序运行起来会首先初始化sparkContext。 在SparkContext对象中做的最重要的事情就是构造出一个DAGSchedule和一个TaskScheduler。 上述的TaskSchedu

2021-05-28 22:36:00 139

原创 spark模块 spark的工作流程?

spark的工作流程是什么​回答思路所有spark程序都离不开程序初始化和执行任务这两部分,所以该问题可以从这两部分开始回答。一、程序初始化的流程 用户通过sparksubmit提交程序以后,driver程序开始运行(driver程序就是运行起来的提交的程序,可以理解为spark的main程序)。 driver程序运行起来会首先初始化sparkContext。 ...

2020-01-12 22:40:39 244

原创 spark sql中如何解决并行度低的问题?

在spark设置并行度一般通过两种方式来设置:1.spark.default.parrallelism2.textFile()传入第二个参数,指定partition数量使用spark sql的时候会出现什么问题?但是如果使用来spark sql,用spark sql的那个stage的并行度,你没办法自己指定,因为spark sql 自己会默认根据hive表对应的hdfs的block,...

2020-01-05 07:17:06 3216 3

原创 spark--使用MapPartitions

什么是MapPartitions?简单的理解就是以分区为单位的map函数,假如该分区有10000条数据,如果调用map函数的话,每次调用传入一条数据,也就是需要调用10000次。但是如果调用MapPartitions函数的话,只需要调用一次就能把该分区的数据传进去。MapPartitions优势性能会高一些,特别适合类似于连接数据库的场景缺点因为要一次性加载分区内所有数据,容易...

2020-01-03 07:15:35 717

原创 spark优化之重构rdd架构及rdd持久化

什么是RDD持久化?spark最重要的一个功能,就是把一个数据集缓存在内存,磁盘或者分布式文件系统中。如果持久化了这一个数据集,那么对此数据集进行操作的其他操作可以直接复用该数据集,不用重新计算,这会使该操作执行的迅速。为啥要进行RDD持久化?因为要不进行持久化的话,如果多次对一个rdd执行算子的话,spark默认会重算。比如rdd3和rdd4同时基于rdd2做运算,如果不做持久化的话...

2020-01-01 23:43:03 138

原创 一文读懂spark数据倾斜

spark中出现数据倾斜的原因?前面分析过shuffle 的原理,主要就是按照key来进行values的数据的输出,拉取和聚合的。同一个key的value,肯定会分配到同一个reduce task进行处理的。为什么会出现数据倾斜呢,举个例子,假如多个key对应的values,一共是100万,但是可能某个key对应的value数量就已经到达了98万,占了绝大多数,另外两个key,可能各分配到了一...

2019-12-25 00:39:08 138

原创 HDFS数据块损坏是如何处理的?

HDFS数据块损坏是如何处理的?数据块损坏恢复流程在namenode中对于进行数据块副本的管理都是在FSnameSystem中,其中有一个成员变量 corruptReplicats,其中就存储着损坏数据与DataNode的映射,当某个数据块损坏后(DataNode可以通过数据块扫描器获知,通过心跳发送给namenode),namenode会将损坏的数据块加到corrupReplicats...

2019-12-14 20:36:14 1888 1

原创 presto指标监控

概述因为presto自带的web-ui界面局限性比较多,所以最近准备通过分析presto的相关指标来搭建一个presto的监控平台。主要用于presto基本信息的监控,性能信息的查询,异常预警。所以该篇及接下来的这几篇文章主要针对presto的相关指标及原理进行分析。presto相关指标说明接口http://127.0.0.1:8888/v1/cluster集群状态相关 ...

2019-11-06 23:21:16 4489

原创 presto使用及介绍

什么是prestopresto是一个开源的分布式的查询引擎,基于内存,它本身不接入数据,可以连接多种数据源,例如 Hive ,Mysql,Kafka,MongeDB等,一条Presto查询可以将多个数据源进行合并查询。preto适合OLAP,而非OLTP,所以不要将preto当成数据库来使用。presto优势低延迟,高并发,纯内存计算引擎,查询效率是hive的数十倍presto查...

2019-11-03 20:50:17 1881 1

原创 spark怎么分配资源

spark分配资源概述为啥要研究spark资源分配spark中最基本和最有效率的优化方式就是给spark程序分配更多的资源,所以这次讲如何更合适的给你的spark程序分配资源spark分配资源主要调整哪一些资源/home/zhou/spark/bin/spark-submit\--classcom.zhou12314.TestDemo\--num-executors...

2019-10-28 22:40:03 1215

原创 Spark JDBCRDD详解

参数解释在使用jdbc rdd的时候,我们一块需要传递7个参数valdata=newJdbcRDD(sc,getConnection,"select*fromtablewhereid>=?andid<=?",1,10,2,flatValue...

2019-10-14 11:40:25 702

原创 spark shuffle的相关总结

什么是shuffle?发生 shuffle 操作主要是以下几个算子:groupByKey、reduceByKey、countByKey、join,等等。什么时候需要shuffle writer?前一个stage的ShuffleMapTask进行shuffle write,把数据存储在blockManager上面,并且把数据位置元信息上报到driver的mapOutTrack组件中,下一...

2019-10-13 20:46:40 132

原创 Spark性能优化---数据本地化

什么是数据本地化如果数据以及要计算它的代码是在一起的,那么性能当然会非常高。但是,如果数据和计算它的代码是分开的,那么其中之一必须到另外一方的机器上。通常来说,移动代码到其他节点,会比移动数据到代码所在的节点上去,速度要快得多,因为代码比较小。Spark也正是基于这个数据本地化的原则来构建task调度算法的。数据本地化对于Spark Job性能有着巨大的影响。数据本地化,指的是,数据离计算...

2019-05-27 20:12:46 156

原创 Spark如何判断内存消耗

内存都消耗在了哪个地方1、在创建的每个java对象中,都会有一个对象头,会占用16个字节,主要是包括了一些的一些对象的元信息,比如指向它的类的指针。如果一个对象本身很小,比如就包括了一个int类型的field,那么它的对象头实际上比对象自己还要大。2、Java的String对象,会比它内部的原始数据,要多出40个字节。因为它内部使用char数组来保存内部的字符序列的,并且还得保存诸如数组长...

2019-04-29 16:31:05 1712

原创 Spark基于Yarn的两种提交模式原理分析

Spark的三种提交模式1.standalone模式,基于Spark自己的Master-Worker模式2.基于YARN的yarn-cluster模式3.基于YARN的yarn-client模式yarn-cluster模式讲解1.用spark-submit提交(yarn-cluster)2.发送请求到Yarn集群的ResourceManager,请求启动Applicatio...

2019-04-27 23:26:22 336

原创 Canal架构及工作流程

Canal架构Caner Server一个Caner Server就代表一个canal运行实例,其对应于一个jvm一个Caner Server同时对应着n个instance一个instance对应着一个Mysql实例Instance组成一个instance由 EventParser eventSink eventStore MetaManager 这几部分组成eventPa...

2019-03-30 18:24:18 1395

原创 Canal HA模式讲解及部署

Canal高可用模式介绍Canal HA一共分为两部分,分别为Canal Server HA 和 Canal Client HACanal Server HA说明需要特别说明的是,Canal 集群的高可用 不是基于Server级别的,而是基于instance级别的,而一个instance对应的是一个mysql实例。打个比方假如一共安装了两个Canal Server,数据库端...

2019-03-28 17:36:39 3278

原创 Canal配置文件详解

conf\example\instance.properties################################################### mysql serverId , v1.0.26+ will autoGen # canal.instance.mysql.slaveId=0 //每个instance都会伪装成一个mysql slave...

2019-03-28 11:04:42 11979

原创 Canal入门及使用

哈哈哈,可以先关注一下公众号,我们一起来讨论下spark,flink,canal 的使用和优化Canal概述: canal是由Alibaba开源的一个基于binlog的增量日志组件,其核心原理是canal伪装成Mysql的slave,发送dump协议获取binlog,解析并存储起来给客户端消费。Canal的工作流程: ...

2019-03-28 10:42:46 1816

原创 SequenceFile和MapFile特点及生成RDD

定期分享源码,总结相关知识点,哈哈哈,来关注啊概括Hadoop 的 HDFS 和 MapReduce 子框架主要是针对大数据文件来设计的,在小文件的处理上不但效率低下,而且十分消耗内存资源(每一个小文件占用一个 Block,每一个 block 的元数据都存储在 namenode 的内存里)。解决办法通常是选择一个容器,将这些小文件组织起来统一存储。HDFS 提供了两种类型的容器,...

2019-03-25 20:55:33 371

原创 spark textFille的分区和计算策略

哈哈哈,可以先关注一下,我们一起来讨论下spark flink 的使用及性能优化几种比较常见的RDD正常开发中我们会经常用到下面的这几种RDDtextFile: 通过文本文件生成的RDDJDBCRDD: 读取关系型数据库所生成的RDDHBaseRDD: 读取HBase所生成的RDDsequenceFile:通过序列化文件所生成的RDD我会依次根据这几种RDD进行分析,重点结...

2019-03-22 18:56:32 248

原创 spark rdd介绍

RDD介绍RDD(Resilient Distributed Dataset,弹性分布式数据集),是Spark最为核心的概念。官方说法是RDD是只读的,分区记录的集合。RDD具体包含了一些什么东西rdd是一个类,它包含了数据应该在哪算,具体该怎么算,算完了放在哪个地方。它是能被序列化,也能被反序列化。在开发的时候,rdd给人的感觉就是一个只读的数据。但是不是,rdd存储的不是数据,而是数据...

2019-03-16 18:22:23 192

原创 Android电池管理体系(二)

在前面的文章中我们提到了Android电池模块中的驱动层,该层主要通过充电芯片驱动去读取电池电量,电池状态等信息。在我们在驱动中拿到电池电量信息的时候是怎么一步步传到Android层的,在这里就需要提到health模块。health模块是Android4.4以后推出的,主要用于向下读取电池驱动中的电量信息,然后向上传递给Framwork中的BatteryService. 该篇...

2018-02-28 18:55:35 771 1

原创 Android电池管理体系(一)

电池管理在Android系统中是一个重要的组成部分,它起的主要作用是检测我们的电池状态,剩余电量实时更新,高温报警,低电量关机等功能的实现。Android的电池管理模块,从内核层到Android的应用层我大概分为了4层来理解,从上到下依次为,应用展示层,framwork层,本地框架层,内核驱动层,计划用3篇文章从下到上对这四个模块进行一个大概的介绍。        ...

2018-02-26 17:00:24 764

原创 Android应用性能如何优化

一: android程序的优化主要分为4种优化:启动速度方面,UI卡顿方面,内存泄漏方面,内存溢出方面二:下面依次对这四个方面进行大概介绍1.启动速度:不应在Applicati以及Activity的生命周期回调中做任何费时操作,具体指标大概是你在onCreate,onResume,onStart等回调中所花费的总时间最好不要超过400ms,否则用户在桌面点击你的应用图标后,将感觉到明显的卡顿。特别

2017-11-01 21:39:31 807

原创 Android平台调用so库中函数的流程及一些坑

一.Android平台如果要调用一些C/C++语言的所编译生成的库的函数一般要进行一下几个步骤。     1.确保我们的so库是用 ndk 或者 arm-linux-androideabi-gcc编译而成,如何编译参考上一篇文章。     2.如果我们的安卓应用程序是在studio中开发用java所写,那么我们 需要配置以下内容:a:  去Android官网下载

2017-07-15 21:29:54 4216

原创 Android平台交叉编译流程

一: 当我们在Android平台上开发一些软件的时候,有时不可避免的要用到一些用c/c++所编写的库。有些库有大神们已经封装好了在特定平台上对应的api,我们直接调用就可以,但是更多的库需要我们自己根据自己所需的特定的平台去进行编译。二: 不同的目标平台都有明确的编译器,所以说在一个平台上编译另一个平台上所运行的程序就叫做交叉编译。常见的ARM平台的交叉编译工具链有:  arm-lin

2017-07-04 21:36:54 7085

原创 Qt 开发所遇到的坑

1.Qt每次重新导入项目,构建目录都会改变,如果在构建目录有依赖文件,需要重新拷贝。2.Qt for Android一定要用jdk1.8 ,否则会报java.lang.UnsupportedClassVersionError: com/android/build/gradle/AppPlugin : Unsupported major.minor

2017-06-28 11:43:00 471

原创 View框架之draw()流程

在前两篇我们分别描述了View的测量和布局,今天我们就针对绘制的最后一步draw()进行分析。   在开始我们还是先贴张时序图,然后针对图中的方法进行梳理--  draw()流程相对于测量和布局要简单很多,我们还是从ViewRootimpl中的performDraw()开始分析  private void performDraw() { /** 省略部分代码 draw(

2016-11-03 17:15:11 738

原创 View框架之layout()流程

在上一篇我们分析了view的measure()流程,当我们把view测量出来以后,接着就要算出这个view的在这个屏幕的具体位置,所以这一篇我们接着分析layout()流程,废话不多说,还是先来一张流程图,下面会根据这个流程图进行讲解-注意:RootView是一个FrameLayout,所以也是一个ViewGroup - -  layout()过程和measure()过程一样,起点都是在View

2016-11-02 14:10:16 494

原创 View框架之measure()流程

一:先来张View体系中measure()流程的时序图注意:1.以下MeasureSpec用ms来代替(ms具体会在后面介绍) 2.该时序图描述的是从ViewRootImpl开始的measure()过程,因为ViewRootImpl是window与view连接的枢纽 3.该时序图着重于大概流程及重要方法的作用,具体代码细节会放到后面介绍二:MesureSpec简介 (以下简称m

2016-11-01 01:06:42 771

原创 Anroid中View框架总结

一 view与window众所周知,Activity是四大组件中唯一能与我们直接交互的组件,因为每个Activity都有一个Window对象,因为我们的View只有与Activity相关联,这个view才能显示出来,查看我们setContentView()方法的源码,就可以看到在该方法中又调用了window的实现类phonewindow中的setContentView()方法,并且将我们的vi

2016-10-30 18:35:55 329

原创 微信小程序基本框架讲解

一: 当我们默认创建成功一个微信小程序项目时,项目会生成以下文件  1. pages目录下代表我们项目的的界面,该项目代表有两个界面,   index界面及log界面   ,以index界面为例:         (1) index.js  :  该类型界面主要处理逻辑部分,主要用js编写,主要功能讲解看注释                   (2)index.wxml

2016-10-05 00:02:25 3651

原创 Http协议及TCP/IP协议详解

一:TCP/IP协议我们在开发中基本不用用到,但是弄明白TCP/IP协议会让我们对网络通信有个更加透彻的理解,在面试中TCP/IP协议基本也是必问的知识点二: TCP/IP协议分层TCP/IP协议一共分为4层,应用层,传输层,网络层,数据链路层 下面详细的讲解这几层所涉及的到协议三:.应用层之http协议:http协议又叫做超文本传输协议。分为请求和响应两部分1 所谓的HTTP请求,也就是We

2016-08-29 21:21:16 981

原创 com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileExcep

当出现这种错误的时候就是两个jar之间出现了冲突,我们可以根据提示信息,在app/build.gradled中的ackagingOptions中配置不想添加到apk中的文件,例如com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Dupli

2016-08-06 11:56:50 2257

原创 java.lang2.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/widget/TintManager;

在使用design中tablayout时,报了如下异常:           java.lang.NoClassDefFoundError: Failed resolution of: Landroid/support/v7/widget/TintManager;                                                               

2016-08-04 16:00:23 4269 2

原创 java中的深拷贝和浅拷贝

一:使用场景: 当我们已经创建一个对象,想在这个对象的基础上改变一些数据而原先的数据不变,我们可以把这个对象克隆一下二:步骤:  你必须继承Cloneable接口---Cloneable interface is broken in java。otherwise throws java.lang.CloneNotSupportedException.必须重写Object类中

2016-08-02 16:58:07 363

原创 Android---OnTrimMemory优化

一:概述:  OnTrimMemory是android4.0以后提供的一个Api,它的主要作用是提示开发者在内存不足的时候去释放资源,从而避免被系统杀死,这样应用在下一次启动的时候,速度会比较快(如果不被杀掉,启动的时候就是热启动,否则就是冷启动,速度相差2-3倍)。二: 任何实现了ComponentCallbacks2接口的类都可以重新实现这个方法(Application,Act

2016-07-28 16:33:09 408

原创 探索view的触发事件

/** * 当有按键按下时触发 * @param keyCode * @param event * @return */@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) { Log.e("flag","onKeyDown"); return super.onKeyDown(keyCode, e

2016-06-18 23:14:41 472

原创 探索View的生命周期方法

view的生命周期方法:/** *当View中所有的子控件均被映射成xml后触发 */@Overrideprotected void onFinishInflate() { super.onFinishInflate(); Log.e("flag","onFinishInflate");}/** * 当view被附着到一个窗口时触发 */@Overrid

2016-06-18 22:09:26 361

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除