浪尖聊大数据

其他

Loki 日志系统详解

"error"表示查询,namespace为CI/CD的日志中,有error字样的信息。limit:返回日志的数量start:开始时间,Unix时间表示方法
2021年9月24日
其他

快手大数据平台服务化实践

本文是围绕着快手的数据服务化中台进行介绍。第一部分是背景介绍,包括数据开发的痛点,第二部分是介绍大数据服务化平台,包括平台架构以及关键细节详解,第三部分是经验总结和未来思考。背景快手是一家数据驱动的公司,数据扮演了非常重要的角色,而数据的生产加工主要依靠数据开发工程师,其工作内容会涉及多个方面:数据开发工程师则首先根据业务需求开发好高质量的数据,通常是结构化数据(数据表);其次,开发稳定可靠的数据服务,并通过API方式交付给业务方使用。数据开发工程师有两个痛点:1)开发数据服务门槛高;2)重复开发数据服务。痛点一:开发数据服务门槛高数据开发工程师除了开发完数据表外,通常还需要思考如下问题:数据如何交付:业务通常期望使用数据接口方式来使用数据,而非数据表,这会更加灵活、解耦、高效。数据开发工程师因此需要建立对应的数据服务。服务如何开发:数据服务有多种形式,通常要求开发工程师有微服务知识、服务发现注册、高并发等。权限、可用性问题:开发完数据服务后,需要考虑权限问题,确保数据资源能被安全的访问;此外还需要考虑可用性问题,要以多种手段保障数据访问的稳定性。运维问题:数据服务本身涉及多种运维问题,如扩容、迁移、下线、接口变更、服务报警等。以上问题都需要数据开发工程师去解决。这要求数据开发不仅仅是开发出数据表,还需要将数据表包装成一个独立的、灵活的、高可用的、安全的数据服务。这对于数据开发工程师要求很高:除了具备基本的业务需求捕获、数据建模、SQL开发等能力外,还要具备开发高可用、高性能的数据服务能力(包括java开发、微服务等)。痛点二:重复开发数据服务快手很多业务线(如支付业务、直播业务、账户业务等),都存在数据需求,各业务线都做着:1)数据同步到线上数据库和缓存;2)建设微服务等开发,其中不同业务线下,数据同步和微服务通常有很多共同之处,重复烟囱式的开发意味要重复开发数据服务,造成了人力资源浪费,而且开发效率低,从数据开发到最终交付数据服务,需要经历较长的周期。基于上述痛点,我们开始建设统一的数据服务化平台。由此开启一个新模式去解决问题。大数据服务化平台数据平台本身的定位是一站式自助数据服务平台。用户通过平台来创建数据服务接口、运维服务、调用服务。平台秉承“配置即服务”的理念:数据开发工程师不再需要手写数据服务,只需要在平台上进行简单配置,平台便可自动生产和部署数据服务,从而提升效率。系统架构大数据服务化业务架构如下所示,Data
2021年3月5日
其他

华为数据治理实践

年华为提出了企业的新愿景:"把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界"。同时,华为公司董事、CIO陶景文提出了"实现全联接的智能华为,成为行业标杆"的数字化转型目标。图
2020年11月22日
其他

漫画面试回答kafka为何如此之快|满分

Cache中即可立即返回,而不需等待数据被实际持久化到磁盘,进而提高了上层应用读写文件的整体性能。cached这列的数值表示的是当前的页缓存(page
2020年10月29日
其他

基于Groovy的规则脚本引擎实战

因为之前在项目中使用了Groovy对业务进行一些抽象,效果比较好,过程中也踩了一些坑,所以简单记录分享一下自己如何一步一步实现的,在这里你可以了解:1、为什么选用groovy作为规则脚本引擎2、了解Groovy的基本原理和Java如何集成3、分析Groovy与java集成的一些问题和坑4、在项目中使用时做了哪些性能优化5、实际使用时需考虑的一些tips互联网时代随着业务的飞速发展,迭代和产品接入的速度越来越快,需要一些灵活的配置。办法通常有如下几个方面:1、最为传统的方式是java程序直接写死提供几个可调节的参数配置然后封装成为独立的业务模块组件,在增加参数或简单调整规则后,重新调上线。2、使用开源方案,例如drools规则引擎,此类引擎适合业务较复杂的系统3、使用动态脚本引擎:groovy,simpleEl,QLExpress引入规则脚本对业务进行抽象可大大提升效率。例如,笔者之前开发的贷款审核系统中,贷款的订单在收单后会经过多个流程的扭转:收单后需根据风控系统给出结果决定订单的流程,而不同的产品的订单的扭转规则是不一致的,每接入一个新产品,码农都要写一堆对于此产品的流程逻辑;现有的产品的规则也经常需要更换。所以想利用脚本引擎的动态解析执行,到使用规则脚本将流程的扭转抽象出来,提升效率。考虑到基于自身的业务的复杂性,传统的开源方案如Acitivities和drools,对于我的业务来说,过于重了。再对于脚本引擎来说最常见的其实就是groovy了,ali有一些开源项目
2020年10月28日
其他

漫画讲解Kafka高效的存储设计|面试

|--click_log-3下图说明了文件的存储方式:每个partion(目录)相当于一个巨型文件被平均分配到多个大小相等segment(段)数据文件中。但每个段segment
2020年10月22日
其他

数据建模方法及步骤

星型模型或多维模型选择一种维度模型的落地方式。既可以选择星型模型,部署在关系数据库上,通过事实表及通过主外键关联的维度表;也可以选择多维模型,落地于多维数据库中。2.3
2020年10月19日
其他

漫画全面解释Spark企业调优点

一:资源配置一般企业中,物理机器的cpu:内存基本上都是1:4+,比如机器24core,一般有128GB及以上内存;48core,一般有256GB及以上内存。减去系统及hdfs所需core,2个吧;减去系统的2-4GB,减去存储hdfs的相关的假设20GB吧(hbase需要的更多点,但是一般hbase会有独立集群)。24core,128GB的机器应该还剩还有20core,100GB。这种情况下,很明显,你1core对应5GB内存才能最大化利用机器,否则往往cpu没了,内存还有大把,应用还容易出现gc问题。所以,假设你的业务cpu确实消耗比较少,可以在配置yarn的时候虚拟cpu可以设置为物理cpu的n倍。这样才可以满足小白,1:1的分配cpu内存的需求。yarn.nodemanager.resource.cpu-vcores
2020年10月18日
其他

必知|Scala类型层次结构

java的除了原始类型的所有类都有一个默认的父类Object,那么scala的统一父类是什么呢?这个是有人在群里问浪尖的一个问题,今天浪尖就给大家讲解一下Scala类型层次结构在Scala中,所有的值都有类型,包括数值和函数。下图阐述了类型层次结构的一个子集。1.
2020年4月27日
其他

Spark2.4支持图片格式数据源了~

spark.read.format("image").load("/opt/pic")df.printSchema()df.select(col("label"),
2019年5月28日
其他

SparkStreaming如何解决小文件问题

使用sparkstreaming时,如果实时计算结果要写入到HDFS,那么不可避免的会遇到一个问题,那就是在默认情况下会产生非常多的小文件,这是由sparkstreaming的微批处理模式和DStream(RDD)的分布式(partition)特性导致的,sparkstreaming为每个partition启动一个独立的线程来处理数据,一旦文件输出到HDFS,那么这个文件流就关闭了,再来一个batch的parttition任务,就再使用一个新的文件流,那么假设,一个batch为10s,每个输出的DStream有32个partition,那么一个小时产生的文件数将会达到(3600/10)*32=11520个之多。众多小文件带来的结果是有大量的文件元信息,比如文件的location、文件大小、block
2019年4月21日
其他

spark面试该准备点啥

最近很多球友都说在准备面试,不知道准备点啥,尤其是spark,实际上星球里浪尖分享的内容真的都掌握了,应对一般面试绝对没问题,但是遗憾的事情是很多人都是处于不会主动搜集资料,主动梳理知识,主动记忆整理知识,而是伸手要粮的境地。浪尖觉得这个是阻止你成长的罪魁祸手。前天跟朋友聚餐就说道这种情况,不努力,不加班给自己喂粮的,没有足够量和时间积累的人很难在一个领域里有所建树。
2019年3月6日
其他

简单理解scala的闭包

闭包这个词大家都不陌生,尤其是做spark的同学,经常会看到,但是很多人还是对闭包比较懵懂,就像前面说的watermark一样,大家都很熟悉朗朗上口,但是又貌似一头雾水没有理解。不懂watermark?来吧~那么,浪尖今天就说说闭包~首先给出浪尖理解的定义吧:「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。按照这个定义呢?下面就应该是一个闭包:var
2019年1月23日
自由知乎 自由微博
其他

不懂watermark?来吧~

经常有球友或者微信群友反馈自己搞不明白watermark怎么回事儿,所以今天浪尖准备发文详细说明一下。首先,拿基于窗口的计算来说吧,窗口的大小
2019年1月18日
其他

不得不会的Flink Dataset的DeltaI 迭代操作

flink作为一个优秀的流处理框架,自有其独到之处,前面浪尖已经分享了很多了,比如下面几篇文章:Flink异步IO第一讲flink的神奇分流器-sideoutputFlink特异的迭代操作-bulkIteration本节内容是继上次的bulkIteration迭代操作的后续篇,delta迭代操作。与bulkIteration不同的是,Delta迭代操作就是为了解决增量迭代需求。增量迭代就是有选择的修改要迭代的元素,逐步计算,而不是全部重新计算。这在某些情况下会使得算法更加高效,因为并不是所有的元素在每次迭代的时候都需要重新计算。这样就可以专注于热点元素进行处理,而剩余的冷元素不处理。通常情况下,是只需要进行局部计算的。迭代输入:迭代计算读取要读取的workset和solutionset
2019年1月15日
其他

Flink特异的迭代操作-bulkIteration

迭代算法在很多数据分析领域会用到,比如机器学习或者图计算。为了从大数据中抽取有用信息,这个时候往往会需要在处理的过程中用到迭代计算。大数据处理框架很多,比如spark,mr。实际上这些实现迭代计算都是很困难的。Flink神奇之处就是它直接支持迭代计算。Flink实现迭代的思路也是很简单,就是实现一个step函数,然后将其嵌入到迭代算子中去。有两种迭代操作算子:Iterate和Delta
2019年1月13日
其他

flink的神奇分流器-sideoutput

今天浪尖给大家讲讲flink的一个神奇功能,sideouptut侧输出。为了说明侧输出(sideouptut)的作用,浪尖举个例子,比如现在有一篇文章吧,单词长度不一,但是我们想对单词长度小于5的单词进行wordcount操作,同时又想记录下来哪些单词的长度大于了5,那么我们该如何做呢?比如,Datastream是单词流,那么一般做法(只写了代码模版)是datastream.filter(word.length>=5);
2019年1月10日
其他

Structured Streaming VS Flink

如何注册临时表呢?在foreachRDD里,讲rdd转换为dataset/dataframe,然后将其注册成临时表,该临时表特点是代表当前批次的数据,而不是全量数据。Structured
2019年1月8日
其他

几道大数据面试题

遍历文件b,采取和a相同的方式将url分别存储到1000个小文件(记为b0,b1,...,b999);巧妙之处:这样处理后,所有可能相同的url都被保存在对应的小文件(a0
2019年1月6日
其他

Spark Streaming VS Flink

是基于事件驱动的,事件可以理解为消息。事件驱动的应用程序是一种状态应用程序,它会从一个或者多个流中注入事件,通过触发计算更新状态,或外部动作对注入的事件作出反应。(也可以基于时间进行处理)。图
2019年1月5日
其他

关于Structured Streaming都在这了~

最近私聊浪尖的粉丝好多都在问:流处理学flink还是spark?显而易见,都要学~以前发过一篇对比flink和spark的文章,这周末再重新整理一下,给大家更加清晰的对比。Spark的流式处理总共分两个模块Spark
2019年1月4日
其他

面试 | mr的的那些事儿

的轻量型进程实例会启动来协调应用程序内的所有任务的执行。这包括监视任务,重新启动失败的任务,推测性地运行缓慢的任务,以及计算应用程序计数器值的总和。有趣的是,ApplicationMaster
2018年12月30日
其他

面试|大数据中无处不在的ServiceLoader

要配置在相关项目的固定目录下:resources/META-INF/services/接口全称。这个在大数据的应用中颇为广泛,比如Spark2.3.1
2018年12月27日
其他

kafka消费者分组消费的再平衡策略

consumerUuid}B),消费者线程ID主要是在消费者id的基础上,根据消费者构建指定的topic的Stream数目,递增加了个数字的值for
2018年12月24日
其他

面试|海量文本去重~minhash

在实际应用的过程中。相似性度量和计算是很经常使用的一个方法。比如网页去重、推断帖子是否相似、推荐系统衡量物品或者用户的相似度等等。当数据量大的时候,计算的时间和空间复杂度就会是一个很重要的问题,比如在推断相似发帖的时候。我们能够用kmeans来进行聚类。可是资源的消耗是巨大的。所以本文推荐一种方法,minhash+lsh(局部敏感hash),用minhash来降维。用lsh来做近似查询,本文主要介绍一下minhash。在介绍minhash之前,先给出相似性的度量方法。1.
2018年12月23日
其他

leetcode第一题判断链表是否有环

为啥要刷leetcode?数据结构表征数据存储的格式及操作数据的方式,了解这些便于我们大数据开发人员设计更好的存储,读取,计算策略。所以在java基础,大数据基础,大数据框架源码等都有一定基础之后应该去追求写出更加精致高效的代码。最近,在整理java面试题,发现很多java底层,redis的有序set等存储结构,spark
2018年12月21日
其他

面试|海量文本去重~simhash

simhash算法是google发明的,专门用于海量文本去重的需求,所以在这里记录一下simhash工程化落地问题。下面我说的都是工程化落地步骤,不仅仅是理论。背景互联网上,一篇文章被抄袭来抄袭去,转载来转载去。被抄袭的文章一般不改,或者少量改动就发表了,所以判重并不是等于的关系,而是相似判断,这个判别的算法就是simhash。simhash计算给定一篇文章内容,利用simhash算法可以计算出一个哈希值(64位整形)。判别两篇文章是相似的方法,就是两个simhash值的距离
2018年12月20日
其他

面试|return 和finally那些事儿

前些天有朋友在微信群里问了一个比较有意思的问题:try/catch/finally语句块的finally和return谁先执行呢?也即是我们在try内部调用return,然后finally内部又去修改return返回的内容会怎么样呢?废话少数先上代码:public
2018年12月18日
其他

面试中常问的List去重问题,你都答对了吗?

转载自微信公众号【Java知音】原文:https://mp.weixin.qq.com/s/AAeaY1-0xclmMKBXp7XVUA面试中经常被问到的list如何去重,用来考察你对list数据结构,以及相关方法的掌握,体现你的java基础学的是否牢固。我们大家都知道,set集合的特点就是没有重复的元素。如果集合中的数据类型是基本数据类型,可以直接将list集合转换成set,就会自动去除重复的元素,这个就相对比较简单。如下示例:public
2018年12月13日
其他

扩展RDD API三部曲之第二部自定义操作算子

SalesRecord(colValues(0),colValues(1),colValues(2),colValues(3).toDouble)
2018年12月12日
其他

扩展RDD API三部曲第一部回顾基础

org.apache.spark.SparkContext._才能够使用。2).Action(行动)Action操作会对
2018年12月11日
其他

Spark Streaming 场景应用

的业务应用场景包括异常监测、网页点击、用户行为以及用户地图迁徙等场景。按计算模型来看大体可分为无状态的计算模型以及状态计算模型两种。在实际的应用场景中,我们采用Kafka作为实时输入源,Spark
2018年12月10日
其他

源码:Spark SQL 分区特性第一弹

fsRelation.sparkSession.sessionState.conf.filesMaxPartitionBytes
2018年12月9日
其他

spark streaming性能分析经验

最近裁员闹的人心惶惶,听说有朋友整个部门被干掉,这种就跟自己关系不是太大,而有些只裁掉个别人,这时候就跟自己平时的表现有关了,要进行反思,能力达标否,得罪老板否……
2018年12月8日
其他

Spark SQL如何实现mysql的union操作

ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。1、对重复结果的处理:UNION在进行表链接后会筛选掉重复的记录,Union
2018年12月5日
其他

面试 | Java8 HashMap原理

SerializableHashMap继承自父类(AbstractMap),实现了Map、Cloneable、Serializable接口2.
2018年12月4日
其他

你注意ArrayList扩容原理了吗

newCapacity);综述所述,JDK1.6和JDK1.7的ArrayList在扩容方面是不同的,JDK1.7通过位移的方式,效率更高些。3.
2018年12月3日
其他

Java 程序员必须了解的 7 个性能指标

CensumGCViewer5.业务指标应用程序的性能不完全取决于响应时间和错误率。业务指标也是一方面,例如收益、用户数。推荐工具:GrafanaThe
2018年12月2日
其他

三年0故障是如何做到的?

但我相信一定会有改善。推荐阅读:程序猿秃顶算工伤吗?消息队列常见的几种使用场景介绍!Redis热点Key发现及常见解决方案几张动态图捋清Java常用数据结构及其设计原理欢迎转发分享给小伙伴~
2018年11月29日
其他

负责任的说,Java仍然免费

最近有关Java收费的谣言不断,本不想对此发表评论,毕竟一些负责任的媒体早已经澄清了多次,我自己的立场也不中立,而且,仔细阅读那些文章,你会发现往往第一句话就是自相矛盾的呀。不过,还是有一些企业的朋友不断咨询,甚至包括一位曾经工作于Java组的前同事,以后使用Java是否真的存在法律风险吗?Java未来还会发展吗?看来谣言带来的换乱超出了想象。有鉴于此,明确一点,Java仍然免费!并且针对大家的主要疑问,谈谈个人的观点:第一,“我公司想要使用JDK
2018年11月29日
其他

Redis热点Key发现及常见解决方案

健身之乐,其乐无穷。终于一小时体能训练,加十公里了。热点Key问题产生的原因大致有以下两种:1、用户消费的数据远大于生产的数据(热卖商品、热点新闻、热点评论、明星直播)。在日常工作生活中一些突发的的事件,例如:双十一期间某些热门商品的降价促销,当这其中的某一件商品被数万次点击浏览或者购买时,会形成一个较大的需求量,这种情况下就会造成热点问题。同理,被大量刊发、浏览的热点新闻、热点评论、明星直播等,这些典型的读多写少的场景也会产生热点问题。2、请求分片集中,超过单
2018年11月27日
其他

几张动态图捋清Java常用数据结构及其设计原理

原文:https://www.cnblogs.com/xdecode/p/9321848.html转载自公众号【java进阶架构师】最近在整理数据结构方面的知识,
2018年11月26日
其他

深入理解 hashcode 和 hash 算法

有了更多的把握,也能够排查一些问题,比如链表数很多,肯定是数组初始化长度不对,如果某个map很大,注意,肯定是事先没有定义好初始化长度,假设,某个Map存储了10000个数据,那么他会扩容到
2018年11月25日
其他

海量数据处理之BloomFilter

一提到元素查找,我们会很自然的想到HashMap。通过将哈希函数作用于key上,我们得到了哈希值,基于哈希值我们可以去表里的相应位置获取对应的数据。除了存在哈希冲突问题之外,HashMap一个很大的问题就是空间效率低。引入Bloom
2018年11月23日
其他

调试flink源码

Control--->git弹出窗口把刚刚复制的flink的github地址粘贴到url输入栏,点击clone按钮,然后等待构建完成,工程有点大需要点时间。工程clone完成之后,可以在idea
2018年11月22日
其他

Apache Kafka:优化部署的 10 种最佳实践

flush.messages=1有关主题级别配置的完整介绍,请参阅这里的内容:https://kafka.apache.org/documentation/#topicconfigs
2018年11月21日
其他

结合Spark讲一下Flink的runtime

RollingAdditionMapper()).setParallelism(10)全局配置在flink-conf.yaml文件中,parallelism.default,默认是1:2.
2018年11月20日
其他

Java 程序员必备的高效 Intellij IDEA 插件

lombok地址:https://plugins.jetbrains.com/plugin/6317-lombok-plugin支持lombok的各种注解,从此不用写getter
2018年11月18日
其他

海量数据处理之bitmap

一、概述本文将讲述Bit-Map算法的相关原理,Bit-Map算法的一些利用场景,例如BitMap解决海量数据寻找重复、判断个别元素是否在海量数据当中等问题.最后说说BitMap的特点已经在各个场景的使用性。二、Bit-Map算法先看看这样的一个场景:给一台普通PC,2G内存,要求处理一个包含40亿个不重复并且没有排过序的无符号的int整数,给出一个整数,问如果快速地判断这个整数是否在文件40亿个数据当中?问题思考:40亿个int占(40亿*4)/1024/1024/1024
2018年11月16日
其他

Spark SQL用UDF实现按列特征重分区

sales.repartition(substring(col("city")))打印分区ID及对应的输出结果res.foreachPartition(partition=>{
2018年11月15日