- 博客(2357)
- 资源 (69)
- 问答 (17)
- 收藏
- 关注
转载 RoaringBitMap在B站大数据中的应用
本文阐述了RBM的基础原理和性能分析,比较了与原BitMap的异同点,与B站的一些大数据应用场景相结合来做方案改造,来达到降本增效、方便下游使用的目的。大数据方面还有很多方向可以做,比如通过RBM优化Redis中的bitmap,通过RBM来提高Flink存储和计算去重状态的性能,通过RBM用来做实时特征人群的存在判定等等,希望本文为大家提供解决类似问题的一种新思路,欢迎随时探讨。参考文章:348–365.RoaringBitMap在B站大数据中的应用。
2022-11-07 22:01:53 1381
翻译 ElasticSearch 动态更新索引
通过增加一个新的补充索引来反映最近的修改,而不是直接重写整个倒排索引。每一个倒排索引都会被轮流查询--从最旧的开始--再对各个索引的查询结果进行合并。
2022-11-05 16:39:15 1225
翻译 ElasticSearch 段合并
由于自动刷新过程每秒会创建一个新的段,这样会导致短时间内段数量暴增。段数目太多会带来比较大的麻烦。每一个段都会消耗文件句柄、内存和 CPU 运行周期。更重要的是,每个搜索请求都必须按顺序检查每个段。所以段越多,搜索也就越慢。Elasticsearch 通过在后台进行段合并来解决这个问题。小的段被合并成大的段,然后这些大的段会被合并成更大的段。段合并的时候将那些被标记为删除的旧文档从文件系统中删除。被标记删除的文档或者更新文档的旧版本文档不会被拷贝到新的更大的段中。
2022-11-05 15:53:51 881
翻译 Hadoop 二次排序
事后看来,回顾我们应用于复合 key 的不同工具的效果,除了 “在多个字段上进行排序” 外,我们还可以给出二次排序的更一般而精确的定义:二次排序是一种技术,用于控制 Reducer 的输入对如何传递给 reduce 函数。上面的如何可以理解为以何种顺序()以及基于 key 的对值进行分组的方式()根据这个定义,使用,我们可以对Reducer内的数据进行全面控制,这就是输出文件内部始终排好序的原因。
2022-11-04 08:17:31 596
原创 ElasticSearch 索引
我们首先要做的是存储员工数据,每个文档代表一个员工。在 Elasticsearch 中存储数据的行为就叫做索引(indexing),不过在索引之前,我们需要明确数据应该存储在哪里。Elasticsearch 集群可以包含多个 index(数据库),每一个 index 可以包含多个 types(表),每一个 type 又可以包含多个 document(行),然后每个 document 包含多个 field(列)。默认情况下,文档中的所有字段都会被索引(拥有一个倒排索引),只有这样他们才是可被搜索的。
2022-11-03 23:10:10 559
翻译 Hadoop MapReduce 2.0 架构详解
比以前的版本有了很大的改进。以下是MapReduce的一些亮点;请注意,HDFS也有一些主要的改进,这些不在本文的讨论范围之内。(又名MRv2或YARN)。新的架构将JobTracker管理计算资源到应用程序的全局分配的(RM)。每个应用程序的(AM),用于管理应用程序的生命周期。每个节点上还有一个(NM),用于管理该节点上的用户进程。RM和NM构成集群的计算框架。该设计还允许在NM中运行长时间的辅助服务;这些都是特定于应用程序的服务,作为配置的一部分进行指定,并在启动期间由NM加载。对于YARN。
2022-11-03 22:29:39 863
原创 ElasticSearch 内部原理之分布式文档搜索
ElasticSearch 版本: 2.x这个要比基本的创建-读取-更新-删除(CRUD)请求要难一些。CRUD操作是处理的单个文档。这就意味着我们明确的知道集群中的哪个分片存储我们想要的文档。一个 CRUD 操作只对单个文档进行处理,文档有唯一的组合,由_index,_type, 和 路由值 (默认是该文档的_id)组成。这表示我们确切的知道此文档在集群中哪个分片中。搜索请求是更复杂的执行模型,因为我们不知道哪些文档会与查询匹配,它们可能存在在集群中的任意一个分片中。
2022-11-02 23:52:42 538
原创 Hadoop MapReduce 2.x 工作原理
对于节点数超出 4000 的大型集群,MapReduce 1 的系统开始面领着扩展性的瓶颈。在 2010 年雅虎的一个团队开始设计下一代 MapReduce。由此,YARN(Yet Another Resource Negotiator)应运而生。YARN 将 Jobtracker 的职能划分为多个独立的实体,从而改善了经典的 MapReduce 面临的扩展瓶颈问题。Jobtracker 负责作业调度和任务进度监视、追踪任务、重启失败或过慢的任务和进行任务登记,例如维护计数器总数。
2022-11-02 23:17:50 464
翻译 ElasticSearch 内部原理之分布式文档存储
之前的文章中,我们已经知道如何存储数据到索引中以及如何检索它。但是我们掩盖了数据存储到集群中以及从集群中获取数据的具体实现的技术细节。
2022-11-01 23:03:03 163
转载 易观数科代码埋点、全埋点、可视化埋点
讲埋点的文章那么多,我们为什么还要写它?首先,这不是一篇纯技术文章,而是从一个非技术人员的角度,希望通过浅显的语言描述,让运营同学能快速了解概念。此外,目前市面的埋点文章,要么没有进行系统性的知识梳理,要么不够客观存在偏向性。而我们则希望让大家透过表象,通过系统的讲解和梳理,了解埋点的真正含义。
2022-10-30 20:00:21 638
转载 有赞埋点实践
大数据应用一般会有采集、加工、存储、计算及可视化这几个环节。其中采集作为源头,在确保全面、准确、及时的前提下,最终加工出来的指标结果才是有价值的。而埋点作为一种重要的采集手段,可以将用户行为信息转化为数据资产,为产品分析、业务决策、广告推荐等提供可靠的流量数据支持。在业务需求少的情况下,可以运用一些简单的方法快速采集用户行为。但如果业务线、终端众多,数据需求多样,就需要设计好埋点模型和采集规范,工具化、平台化、流程化的管理来保证埋点的质量。
2022-10-30 09:20:46 486
转载 哔哩哔哩基于拉链表的全量表极限存储优化方案
对全量分区表进行拉链化,优化的技术方案不仅能降低存储,而且还能降低一定的计算资源。后续我们会和大家聊聊如何进行拉链表的幂等化,如何高效地对数据进行覆盖率和重复率测试,预估全量分区表拉链化的收益以及有选择性地优化全量分区表等内容。互联网场景下基于拉链表的全量表极限存储优化方案。
2022-10-27 20:57:02 233
转载 网易严选如何打造数仓规范和评价体系
指标定义规范,目的是统一开发 & 产品对指标的定义。通过对原子指标的命名规则、派生指标的命名规则和派生词的定义来完成。指标定义体系,是数据建设体系的基础和内核,为了杜绝产品经理命名引起的歧义,以及后续带来的使用和维护以及解释成本。
2022-10-27 08:19:28 391
转载 美团 OneData 建设探索之路:SaaS收银运营数仓建设
随着业务的发展,频繁迭代和跨部门的垂直业务单元变得越来越多。但由于缺乏前期规划,导致后期数仓出现了严重的数据质量问题,这给数据治理工作带来了很大的挑战。在数据仓库建设过程中,我们总结的问题包括如下几点:在现有大数据平台的基础上,借鉴业界成熟 OneData 方法论,构建合理的数据体系架构、数据规范、模型标准和开发模式,以保障数据快速支撑不断变化的业务并驱动业务的发展,最终形成我们自己的OneData 理论体系与实践体系。在数据建设方面,阿里巴巴提出了一种OneData标准,如下图所示:他山之石,可以攻玉。我
2022-10-25 22:58:31 1005
转载 Flink 原理与实现:架构和拓扑概览
要了解一个系统,一般都是从架构开始。我们关心的问题是:系统部署成功后各个节点都启动了哪些服务,各个服务之间又是怎么交互和协调的。下方是 Flink 集群启动后架构图。
2022-10-18 23:30:49 328
转载 Flink SQL 功能解密系列 —— 流式 TopN 挑战与实现
TopN 是统计报表和大屏非常常见的功能,主要用来实时计算排行榜。流式的 TopN 不同于批处理的 TopN,它的特点是持续的在内存中按照某个统计指标(如出现次数)计算 TopN 排行榜,然后当排行榜发生变化时,发出更新后的排行榜。本文主要讲解 Flink SQL 是如何从语法和实现上设计 TopN 的。流式 TopN 不仅在语法以及算法上会遇到很多挑战,在不同场景下的优化方案也是个非常有意思的话题。目前 Flink SQL 的 TopN 功能已经大量应用于彩票业务、阿里云的CDN项目、WAF项目等等。
2022-10-17 23:09:55 516
翻译 Flink 如何处理背压
像 Flink 这样的流处理系统需要能够从容地处理背压。背压是指系统在一个临时负载峰值期间接收数据的速率大于其处理速率的一种场景(可以理解为处理速度慢,接收速度快,系统处理不了接收的数据)。许多日常情况都会导致背压。例如,垃圾回收卡顿可能导致流入的数据堆积起来,或者数据源可能出现发送数据过快的峰值。如果处理不当,背压会导致资源耗尽,甚至导致数据丢失。让我们看一个简单的例子。
2022-10-16 23:16:01 494
转载 Flink 网络流控和反压剖析详解
网络流控是为了在上下游速度不匹配的情况下,防止下游出现过载。网络流控有静态限速和动态反压两种手段。Flink 1.5 之前是基于 TCP 流控 + bounded buffer 实现反压。Flink 1.5 之后实现了自己托管的 credit - based 流控机制,在应用层模拟 TCP 的流控机制。
2022-10-14 08:43:30 445
转载 贝壳 DMP 平台建设实践
其实 DMP 就是把用户各种各样的数据,包括结构化数据以及非结构化数据,进行整合计算然后标签化,通过标签来描述刻画用户,理解用户。比如,通过标签,我们解读到一个北京的用户,想看郑州的房子,喜欢400万的两居室。通过用户的标签,我们可以非常直观的了解用户。然后基于这些结构化的标签数据,我们也可以很方便地跟各个下游系统做对接,实现站外或者站内的精细化运营。接下来我们逐层看一下每层是怎么做的,以及遇到的问题和相应的解决方案。
2022-10-12 23:01:48 1235
原创 Spark Streaming Kafka 偏移量 Offset 管理
Spark Streaming 与 Kafka 的集成允许用户从 Kafka 单个 Topic 甚至多个 Topic 中读取消息。Kafka Topic 通过存储消息的分布式分区来接收消息。每个分区按顺序维护接收到的消息,并用偏移量 Offset 来标识。开发人员可以在 Spark Streaming 作业中通过偏移量 Offset 来控制数据读取的位置,但是这需要好的偏移量 Offset 管理机制。管理偏移量 Offset 对于保证流式应用程序在整个生命周期中数据的连贯性是非常有益的。
2022-10-12 22:42:41 1046
翻译 Spark Streaming 基于 Direct API 优化与 Kafka 集成
Apache Kafka 正在迅速成为最受欢迎的开源流处理平台之一。我们在 Spark Streaming 中也看到了同样的趋势。因此,在 Apache Spark 1.3 中,我们专注于对 Spark Streaming 与 Kafka 集成进行重大改进。在本文中,我们将更详细地讨论这些改进。
2022-10-10 16:37:18 185
翻译 Spark Streaming 容错改进与零数据丢失
实时流处理系统必须可以 7*24 小时工作,因此它需要具备从各种系统故障中恢复的能力。最开始,Spark Streaming 支持从 Driver 和 Worker 故障中恢复。然而,从有些数据源导入数据时可能存在故障恢复以后丢失数据的情况。在 Spark 1.2 版本中,我们已经在 Spark Streaming 中对预写日志作了初步支持,改进了恢复机制,使得更多数据源零数据丢失有了可靠的保证。本文将详细地描述这个特性的工作机制,以及开发者如何在 Spark Streaming 应用中使用这个机制。
2022-10-10 16:01:15 349
翻译 Spark Streaming 2.2.0 性能调优
Spark Streaming 应用程序要获得最佳性能需要做一些调整优化。这篇文章我们介绍可以提高你应用程序性能的参数以及配置。
2022-10-10 13:26:42 230
原创 Spark Streaming 第一个程序 WordCount
Spark Streaming 是 Spark Core API 的一个扩展,它对实时流式数据的处理具有可扩展性、高吞吐量、可容错性等特点。数据可以从诸如 Kafka,Flume,Kinesis 或 TCP 套接字等许多源中提取,并且可以使用由诸如 map,reduce,join 或者 window 等高级函数组成的复杂算法来处理。最后,处理后的数据可以推送到文件系统、数据库、实时仪表盘中。事实上,你可以将处理后的数据应用到 Spark 的机器学习算法、 图处理算法中去。内部工作原理如下图所示。
2022-10-09 18:34:20 334
原创 Flink SQL 使用 Datagen SequenceGenerator 出现 OutOfMemoryError: Java heap space 异常
从上面日志中可以看出是在序列化生成器 SequenceGenerator 初始化时抛出异常,具体与双端队列 ArrayDeque 相关。从上面代码中可以看出每个并发子任务在初始化序列化生成器时会创建一个双端队列 ArrayDeque 来存储。对此,你可以扩大 TaskManager 的堆内存大小。由于我们设置的区间比较大,所以导致双端队列再扩容时出现堆内存溢出。session_id 的生成区间从。
2022-10-08 23:25:16 761
转载 Flink SQL 核心解密 —— 提升吞吐的利器 MicroBatch
之前我们在 Flink SQL 中支持了 MiniBatch, 在支持高吞吐场景发挥了重要作用。今年我们在 Flink SQL 性能优化中一项重要的改进就是升级了微批模型,我们称之为 MicroBatch,也叫 MiniBatch2.0。之前我们在 Flink SQL 中支持了。
2022-10-08 16:01:31 796
原创 Flink SQL Size of the state is larger than the maximum permitted memory-backed state
错误日志提示已经很明显,状态大小超过 Checkpoint 持久化存储默认最大值。由于代码中没有指定 CheckpointStorage,因此默认使用 JobManagerCheckpointStorage 存储在内存中,默认大小为 5MB。日志中建议切换到 FileSystemCheckpointStorage 中。注意的是 Flink 1.13 版本将之前的 StateBackend 拆分成新的 StateBackend 和 CheckpointStorage 两个功能。
2022-10-08 09:46:04 1121
转载 Flink SQL 功能解密系列 解决热点问题的大杀器 MiniBatch
在 Blink 的流式任务中,State 相关的操作通常都会成为整个任务的性能瓶颈。实时计算部-查询和优化团队开发了 MiniBatch 功能,大幅降低了 State 操作的开销,在今年的双11中,几乎所有适用的任务都启用了 MiniBatch 功能。
2022-10-07 23:52:34 530
原创 Flink Table API & SQL DataGen Connector
DataGen Connector 是一个内置的 Source Connector,基于生成的内存数据来创建表。这在本地开发查询而不访问外部系统(如 Kafka)时很有用。random:随机生成器sequence:序列生成器随机生成器(random),是默认的生成器。可以指定随机生成的最大和最小值。char、varchar、string (类型)可以指定长度。随机生成器是一种无界的生成器,如果指定了总行数,从而变成了一个有界生成器。序列生成器(sequence),可以指定序列的起始和结束值。
2022-10-07 23:07:36 558
转载 深入分析 Flink SQL 工作机制
本文整理自 Flink Forward 2020 全球在线会议中文精华版,由 Apache Flink PMC 伍翀(云邪)分享,社区志愿者陈婧敏(清樾)整理。旨在帮助大家更好地理解 Flink SQL 引擎的工作原理。
2022-10-07 18:31:46 318
原创 Flink SQL Emit 输出策略
EMIT 输出策略是指在 Flink SQL 中,QUERY 根据不同场景选择不同的输出策略(例如最大延迟时长),从而达到控制延迟或提高数据准确性的效果。例如,1 小时的时间窗口,窗口触发之前希望每分钟都能看到最新的结果,窗口触发之后希望不丢失迟到一天内的数据。如果 1 小时窗口内的统计结果无变化,则不更新输出结果;如果1小时窗口内的统计结果有变化,则更新输出结果。需要注意的是添加了 EMIT 输出策略后会由原来输出 Append 流变成输出 Retract 流。
2022-10-07 17:09:58 880
原创 Flink SQL 分组窗口函数 Group Window 实战
在 Flink 1.12 之前的版本中,Table API 和 SQL 提供了一组分组窗口 Group Window 函数,常用的时间窗口如滚动窗口、滑动窗口、会话窗口都有对应的实现,具体在 SQL 中调用 TUMBLE()、HOP()、SESSION() 分组窗口函数即可。分组窗口的功能比较有限,只支持窗口聚合,所以在 Flink 1.12 之后的版本中不再推荐使用 Group Window 函数。而是推荐使用功能更加强大以及更有效的 Window TVF,具体请查阅。
2022-10-05 23:49:23 861
原创 Flink Table API & SQL 如何定义时间属性
基于时间的操作,例如 Table API 和 SQL 查询中的窗口,需要知道时间相关的信息。因此,表需要提供逻辑时间属性以指明时间以及提供访问相应的时间戳。时间属性可以作为表 schema 的一部分,可以在用 CREATE TABLE DDL 语句创建表的时候指定、也可以在 DataStream 中指定、也可以在定义 TableSource 时指定。一旦定义了时间属性,就可以像普通字段一样使用,也可以在时间相关的操作中使用。
2022-10-05 15:47:20 502
转载 快手基于 Flink 构建实时数仓场景化实践
文整理自快手数据技术专家李天朔在 5 月 22 日北京站 Flink Meetup 分享的议题《快手基于 Flink 构建实时数仓场景化实践》
2022-10-04 19:34:05 194
原创 Flink SQL 窗口表值函数 Window TVF 实战
窗口 TVF 是 Flink 定义的多态表函数(缩写 PTF)。PTF 是 SQL 2016 标准的一部分,是一个特殊的表函数,可以将表作为参数。因为 PTF 在语义上像表一样使用,所以它们的调用发生在 SELECT 语句的 FROM 子句中。窗口 TVF 是传统 Grouped Window 函数的替代品。窗口 TVF 更符合 SQL 标准,也更强大,可以支持复杂的基于窗口的计算,例如 Window TopN, Window Join。但是,Grouped Window 函数只能支持窗口聚合。
2022-10-04 16:58:02 791
转载 网易严选 DMP 标签系统建设实践
如果说互联网的上半场是粗狂运营,因为有流量红利不需要考虑细节。那么在下半场,精细化运营将是长久的主题,有数据分析能力才能让用户得到更好的体验。当下比较典型的分析方式是构建用户标签系统,从而精准地生成用户画像,提升用户体验
2022-10-02 23:33:19 511
Android应用开发揭秘
2015-12-17
Android开发秘籍
2015-12-17
Android开发精要
2015-12-17
Android技术内幕.系统卷
2015-12-17
Android高级编程
2015-12-17
JavaEE企业应用实战-Struts2+Spring3+Hibernate整合开发
2015-12-17
Mahout算法解析与案例实战
2015-12-16
LINUX内核设计与实现
2015-12-14
重构-改善即有代码的设计
2015-12-14
算法艺术和信息学竞赛
2015-12-14
apache-mahout-distribution-0.11.1-src
2015-11-30
log4j-1.2.17
2015-11-30
apache-maven-3.3.9-bin
2015-11-30
Better bitmap performance with Roaring bitmaps
2023-03-06
美团外卖离线数仓建设实践
2023-02-19
Redis 入门指南
2017-06-02
Apache Spark源码剖析
2016-11-12
Shell脚本学习指南
2016-05-28
精通Spring
2016-02-07
Spring-Jar-4.2.4
2016-01-28
log4j所需jar包
2016-01-20
Hadoop实战中文版
2015-12-25
大型网站技术核心原理与案例分析
2015-12-25
Hive Range Between 结果错误问题
2023-02-28
Storm Trident 抛异常不重发
2018-11-23
hive SERDEPROPERTIES 实现正则过滤
2018-06-05
Flink 关于窗口Window的问题
2018-01-17
Hive 运行SQL 重定向文件 输出WARN日志
2017-06-13
Hadoop Distcp报错 队列问题
2017-01-17
Hive Join 失败
2016-11-28
Hive 查询问题
2016-09-07
Hive LOAD DATA 错误
2016-07-23
[ElasticSearch] 中文字符串精确搜索 term 搜不到结果
2016-07-05
mysql group by 统计问题
2016-06-17
大型分布式网站架构的演进
2016-05-16
ubuntu IntelliJ Idea设置快捷方式问题
2016-03-08
罗技键盘 k380 连接上 没有任何的反应?
2016-03-06
Maven archetype:generate报错
2016-01-25
Log4j问题
2016-01-16
Java Stringbuilder调用append()方法报错
2015-12-20
nosql开放性问题
2015-12-18
TA创建的收藏夹 TA关注的收藏夹
TA关注的人