自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 Spark数据倾斜原因及解决方法

Spark数据倾斜原因1、数据倾斜只会发生在Shuffle过程,Shuffle时需将各节点的相同key的数据拉取到某节点上的一个task来处理,比如大部分key对应10条数据,小部分key对应10万条,那就会发生数据倾斜2、shuffle并行度不够解决办法首先要定位问题,看数据倾斜发生在哪个Stage,这个可以查看日志或者web ui(8080端口),主要看最慢的Stage各task分配的数据量,然后根据Stage划分,推算发生数据倾斜的代码。(必然有Shuffle类算子 …bykey,join,d

2021-05-17 10:33:22 1380

原创 数据集划分方法

70%用于训练集,30%用于测试集。如果想要加入验证集,划分标准可以改为60%/20%/20%,也就是将数据集的60%用于训练集,20%用于测试集,20%用于验证集。对于百万级别的数据集,可以采用98%/1%/1%的规则来划分数据集。...

2021-03-25 14:48:35 967

原创 ALS协同过滤推荐算法参数

rank:是一个特征向量,数据特征数,设置的太小拟合度会不够,误差就很大,设置的太大的话会有过拟合的问题,导致模型的泛化能力较差,一般情况下10~1000都是可以的。iteration:迭代次数,设置的越大越精确,但是也越耗时。lambda:是一个正则化参数,设置大一点可以防止过拟合,可以从0.0001 ,0.0003,0.001,0.003,0.01,0.03,0.1,0.3这样每次大概3倍的设置,先大概看下哪个值效果比较好,然后在那个比较好的值前后再设置一个范围。如果机器性能够好,而且时间充裕,可以

2021-03-25 14:47:17 551

原创 Memcached 和 Redis的区别

1 、Redis支持更丰富的数据类型,k/v,字符串、列表、集合、有序集合、哈希类型。Memecache支持简单的数据类型,k/v,字符串。2 、Redis支持数据的备份和持久化,可以将内存中的数据保存在磁盘。Memecache不支持数据的备份,数据全部存在内存。3、 Redis完全基于内存速度比memcached快很多4、 Redis是单线程的,不会有并发的问题。Memcached是多线程的;...

2021-03-19 15:30:04 130

原创 Redis中两种持久化机制RDB和AOF

RDB:在指定的时间内将内存中的数据集快照写入磁盘,是默认的持久化方式。AOF:将每一个收到的写命令都追加到文件中,重启时重新执行这些命令来还原数据。区别:1.RDB做全量持久化,适合备份和灾难恢复;AOF适合增量持久化。2.RDB文件小,恢复快,快照持久化期间修改的数据不会被保存,容易丢数据;AOF文件大,恢复慢,数据不易丢失。...

2021-03-19 15:27:18 173

原创 缓存雪崩、缓存穿透、缓存击穿

缓存雪崩缓存在同一个时间大批量的失效,请求都打到数据库上,导致数据库压力过大,甚至宕机。解决方法:往 redis 存数据的时候,把每个 key 的失效时间加上个随机数。缓存穿透缓存穿透是指查询一个一定不存在的数据,缓存没有命中,需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询。解决方法:1.使用布隆过滤器不让这个请求到达数据库层。2.从数据库查不到数据时,设置一个默认值存放到缓存,设置一个5分钟的过期时间。缓存击穿请求集中访问一个热点 key,

2021-03-19 15:26:19 96

原创 Redis内存回收机制

分为过期删除策略和内存淘汰策略两部分。1.过期删除策略:定期删除机制(每过一段时间,扫描Redis中过期key字典,并清除部分过期的key)和惰性删除机制相结合(当访问一个key时,才判断该key是否过期,过期则删除,这样节省CPU资源),来删除过期的key。2.内存淘汰策略:内存达到maxmemory时,使用LRU(最近最少使用)算法清理数据,保证Redis里都是热点数据。...

2021-03-19 15:25:02 134

原创 Spark的几种部署模式

1.本地模式Spark单机运行,一般用于开发测试。2.Standalone模式构建一个由Master+Slave构成的Spark集群,Spark运行在集群中。3.Spark on Yarn模式Spark客户端直接连接Yarn。不需要额外构建Spark集群。4.Spark on Mesos模式Spark客户端直接连接Mesos。不需要额外构建Spark集群。Standalone适合小规模集群。如果同时运行hadoop和Spark,从兼容性上考虑,Yarn是更好的选择。如果你不仅运行了had

2021-03-17 16:47:59 1751

原创 RDD,DataFrame,Dataset的相同点和区别

相同点:都是弹性分布式数据集,都有分区的概念和惰性机制,在进行创建、转换操作时不会立即执行,只有在遇到执行算子时,才会开始遍历计算。区别RDD是一个JVM驻内存对象,GC比较频繁,数据增加时Java序列化成本也会升高,不支持SparkSql。(类型转化安全)DataFrame包括数据的结构信息,类似于关系型数据库中的表,性能上比RDD要高。数据是弱类型的,不能直接获取每一列的值。数据以二进制的方式存在于堆外内存,减少了GC次数。(类型转化不安全)Dataset可以认为是DataFrame的一个特

2021-03-17 16:08:45 359

原创 Spark和MapReduce的区别

1.Spark计算基于内存,速度更快。2.Spark提供多种数据集操作类型,更灵活,容错性更高。3.Spark是粗粒度的资源申请。MapReduce是细粒度的资源申请。

2021-03-17 16:06:19 152

原创 Spark工作机制

1.用户提交作业,由driver创建一个SparkContext,分配并监控资源使用情况。2.资源管理器为其分配资源,启动executor进程。3.SparkContext根据RDD的依赖关系构建DAG图,提交给DAGScheduler解析成stage,然后提交给TaskScheduler,将stage划分为task发送给executor。4.task在executor运行把结果反馈给TaskScheduler,一层层反馈上去,最后释放资源。...

2021-03-17 16:05:18 448

原创 Kafka中的 Zookeeper 起到什么作用?

1.选举Leader2.注册Kafka的服务器3.注册Topic,一个Topic的消息会被分成多个分区分布在多个Broker上,这些分区信息与Broker的对应关系也都是由Zookeeper在维护4.注册消费者5.做生产者和消费者的负载均衡6.记录分区与消费者之间的对应关系7.记录分区的消费偏移量...

2021-03-17 09:47:55 441

原创 Kafka 与传统消息系统之间的区别

(1).Kafka 会持久化日志,这些日志可以被重复读取和无限期保留(2).Kafka 依赖Zookeeper,是一个分布式系统,以集群的方式运行,可以灵活伸缩,在内部follower通过从leader复制数据提升容错能力和高可用性(3).Kafka 支持实时的流式处理,吞吐量更高...

2021-03-17 09:46:29 316

原创 零拷贝技术

数据直接在内核完成输入和输出,不需要拷贝到用户空间再写出去,减少了用户态与内核态之间的切换,让拷贝次数降到最低。MMAP(Memory Mapped Files)将磁盘文件映射到内存, 用户修改内存就能修改磁盘文件。FileChannel.map()。DMA(Direct Memory Access)可让某些硬件子系统不用依赖CPU就能访问系统主内存。fileChannel.transferTo( position, count, socketChannel);...

2021-03-16 10:17:27 94

原创 kafka如何保证消息的可靠性与一致性?

使用ISR,ISR是一组与leader同步的消息副本集合,包括leader,一旦leader宕机,那么这个集合中的任何一个节点随时都可以被选为leader。Kafka中的follower从leader复制数据时,充分利用了磁盘的顺序读写和零拷贝技术sendfile(in,out)。ISR的伸缩性:follower从leader同步数据有一些延迟,如果超过阈值就会把这个follower剔除出ISR, 存入OSR(超时连接列表),新加入的follower也会先存放在OSR中。AR: 所有副本...

2021-03-16 10:17:00 239

原创 kafka 生产者发送数据时,ack 为 0, 1, -1的时候代表什么?

0 生产者将数据发送出去就算发送成功,不去等待任何返回,容易丢失数据。1(默认) 生产者将数据发送出去之后,要等待leader返回成功接收的消息才算发送成功,如果leader宕机则会丢失数据。-1 生产者需要等待leader和ISR中的所有follower都返回成功接收的消息才算发送成功ISR是一组与leader同步的消息副本集合,包括leader,一旦leader宕机,那么这个集合中的任何一个节点随时都可以被选为leader...

2021-03-16 10:11:23 2442

原创 Kafka丢数据的情况

1.消费端弄丢了数据消费者自动提交offset会丢数据,只要关闭自动提交 offset,在处理完之后自己手动提交 offset,就可以保证数据不会丢。2.Kafka 弄丢了数据Kafka宕机重新选举leader的时候,要是 follower没有及时同步数据,就会丢数据。在 Kafka 服务端设置 min.insync.replicas 最小同步副本参数:这个值必须大于 1,这个是要求一个 leader 至少感知到有至少一个 follower 还跟自己保持联系,这样才能确保 leader 挂了还有一个

2021-03-16 10:09:26 649

原创 Kafka 怎么体现消息顺序性?

写入时,分区的消息是按顺序写入的。消费时,一个分区在同一时间只能被消费者组中的一个消费者消费,保证了消费时也是有序的。Kafka只能保证分区内消息顺序有序,无法保证全局有序,因为消息会发送到不同的分区,分区之间发送的顺序是无法保证的。...

2021-03-16 09:53:33 273

原创 为什么需要Kafka消息队列

解耦:降低不同模块的耦合性削峰:在访问量剧增的情况下,能够使关键组件顶住突发的访问压力异步:允许用户把一个消息放入队列,但并不立即处理它缺点是会降低系统可用性,因为系统引入的外部依赖越多,越容易挂掉。...

2021-03-16 09:50:23 125

原创 Flume和Kafka的区别

Flume:分布式的海量日志采集和传输的系统(可以实时读写数据)相比Kafka,Flume更像是一个往HDFS,HBase发送数据的专用工具。它对HDFS有特殊的优化,并且集成了Hadoop的安全特性。如果数据被发给HDFS,HBase则使用Flume。如果数据被多个系统消费的话就使用kafka;flume 如何保证数据的可靠性?数据从source到channel以及从channel到sink的过程中,一批事件event会被封装成事务进行批处理。(事务具有原子性,即要么都成功,要么都失败)唯一可能

2021-03-16 09:49:07 609

原创 Paxos算法和Zab协议

Paxos算法是一个分布式选举算法,用来解决一个分布式系统如何就某个值达成一致的问题(zookeeper没用这个,用的zab)proposer 提出提案,提案信息包括提案编号和提议的value;acceptor 收到提案后可以接受提案;learner 只能学习被批准的提案;它主要分为两个阶段:分别是prepare阶段和accept阶段。阶段一(prepare阶段)提案者选择一个提案编号N,然后向半数以上的接收者发送编号为N的prepare请求,如果该编号大于接收者已经批准过的最大编号,则返回最大

2021-03-16 09:39:58 220

原创 zookeeper的监听机制和选举机制

zookeeper 监听机制1.首先启动一个main线程2.在main线程中创建Zookeeper客户端,同时会创建两个线程,connet(负责通信)listener(负责监听)​3.通过connet线程将注册的监听事件发送给Zookeeper4.Zookeeper收到注册的监听事件后将其添加进注册监听列表​5.Zookeeper监听到有路径或数据的变化就会将这个消息发送给listener线程​6.listener调用process()方法zookeeper 选举机制1.选举机制简介​

2021-03-16 09:33:16 178

原创 Zookeeper的作用

Zookeeper是一个分布式应用程序协调服务1.命名服务(比如服务部署在5台服务器上,有5个不同的ip,此时有个B服务需要调用A的接口,如果提供某一台服务器的ip,则存在该服务器宕机接口不可用的情况,此时,可以使用zookeeper作为注册中心,A服务的5台服务器在znode下创建子节点,B服务通过指定znode的路径可以获取到A服务中的ip信息。同时zookeeper动态维护这部分节点,定时利用心跳请求检查服务的服务器状态,一旦发现某服务器无反馈,就删除节点,防止接口被B服务调用)2.配置管理3.

2021-03-15 11:20:35 2170

原创 HBase 宕机如何处理

如果是 RegionServer宕机,HMaster会将其所管理的HRegion重新分布到其他RegionServer上,由于数据和日志都持久化在HDFS中,所以不会导致数据丢失。如果是 HMaster 宕机, HMaster 没有单点问题, 可以启动多个 HMaster,Zookeeper会保证总有一个 HMaster 对外提供服务。...

2021-03-15 11:07:44 362

原创 Hbase应用场景及读写操作流程

Hbase读操作流程:1.客户端访问 zookeeper,查找-ROOT-表和.META.表信息,确定数据所在的HRegion位置(.META.表记录了所有的HRegion信息,-ROOT-表记录的也是HRegion的信息,但没那么详细。)2.客户端访问HRegion所在的HRegionServer,然后扫描Memstore 和 Storefile 来查询数据3.最后HRegionServer 把查询到的数据响应给客户端。Hbase写操作流程:1.客户端先访问 zookeeper,查找-ROOT-

2021-03-15 11:04:50 159

原创 Zookeeper在Hbase中的作用

1.保证集群中只有一个活跃的Master。2.HRegionserver将自己注册到Zookeeper的Znode上,Zookeeper将HRegionserver的上下线信息汇报给HMaster。3.存储HBase的元数据,知道集群中有哪些表,每个表有哪些列族。

2021-03-15 11:03:19 817

原创 Hive窗口函数

over()必须跟在聚合函数后,()中为空,表示对整个数据集开窗ROW_NUMBER() 按顺序排名 1234RANK() 排名相等会在名次中留下空位 1134DENSE_RANK() 排名相等会在名次中不会留下空位 1123PRECEDING:往前FOLLOWING:往后CURRENT ROW:当前行UNBOUNDED:起点UNBOUNDED PRECEDING 表示从前面的起点UNBOUNDED FOLLOWING 表示到后面的终点NTILE(n) 用于将分组数据按照顺序切

2021-03-15 11:01:28 92

原创 Hive自定义UDF函数流程

1)写一个类继承(org.apache.hadoop.hive.ql.)UDF类;2)重写evaluate()方法;3)打JAR包;4)添加JAR到Hive的类路径:hive> add jar /home/ubuntu/ToDate.jar;5)注册函数:hive> create temporary function xxx as ‘XXX’;6)使用函数;UDF(一进一出) UDAF(多进一出) UDAF(一进多出)简单的数据类型(比如String、Inte

2021-03-15 10:55:16 464

原创 Hive优化

1.Fetch抓取对简单的查询可以不走MapReduce,直接从文件中读取数据2.本地模式对于小数据集,可以通过本地模式在单台机器上处理所有的任务3.严格模式限制笛卡尔积的查询对于使用了order by的查询语句,必须使用limit限制查询结果对于分区表,除非用where指定了分区,否则不予执行4.开启并行执行Hive会将一个查询转化成多个阶段,默认情况下,Hive一次只会执行一个阶段5.开启推测执行启动一个备份任务,与原任务同时处理同一份数据,最终选用最先完成任务的计算结果作为最终结

2021-03-15 10:53:24 62

原创 Hive内部表和外部表区别

1.内部表数据的存储位置默认在/user/hive/warehouse下,删除时,元数据和hdfs上的数据都会被删除,适用于临时创建的中间表。2.外部表数据的存储位置由自己指定,删除时,只删除元数据,外部表相对安全,适用于数据共享的情况。...

2021-03-15 10:48:47 253

原创 Hive压缩格式

LZO和BZip2支持文件切分Snappy和Gzip不支持文件切分Snappy不支持文件分割操作,文件只会被一个任务所读取,如果该压缩文件很大,那么处理该文件的Map需要花费很长时间,为了避免这种情况的发生,就需要采用支持文件分割的压缩算法,但ORC不支持这些压缩方式,所以大文件压缩不选择ORC,避免数据倾斜。实际生产中,使用Parquet+LZO更常见,可以避免由于读取不可分割大文件引发的数据倾斜,数据量不大的情况下,使用ORC+Snappy...

2021-03-15 10:46:59 146

原创 Hive中导入和导出数据的方式

导入:1从本地导入: load data local inpath ‘/home/1.txt’ (overwrite)into table student;2从Hdfs导入: load data inpath ‘/user/hive/warehouse/1.txt’ (overwrite)into table student;3建表导入: create table student1 as select * from student;4插入导入:insert (overwrite)into table

2021-03-15 10:44:15 110

原创 Hive数据倾斜原因及解决方案

原因:key的hash值分布不均匀或者业务本身的特性,造成reduce上的数据量差异过大,导致某些reduce任务进度长时间维持在99%。某些SQL语句本身就有数据倾斜。解决方案:1>参数调节:开启map端合并(combine操作) hive.map.aggr=true开启负载均衡 hive.groupby.skewindata=true2>SQL语句调节:1)两个表join的时候选用key分布最均匀的表作为驱动表,做好列裁剪和过滤操作。2)小表Joi

2021-03-12 16:27:12 294

原创 Hive与关系型数据库的区别

1、hive适合海量数据,事务性和实时性较差rdbms一般数据量相对来说不会太大,事务性和实时性较好2、hive的计算引擎是mapreducerdbms的计算引擎由数据库自己设计实现3、hive的扩展能力比较好rdbms的扩展能力比较差4、hive没有主键和索引,不支持更新操作rdbms有主键和索引,支持增删改查...

2021-03-12 16:23:46 219

原创 Hive和Hbase的区别

Hive是数据仓库,严格来说不是数据库,可以将结构化的数据文件映射为一张表,并提供类SQL的查询功能,适用于离线的数据批处理。Hbase是一种非关系型数据库,主要适用于海量数据的随机实时查询。二者一般配合使用,通过HIve清洗处理后的数据,如果是面向海量数据随机查询场景的可存入Hbase。...

2021-03-12 16:21:57 116

原创 Hadoop常见输入格式

Text 输入格式(默认),每一行的起始偏移量为key,内容为valuekey-value 输入格式适用于以制表符分割的多列数据SequenceFile 输入格式适用于二进制文件CombineFile 输入格式适用于小文件

2021-03-12 16:15:13 540

原创 HDFS读写数据流程

HDFS读数据流程1、客户端向NameNode发送下载文件请求,NameNode通过查询元数据,找到文件块所在的DataNode服务器2、挑选一台DataNode服务器,请求读取数据(就近原则,如果距离一样则随机挑选)3、DataNode向客户端发送数据(从磁盘里面读取数据流,以packet为单位来做校验)4、客户端以packet为单位接收,先在本地缓存,然后写入目标文件,然后将每块的数据拼接起来组合成一个完整的文件HDFS写数据流程1.客户端向NameNode发起写文件请求,NameNode检

2021-03-12 16:13:55 119

原创 HDFS小文件比较多的解决方案

1.用Hadoop Archive或者HAR,它能够将多个小文件打包成一个HAR文件2.使用CombineFile输入格式3.使用appendToFile命令

2021-03-12 16:11:34 233

原创 MapReduce数据倾斜原因及解决方法

key的hash值分布不均匀或者业务本身的特性,造成reduce上的数据量差异过大,导致某些reduce任务进度长时间维持在99%。1、调优参数开启combine操作 set hive.map.aggr=true;开启负载均衡 set hive.groupby.skewindata=true;2.自定义分区(继承抽象类Partitioner,重写getPartition方法)3.采用MapJoin,尽量避免ReduceJoin。...

2021-03-12 16:09:59 436

原创 Yarn申请资源过程

1.客户端提交作业到Resourceanager(公司的总经理)2.ResourceManager实时要求NodeManager(部门经理)上报节点资源使用情况3.如果节点处于空闲状态,Resourceanager会在节点上创建一个ApplicationMaster(项目经理)4.ApplicationMaster向ResourceManager申请资源,Resourceanager向NodeManager分配资源5.NodeManager将资源封装成Container交给ApplicationMa

2021-03-12 16:06:13 744

空空如也

空空如也

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

TA关注的人

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