随笔分类 -  Hadoop

大数据相关
摘要:一、背景说明 所谓CDC:全称是 Change Data Capture ,在广义的概念上,只要能捕获数据变更的技术,我们都可以称为 CDC 。通常我们说的 CDC 技术主要面向数据库的变更,是一种用于捕获数据库中数据变更的技术。 目前实时链路对于数据的处理是大多数使用的方案是通过工具,对业务数据日 阅读全文
posted @ 2021-09-13 17:37 Rango_lhl 阅读(3845) 评论(1) 推荐(1)
摘要:一、背景说明 需求为从Kafka消费对应主题数据,通过TableApi对数据进行WordCount后,基于DDL写法将数据写入ES。 二、代码部分 说明:代码中关于Kafka及ES的连接部分可以抽象到单独的工具类使用,这里只是一个演示的小demo,后续操作均可自行扩展,如Kakfa一般处理为json 阅读全文
posted @ 2021-06-20 10:34 Rango_lhl 阅读(420) 评论(0) 推荐(0)
摘要:一、背景说明 Flink的API做了4层的封装,上两层TableAPI、SQL语法相对简单便于编写,面对小需求可以快速上手解决,本文参考官网及部分线上教程编写source端、sink端代码,分别读取socket、kafka及文本作为source,并将流数据输出写入Kafka、ES及MySQL,方便后 阅读全文
posted @ 2021-06-18 16:53 Rango_lhl 阅读(3782) 评论(0) 推荐(0)
摘要:一、背景说明 在Flink中可以使用Window join或者Interval Join实现双流join,不过使用join只能实现内连接,如果要实现左右连接或者外连接,则可以通过connect算子来实现。现有订单数据及支付数据如下方说明,基于数据时间实现订单及支付数据的关联,超时或者缺失则由侧输出流 阅读全文
posted @ 2021-06-08 17:58 Rango_lhl 阅读(3572) 评论(0) 推荐(0)
摘要:一、背景说明: 在上篇文章实现了TopN计算,但是碰到迟到数据则会无法在当前窗口计算,需要对其中的键控状态优化 Flink使用二次聚合实现TopN计算 本次需求是对数据进行统计,要求每隔5秒,输出最近10分钟内访问量最多的前N个URL,数据流预览如下(每次一条从端口传入): 208.115.111. 阅读全文
posted @ 2021-05-26 17:07 Rango_lhl 阅读(777) 评论(0) 推荐(0)
摘要:一、背景说明: 有需求需要对数据进行统计,要求每隔5分钟输出最近1小时内点击量最多的前N个商品,数据格式预览如下: 543462,1715,1464116,pv,1511658000 662867,2244074,1575622,pv,1511658000 561558,3611281,965809 阅读全文
posted @ 2021-05-24 15:37 Rango_lhl 阅读(1928) 评论(0) 推荐(0)
摘要:一、背景说明 在Flink中对流数据进行去重计算是常有操作,如流量域对独立访客之类的统计,去重思路一般有三个: 基于Hashset来实现去重 数据存在内存,容量小,服务重启会丢失。 使用状态编程ValueState/MapState实现去重 常用方式,可以使用内存/文件系统/RocksDB作为状态后 阅读全文
posted @ 2021-05-20 10:29 Rango_lhl 阅读(1351) 评论(0) 推荐(0)
摘要:一、背景说明 本文基于IK分词器,自定义一个UDTF(Table Functions),实现类似Hive的explode行转列的效果,以此来简明开发过程。 如下图Flink三层API接口中,Table API的接口位于最顶层也是最易用的一层,可以套用SQL语法进行代码编写,对于有SQL基础的能很快上 阅读全文
posted @ 2021-05-08 13:49 Rango_lhl 阅读(2450) 评论(0) 推荐(0)
摘要:一、背景说明: 在目前实时数仓中,由于维表具有主键唯一性的特点,Hbase/Redis通常作为维表存放选择 Hbase:数据存于磁盘具有持久性但是查询效率慢。 Redis:数据存于内存查询效率高,但维表多数据量大时候占用资源多。 基于旁路缓存思想,对维表存储的优化的思路为:维表数据存储在Hbase, 阅读全文
posted @ 2021-05-07 14:42 Rango_lhl 阅读(1301) 评论(0) 推荐(0)
摘要:一、需求说明: 对页面日志数据进行ETL,对跳出用户进行标记后输出到Kafka。 跳出用户定义: 条件1:不是从其他页面跳转过来的页面,是一个首次访问页面。日志数据表现为不存在last_page_id字段。 条件2:距离首次访问结束后10秒内,没有对其他的页面再进行访问。 ps:该需求一般为实时项目 阅读全文
posted @ 2021-05-07 14:41 Rango_lhl 阅读(244) 评论(1) 推荐(0)
摘要:尽管MR由于计算效率问题,已经不适用于大多数业务场景,Hive3开始计算引擎改为TEZ,但MR的经典思路在Hadoop生态各组件都有体现,重温后对各组件原理的理解还有使用都有帮助,如Spark的RDD分区里面的源码就能看到MR分片思想的影子。这里仅拿输入Map前分片(Split)这个动作的源码做窥探 阅读全文
posted @ 2021-03-16 20:02 Rango_lhl 阅读(435) 评论(0) 推荐(0)
摘要:一、名称节点(NameNode) 1.什么是名称节点 在HDFS中,名称节点负责管理分布式文件系统的命名空间(Namespace),保存了两个核心的数据结构-FsImage和EditLog。 FsImage:用于维护文件系统树以及文件树中所有的文件和文件夹的元数据。 EditLog:中记录所有针对文 阅读全文
posted @ 2021-02-15 15:24 Rango_lhl 阅读(1469) 评论(0) 推荐(0)
摘要:一、HDFS相关类说明 FileSystem:通用文件系统的抽象基类,可以被分布式文件系统继承,所有可能使用Hadoop文件系统的代码都要使用到这个类。 DistributedFileSystem:Hadoop为FileSystem这个抽象类提供了多种具体的实现,DistributedFileSys 阅读全文
posted @ 2021-02-14 22:32 Rango_lhl 阅读(327) 评论(0) 推荐(0)
摘要:目标: 监控Oracle某张记录表,有新增数据则获取表数据,并推送到微信企业。 流程: Kafka实时监控Oracle指定表,获取该表操作信息(日志),使用Spark Structured Streaming消费Kafka,获取数据后清洗后存入指定目录,Python实时监控该目录,提取文本里面数据并 阅读全文
posted @ 2021-02-03 19:06 Rango_lhl 阅读(931) 评论(0) 推荐(0)
摘要:Syslog日志内一般包括产生日志的时间、主机名、程序模块、进程名、进程ID、严重性和日志内容。日志一般会通过Kafka等有容错保障的源发送,本实验为了简化,直接将Syslog通过Socket源发送。新建一个终端,执行如下命令:$tail -n+1 -f /var/log/syslog | nc - 阅读全文
posted @ 2021-01-25 17:28 Rango_lhl 阅读(1062) 评论(0) 推荐(0)
摘要:一、Spark中水印作用 Spark内部引擎的实现是保留内部状态的,以便让基于事件时间的窗口聚合可以更新旧的数据,但是如果一个查询持续运行多天,那么系统绑定中间状态累积的数量也会随之增加,为了释放资源,用户可以通过自定义水印来告知系统可以丢弃哪些在内存中旧状态的数据。自定义水印可以使用withWat 阅读全文
posted @ 2021-01-22 20:04 Rango_lhl 阅读(803) 评论(0) 推荐(0)
摘要:一、hive.groupby.skewindata set hive.groupby.skewindata=true; 数据倾斜时负载均衡,当选项设定为true,生成的查询计划会有两个MRJob。第一个MRJob 中,Map的输出结果集合会随机分布到Reduce中,每个Reduce做部分聚合操作,并 阅读全文
posted @ 2021-01-20 20:00 Rango_lhl 阅读(3529) 评论(0) 推荐(0)
摘要:Hive中的Join可分为Common Join(Reduce阶段完成join)和Map Join(Map阶段完成join) 一、Map Join作用及原理 作用简单来说,在Map阶段进行join,而不是Common Join那样在Reduce阶段按照join列进行分发后在每个Reduce节点上进行 阅读全文
posted @ 2021-01-19 17:51 Rango_lhl 阅读(2165) 评论(0) 推荐(0)
摘要:一、区别 ①本质上相同,都是把Map端数据分类处理后交由Reduce的过程。 ②数据流有所区别,MR按map, spill, merge, shuffle, sort, reduce等各阶段逐一实现。Spark基于DAG数据流,可实现更复杂数据流操作(根据宽/窄依赖实现) ③实现功能上有所区别,MR 阅读全文
posted @ 2021-01-18 14:52 Rango_lhl 阅读(1530) 评论(0) 推荐(0)
摘要:把Flume Source(netcat类型),从终端上不断给Flume Source发送消息,Flume把消息汇集到Sink(avro类型),由Sink把消息推送给Spark Streaming并处理后输出 版本信息:spark2.4.0 Flume 1.7.0 (基于pyspark) 一、Flu 阅读全文
posted @ 2021-01-12 16:28 Rango_lhl 阅读(278) 评论(0) 推荐(0)