自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 资源 (4)
  • 收藏
  • 关注

原创 Spark资源调优部分方法

最近学习了一些Spark的调优方法,先说一下资源调优的一些方法,内容来自美团技术团队分享的技术博客学习而来。Spark资源参数调优学习spark资源参数调优之前最好先了解一下spark的任务提交流程以便更好的理解和使用参数调优来使Spark运行效率得到提高。• Spark资源参数调优,主要就是对Spark运行过程中各个使用资源的地方,通过调节各种参数,来优化资源使用的效率,从而提升Spark作业的执行性能。num-executors• 参数说明:该参数用于设置Spark作业总共要用多少个Execu

2020-08-20 17:53:01 273

原创 数仓的架构方式以及与数据库的区别

数仓的架构方式inmon架构:自上而下的开发模式,从多个数据源出发,根据需求将不同数据源的数据经过ETL过程获取到各个主题需求的数据集成到数仓中,完成了数据治理后再进行统计业务,将统计结果存入数据集市。Kimball架构:自下而上的开发模式,往往已经存在某个关系明确的业务数据库,架构师需要根据数据库中的数据寻找出有价值的分析指标,然后根据这些指标建立数据集市,再从数据集市出发向下建设需要的数据仓库表。数仓与数据库的一些区别:操作上:数据库是面向事务的,往往是行级操作;数仓则是面向分析的,往往是范

2020-06-15 17:48:46 364

原创 Hive的一些优化方法

在实际开发过程中我们要尽可能的对hive进行优化,来提高生产效率,在处理hive优化的时候我们必须把hive sql当做MapReducer来读,从mr的运行角度来考虑优化性能,从更底层来思考如何优化运算性能。分为以下几个方面:1.解决数据倾斜问题。2.减少job数3.合理设置map和reduce的task个数,能有效提升性能。4.对小文件进行合并从而提高效率。5,map阶段的优化,主要就是确定合适的map数,通过调整数据的分割单元的大小mapred.max.split.size,减小max就可

2020-06-14 14:28:51 260

原创 Redis数据库一些问题的出现场景以及解决办法

1.Redis的击穿:某个Key非常的热点,访问非常频繁,当处于几种高并发的时候,这个key失效的瞬间,大量的请求就击穿了缓存。直接请求了数据库与缓存雪崩的不同点在于缓存雪崩是多个key在同一时间段过期造成了DB压力过大崩溃。解决办法:1.将key设为永不过期 2.使用互斥锁,首先判断Redis中存放的数据是否为空,如果为空则使用setnx对他加一个互斥锁,加锁成功的时候,从数据库读取数据设置到Redis中,然后删除setnx设置的锁,如果加锁失败,则认为其他线程已经将数据库的值设置到缓存了,设置一定延迟

2020-06-09 10:18:42 375

原创 手动维护kafka偏移量offset存储在Redis中代码实现

/* SparkStreaming基于redis来管理整合kafka过程中涉及到的offset提交问题 思路: 1°、可能没有读取到数据,从源头来开始读取数据 2°、读取到了数据,从指定offset位置开始读取数据 2、对读取的kafka数据,进行业务处理 3、提交offset到redis */object _01Streamin...

2020-04-13 15:39:50 1348

原创 spark的shuffle和mr的shuffle比较

mr的shufflemapShuffle数据存到hdfs中是以块进行存储的,每一个块对应一个分片,maptask就是从分片中获取数据的在某个节点上启动了mapTask,mapTask读取是通过k-v来读取的,读取的数据会放到环形缓存区,这样做的目的是为了防止IO的访问次数,然后环形缓存区的内存达到一定的阀值的时候会把文件益写到磁盘,溢出的各种小文件会合并成一个大文件,这个合并的过程中会进行...

2020-03-02 20:18:18 435

转载 什么是深拷贝,浅拷贝?

深复制和浅复制最根本的区别在于是否是真正获取了一个对象的复制实体,而不是引用。深拷贝和浅拷贝是只针对Object和Array这样的引用数据类型的。浅复制 —-只是拷贝了基本类型的数据,而引用类型数据,复制后也是会发生引用,我们把这种拷贝叫做“(浅复制)浅拷贝”,换句话说,浅复制仅仅是指向被复制的内存地址,如果原地址中对象被改变了,那么浅复制出来的对象也会相应改变。深复制 —-在计算机中开辟了...

2020-02-19 15:40:28 835

原创 快速排序代码实现

快速排序是冒泡排序的改进算法就是在无序数组中找到一个基准数,以此让左边的数都小于这个基准数,右边的数都大于这个基准数,这样不断进行递归排序,最终就能让整个数组变成有序数组下面是快速排序的源代码package Sort;import java.util.Arrays;//此为快速排序的递归实现算法public class QuickSort2 { public static vo...

2020-01-02 15:49:05 413

原创 Hbase读写流程简述

刚开始接触Hbase,如有说的不对的地方,希望进行指正Hbase读请求过程:1:客户端通过Zookeeper以及root表和meta表找到目标数据所在的regionserver2:联系regionserver查询目标数据3:regionserver定位到目标数据所在的region,发出查询请求4:region现在memstore中查找,命中则返回5:如果在memstore中找不到,则在...

2019-12-25 20:06:54 1862

原创 冒泡排序与选择排序算法

排序算法和查找算法经常用到,也经常会出现在大厂的面试问题中,最近写一下java的排序和查找算法#选择排序:选择排序是排序算法当中最简单的一种排序算法,先附上代码int index=0;//index是用来记录数组下标,用于记录在一次比较过程中最小数的位置int t=0;for(int i=0;i<10;i++){index=i;for(int j=i+1;j<10;...

2019-12-25 19:28:39 281

原创 JAVA树的前序遍历,中序遍历,后序遍历的简单递归实现算法

java构造树的各种便历规则:前序遍历:先遍历树的父节点然后再遍历左子树,再遍历右子树。中序遍历:先遍历左子树,再遍历父节点,最后遍历右子树。后序遍历:先遍历左子树,再遍历右子树,最后遍右节点。三种遍历方法递归实现的算法基本一样,只是输出的先后顺序不一样而已;下面放上三种遍历的递归算法:public class bianli{ public static void main(S...

2019-12-25 19:28:19 403

原创 Java二叉树的前序查找,后序查找,中序查找递归算法实现

树的递归查找跟树的遍历有些相似进行递归查找前序查找:先比较当前节点,然后再比较左子树,再右子树,如果找到便返回此值,否则返回空中序查找:是先比较左子树,然后比较当前节点,再比较右子树,如果找到便返回此值,否则返回空后序遍历:是先比较左子树,再比较右子树,然后比较当前节点,如果找到便返回此值,否则返回空下面是递归实现代码//*********************************...

2019-12-25 19:28:08 320

原创 Hive优化之表设计层面

最近学习一下Hive优化的方法,记录一下Hive优化表设计层面:1:利用分区表优化就是在建表的时候建立分区,这样能够提高查询速度,如果筛选条件里面有分区字段的话,那么Hive只需要遍历对用分区目录下的文件即可,不需要遍历全局数据,使得处理的数据量大大减少。2:利用桶表优化指定桶的个数后,存储数据时,根据某一个字段进行哈希后,确定存储在哪个桶里,跟分区表类似也是使得筛选时不用全局遍历所有的...

2019-12-15 19:22:05 237

原创 数仓中数据模型之星型模型,雪花模型

星型模型数仓中的包含:1:一个大的包含大批数据和不冗余的事实表(中心表)2:一组小的附属表,称为维表。事实表中每条元组都包含有指向各个维表的外键和一些相应的测量数据 事实表的记录数量很多,维表中记录的是有关这一维的属性星型模型可以采用关系型数据库结构,模型的核心是事实表,围绕事实表的是维度表。通过事实表将各种不同的维度表连接起来,各个维度表都连接到中央事实表。维度表中的对象通过事实表...

2019-12-13 17:44:52 472

转载 网络编程 TCP/IP、HTTP、Socket的理解

1.TCP/IP(简称TCP)TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准,不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS等协议传输...

2019-12-12 11:57:51 109

原创 Spark任务提交流程

Spark任务提交流程挺复杂的,下面给一个相对简单的任务提交流程:Driver进程启动以后,首先构建SparkContext,SparkContext主要包含两部分:DAGScheduler和TaskSchedulerTaskScheduler会寻找Master节点,然后TaskScheduler向Master请求注册ApplicationMaster接受到任务注册信息之后,根据自身资源调用...

2019-12-11 19:38:50 163

原创 HDFS写流程

向hdfs写流程:1:首先对数据进行切分处理,一般为128M2:客户端向namenode发送请求上传3:namenode同意上传4:发送请求namenode要上传第一块数据5:返回第一块数据存储的节点位置6:通过rpc连接到指定位置,7:然后请求应答8:返回上传的状态到namenode形成元数据ps:上传成功后会通过机架感知将数据备份到不同的机架节点上,形成副本...

2019-12-08 17:25:23 173

原创 Zookeeper工作机制

1:Zookeeperzookeeper是一个分布式协调服务,为用户的分布式应用程序提供协调服务zookeeper是为别的分布式程序服务的zookeeper本身也是一个分布式程序功能:1:为用户提供数据的注册,查询功能2:为用户提供注册监听功能3,为用户保持心跳以动态感知用户的状态2:选举机制Leader:zookeeper集群的工作核心。集群内部所有服务的调度者Follo...

2019-11-27 19:53:25 412

原创 NameNode和Secondary NameNode工作机制

启动:Namenode启动时,会先将镜像文件载入到内存,并执行编辑日志中的各项操作。一旦在内存中成功建立文件系统元数据的镜像,则创建一个新的fsimage文件,和一个空的编辑日志。此时namenode开始监听DataNode请求,此时namenode处于安全模式,系统中的数据块位置并不是由namenode维护的,而是以块列表的形式存储在DataNode中,在操作期间,namenode会在内存中...

2019-11-27 11:52:01 279

原创 Kafka的副本数据同步策略即ISR

Kafka的副本数据同步策略是:当副本全部完成同步时,才会返回ack优点是选举新的leader时,容忍n台节点故障,需要n+1个副本,而且不会造成数据的大量冗余,缺点是延迟高。虽然它的网络延迟高,但网络延迟对kafka的影响较小;ISR:作用:剔除故障的follower(不和leader进行同步)如果leader故障,此时会在follower中选举新的leader场景:lead...

2019-11-18 15:57:30 981 1

原创 Kafka中的ACK应答机制

kafka中的应答机制:对于一些不太重要的数据,对数据的可靠性要求不是特别高的情况下,能够容忍少量的数据丢失,因此没有必要等待ISR中所有follower全部要接收成功所以Kafka为用户提供了三种可靠级别设置,可以根据不同需求来修改选择:ack有三个参数配置:参数是0,1和-1参数为0意思是:producer不等待broker的ack,这一种操作提供了最低的延迟,broker一接受到还...

2019-11-18 15:32:14 3629 3

原创 Spark中的RDD,DataFrame和DataSet

RDDRDD是一个懒执行不可变支持函数式编程并行数据集合,RDD的最大好处就是简单,提供大量可操作API,但RDD的劣势是性能,它是JVM的常驻内存对象,这里就需要使用GC来进行数据的管理还有对基础数据类型进行序列化DataFrameDataFrame其实就相当于RDD+schema信息的集合schema是什么?在数据库中schema是数据库的组织和结构模式一个schema对象可以包含...

2019-11-13 17:49:30 272

原创 Spark中的cache和checkpoint

RDD中的缓存cache:Spark速度非常快的原因之一,就是在不同操作中可以在内存中持久化或缓存数据集。当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其它动作中重用。这使得后续的动作变得更加迅速。RD D相关的持久化和缓存,是Spark最重要的特征之一。可以说,缓存是Spark构建迭代式算法和快速交互式查询的关键。如果希望节点故障的情况不会...

2019-11-07 17:38:37 450

原创 RDD中Stage的划分和血统机制

Stage划分对于窄依赖,partition的转换处理在stage中完成计算。对于宽依赖,由于shuffle的存在,只能在parent RDD处理完成后,才能开始接下来的计算,因此宽依赖是划分stage的依据**划分stage过程:**从最后一个RDD开始,调用递归算法查找RDD的父RDD,找到父RDD后开始遍历,判断父RDD和该RDD的依赖关系,如果是宽依赖,就把父RDD和前面所有RDD划分...

2019-11-07 11:46:32 957

原创 Spark简述

Spark是一种快速、通用、可扩展的大数据分析引擎与Hadoop中MapReduce项目,Spark是基于内存的,所以计算速度是MR的100倍,基于硬盘计算Spark也比MR快10倍Spark实现高效DGA执行引擎,可以通过基于内存来高效数据流处理Spark可以和很多的开源产品进行融合.例如.Spark可以使用Hadoop生态园下Yarn进行资源调度,还可以使用独立的资源调用Messos...

2019-11-04 21:19:09 214

转载 Scala中的高阶函数和柯里化

高阶函数在计算机科学中,高阶函数是至少满足下列一个条件的函数:接受至少一个函数作为输入输出一个函数在数学中它们也叫做算子(运算符)或泛函。微积分中的导数就是常见的例子,因为它映射一个函数到另一个函数。高阶函数的例子假设有一个函数对给定两个数区间中的所有整数求和:def sumInts(a: Int, b: Int): Int = if(a > b) 0 else a + ...

2019-10-31 17:25:26 181

原创 Scala实现WordCount,

利用Scala简单实现WordCount代码val line = List("hello tom hello jerry","hello xiaobai hello","hello tom") val strings: List[String] = line.flatMap(_.split(" ")) println(strings) /***下划线的用法在前面文章提...

2019-10-31 17:04:10 266

原创 Scala中的拉链操作

scala中拉链操作代码附解释package scala1object test3 {//Scala的拉链操作 def main(args: Array[String]): Unit = { val name=Array("tom","jerry","tim") val scores =Array(2,3,4) //将两个数据中的值,组成元组,name为key...

2019-10-30 21:07:34 873

转载 Scala中下划线用途简析

Scala 作为一门函数式编程语言,对习惯了指令式编程语言的同学来说,会不大习惯,这里除了思维方式之外,还有语法层面的,比如 underscore(下划线)就会出现在多种场合,令初学者相当疑惑,今天就来总结下 Scala 中下划线的用法。1、存在性类型:Existential typesdef foo(l: List[Option[_]]) = ... 2、高阶类型参数:Higher ki...

2019-10-28 16:55:05 137

原创 大数据组件Flume

2 flume特点flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统。支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(比如文本、HDFS、Hbase等)的能力 。...

2019-10-17 15:06:55 221

原创 Hive中的时间日期函数应用

Hive中日期函数总结:–1.时间戳函数–日期转时间戳:从1970-01-01 00:00:00 UTC到指定时间的秒数select unix_timestamp(); --获得当前时区的UNIX时间戳select unix_timestamp(‘2017-09-15 14:23:00’);select unix_timestamp(‘2017-09-15 14:23:00’,‘yyyy...

2019-10-16 21:14:08 120

原创 排名函数row_number(),rank(),dense_rank()的作用及运行结果比较

排名函数row_number(),rank(),dense_rank()我们用一个表来做例子hive> select * from stu;OKstu.stu_no stu.class stu.score1 1901 902 1901 903 1901 834 1901 605 ...

2019-10-10 15:40:50 521

转载 Hive Metastore原理和配置说明

一、Hive存储概念1、Hive用户接口:命令行接口(CLI):以命令行的形式输入SQL语句进行数据数据操作Web界面:通过Web方式进行访问。     Hive的远程服务方式:通过JDBC等方式进行访问。  2、元数据存储 将元数据存储在关系数据库中(MySql、Derby),元数据包括表的属性、表的名称、表的列、分区及其属性以及表数据所在的目录等。3、解释器、编译器、优化器 分...

2019-10-09 21:12:50 363

原创 yarn运行整体资源调度流程

并行度说明:maptask的并行度是指map阶段有多少个并行的maptask共同处理任务注意点:1.因为每个切片的大小默认情况下是128M,如果一个文件是260M,那么切了128M后还剩132M,如果剩余的长度/splitSize <= 1.1,就将我们剩余的全部并入一个切片中。2.小文件情场:默认的切片机制会造成大量的maptask处理很少的数据量,这样效率很低下:解决方...

2019-10-09 21:06:03 305

原创 Hive是否发生过数据倾斜,怎么处理的,原理是什么

发生过数据倾斜。 怎么处理? 先预判断是什么问题造成的倾斜,常见的有group by 、count(distinct ) 、 join等情形产生。 1、如果是group by产生的,则可考虑设置如下属性: set hive.map.aggr=true set hive.groupby.skewindata=true 原理: hive.map.aggr=true 这个配置项代表是否在map端进行聚合...

2019-10-09 21:04:12 277

原创 数仓设计之拉链表

拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。一张拉链表,存储的是维度信息以及每条记录的生命周期。可以使用这张表拿到最新的当天的最新数据以及之前的历史数据。拉链表使用场景1、有一些表的数据量很大,比如一张用户表,大约1亿条记录,50个字段。即使使用压缩格式,单张表的存储也会很大,在HDFS使用多份备...

2019-10-08 23:06:53 630

原创 利用sqoop进行全量抽取和增量抽取

增量抽取Sqoop支持两种类型的增量导入:append和lastmodified。可以使用–incremental参数指定增量导入的类型。当被导入表的新行具有持续递增的行id值时,应该使用append模式。指定行id为–check-column的列。Sqoop导入那些被检查列的值比–last-value给出最大的数据行。​ Sqoop支持的另一个表修改策略叫做lastmodified模式。当...

2019-10-08 21:48:39 5374

原创 Hive简述

Hive:facebook最初研发出来处理海量社交数据以及机器学习海量数据的处理。关系型数据库不能满足数据的存储以及分析的功能。MapReduce编程的不便性HDFS上的文件缺少Schema所以Hive是非关系型的,但hive不能称之为数据库,它相当于一个仓库,是一个基于Hadoop的数据仓库,可以通过类似sql语句来对数据进行读写处理MapReduce的问题,管理(通过管理元数据实现)...

2019-10-06 20:09:36 2107 1

原创 Hadoop三大核心之一HDFS

Hadoop三大核心有HDFS,MapReduce,YARN,下面我们先介绍一下分布式文件系统HDFSHDFSHadoop Distributed File System易于扩展的分布式文件系统,运行在大量普通机器上,提供容错机制,为大量用户提供性能不错的文件存取服务。HDFS的设计目标是:1.自动快速检测应对硬件错误2.流式访问数据3.移动计算比移动数据更加划算4.简单一致性模型...

2019-10-06 18:48:40 442

原创 Java多线程中synchronized与lock锁的区别

synchronized与lock的区别1.synchronized是java内部的关键字,在jvm层面,Lock是个java类,实现了锁的面向对象;2.synchronized无法判断是否获取锁的状态,Lock可以判断是否获取到锁;3.Lock锁适合大量同步的代码的同步问题,synchronized锁适合代码少量的同步问题,当多个线程并发执行时synchronized就显得比较麻烦因为它的...

2019-08-27 21:17:03 348

全jar包.zip

内含 hadoop-hdfs-2.7.1-sources.jar,hadoop-common-2.7.1.jar,zookeeper-3.4.6.jar等大数据所用到的74个jar包

2019-10-09

数据库基本操作指令大全.doc

整理了mysql数据库的基本操作指令,挺齐全的,包含DDL,DML,DCL ,DQL。各种查询创建语句。对初学数据库操作的新人用处很大

2019-08-24

python爬虫知乎小姐姐.zip

本程序通过Python爬取知乎小姐姐图片,并通过百度的人脸识别api进行人脸识别,并实现颜值打分,最好用Anaconda工具运行本程序

2019-07-25

教室信息管理APP

教室信息管理的原项目,Android studio运行进行教室状态,基本信息的查询和借用

2019-01-25

空空如也

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

TA关注的人

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