直观:【电商数仓】日志采集架构设计原理、系统表结构解析、数仓分层相关概念、范式理论详解

优采云 发布时间: 2022-09-30 12:18

  直观:【电商数仓】日志采集架构设计原理、系统表结构解析、数仓分层相关概念、范式理论详解

  文章目录

  一日志采集架构设计原则

  数据仓库存储企业使用的所有数据,数据集中存储,指标统一分析。不涉及后续的复杂分析,但可以为后续的复杂分析做准备,比如公司内部的机器学习部门,机器学习中用到的所有数据都会来自数据仓库。

  MySql中存储的数据是结构化数据,也可以称为业务数据。传统的 JavaEE 项目只有这种数据。大数据时代到来后,有用户画像等需求,因此产生了用户行为数据。

  那么此时需要考虑一个问题,如何将公司的业务数据导入大数据存储系统,即HDFS。对于采集和业务数据的存储,JavaEE有自己成熟的体系。这里不需要考虑。

  对于用户行为数据,需要考虑

  1 为什么要使用 Flume 将数据生成到 kafka 中

  Taildir Source 用于生产 Flume。这个 Source Flume 以可控的速率自动将数据写入 HDFS。Sink 写入慢,Flume采集 慢,所以加入kafka 并不是为了提高Flume 的采集 log 的速度。

  作为消息队列,kafka最大的特点就是可以一对多。如果 logFile 直接放在 HDFS 中,其他想使用数据的人只能从 HDFS 中读取。HDFS的吞吐量没有kafka高。加入kafka不仅可以用于线下项目,还可以进行实时指标分析直接从kafka读取数据,真正形成流批一体。在线分析和离线分析都使用相同的数据源。

  放在kafka中的数据仍然需要写入HDFS进行后续分析。

  2 为什么你还需要一个消费的 Flume

  Kafka 是一个消息队列。核心任务是在中间存储消息。以下是临时存储为临时消息队列。

  Flume 的根本目的是将消息从 A 移动到 B,核心任务是 采集 从头到尾。

  如果不使用Flume,也可以在kafka中存储数据,打开一个文件流,逐行放入kafka中。

  Flume的优势在于它有很多插件,无论哪种Source和Sink都可以使用Flume进行连接,非常方便。

  3 深入细节

  产生Flume的结构:Taildir Source – kafka Channel

  消费Flume的结构:kafka Channel - File Channel - HDFS Sink

  上游的Flume结构也可以使用Taildir Source - File Channel - kafka Sink,但是多了一层File Channel,复杂度会增加,效率会降低,所以使用Taildir Source - kafka Channel。这个结构的上游采集速度非常快,因为kafka Channel非常高效,可以完全覆盖Taildir Source的读取速度。

  下游 Flume 直接使用 kafka Channel - HDFS Sink 不起作用,因为下游有*敏*感*词*。上游还有一个*敏*感*词*,ETL*敏*感*词*,数据格式为json,所有不是json格式的数据都通过ETL过滤掉。下游*敏*感*词*称为TimeStamp,为了解决“零漂”,即昨天的日志需要昨天采集。生成日志的时间为23.59分钟,采集后日志到达系统的时间为0.01分钟。系统需要将此日志视为昨天的日志,以生成时间为准。. 下游 Flume 消费来自 kafka 的数据,并将其转化为 Event,为 Event 添加 TimeStamp 时间戳。写入HDFS时,可以写入昨天'

  如果不使用 TimeStamp 时间戳,则可以省略 File Channel。时间戳可以放在上游。TimeStamp 的作用是在 Event 的头部部分添加一个时间戳 KV 对。如果放在上游,上游Flume产生的所有数据事件都有headers,所以写入kafka的时候需要收录Header,但是Header会有问题。上游采集为json格式数据,为通用数据。在上游的 Flume 后面加一个 kafka 的作用是方便数据仓库中的其他结构使用这个数据。Others 使用数据,当然希望这个数据是通用类型的,方便处理,而event是Flume的私有数据格式。因此,TimeStamp 放在下游,方便数据处理。kafka中的数据必须是通用格式,

  改进方案:也可以不使用Flume的*敏*感*词*,可以使用kafka的*敏*感*词*来实现TimeStamp时间戳,但是kafka*敏*感*词*的代码非常复杂,在执行过程中会申请大量对象,在数据高峰期,可能会导致大量垃圾回收,性能可能不会比使用 File Channel 高。使用kafka Channel - File Channel - HDFS Sink的结构,代码更少,更方便。代价是系统的性能会有所降低,但是足够了,稳定性还可以。

  4 业务日志采集

  业务日志是公司内部成熟的业务系统中的数据,大部分存储在MySQL中。关键问题是如何将 MySQL 中的数据存储在 HDFS 上并使用 Sqoop。Sqoop的数据采集一天一次,采集完成后直接放入HDFS。

  这时候数据仓库的其他结构也可能会用到业务数据,比如实时平台,这样可以将MySQL中的数据暂时存储在kafka中,然后通过下游的Flume写入HDFS。

  二 电子商务系统 表1 后台管理系统

  2 电子商务业务表

  

  三个仓库分为多少层?

  2 为什么分层

  不同的数据仓库可能有不同的层次,但无论怎么分层,主要原因都是以上三点。

  3 数据集市和数据仓库的区别

  数据市场(Data Market),市场上的公司和书籍现在对数据市场有不同的概念。

  数据集市是一个微型数据仓库,通常数据少,学科领域少,历史数据少,属于部门级,一般只能在本地范围内进行管理。员工服务。

  数据仓库是企业级的,可以为整个企业各个部门的运作提供决策支持手段。

  4 数据仓库命名约定

  如果没有统一的数据命名规范,那么在hive join的时候,join的字段不一致会造成严重的问题,排查起来非常困难。例如,字符串类型的数据无法与表面区分开来。由于不一致的数据类型,连接可能会出现问题,从而阻碍开发。

  (1)表名(2)脚本名(3)表字段类型四数仓论1范式论

  范式:数据库建模需要遵循的规范。

  (1)范式概念的缺点:范式的缺点是在获取数据时,需要通过Join拼接出最终的数据。分类:目前行业范式有:第一范式(1NF),第二范式范式 (2NF), 第三范式 (2NF) 范式 (3NF), Bath-Corder 范式 (BCNF), 第四范式 (4NF), 第五范式 (5NF)。(2)函数依赖

  要理解范式,您需要了解什么是函数依赖。

  全功能依赖

  设X,Y为关系R的两组属性,X'是X的真子集,存在X→Y,但对于每一个X'都有X'!→Y,则称Y完全函数依赖在 X 上。记得做:

  通俗理解:比如及格,(学号,课程)推导出分数,但是单凭学号不能推断分数,那么可以说:分数

  完全取决于(学生人数,课程)。即:C可以从AB派生,但C单独不能从AB派生,则C完全依赖于AB。

  部分函数依赖

  如果 Y 在功能上依赖于 X,但 Y 在功能上不完全依赖于 X,则称 Y 部分依赖于 X,表示为:

  通俗理解:比如通过,(学号,课程)可以介绍姓名,因为其实可以直接传,学号可以介绍姓名,所以:姓名部分取决于(学号,课程) )。即:C可以从AB得出,C也可以从A得出,或者C也可以从B得出,那么C部分依赖于AB。

  传递函数依赖

  传递函数依赖:设X、Y、Z为关系R中不同的属性集。如果存在X→Y(Y !→X),Y→Z,则称Z的传递函数依赖于X。记得做:

  常见理解:例如:学号介绍系名,系名介绍系主任,但系主任不能放学号,系主任主要看系名。在这种情况下,可以说系主任的调动取决于*敏*感*词*。通过 A 得到 B,通过 B 得到 C,但 C 不能得到 A,则 C 传递依赖于 A。

  (3)三个范式区分第一个范式

  第一范式 1NF 的核心原理是:属性不可分割

  不是按照第一范式设计的表格

  

  ID 产品商户 ID 用户 ID

  001

  3 台电脑

  100

  010

  商品栏的数据不是原子数据项(3台电脑),是可以划分的。因此,修改表格,使表格符合第一范式的要求。修改结果如下:

  ID 项目 数量 商户 ID 用户 ID

  001

  计算机

  3

  100

  010

  其实1NF是所有关系型数据库最基本的要求,在SQL等关系型数据库管理系统(RDBMS)中

  在Server、Oracle、MySQL中创建数据表时,如果数据表的设计不符合最基本的要求,就一定不能操作成功。也就是说,只要数据表已经存在于RDBMS中,就必须符合1NF。

  第二范式

  第二范式2NF核心原则:不能有部分函数依赖

  上表有明显的部分依赖。比如这张表的主键是(学号,班级名),分数确实完全依赖(学号,班级名),但是名字不完全依赖(学号,班级名)

  将上表除以满足第二范式原理

  以上符合第二范式,去掉了一些函数依赖

  第三范式

  第三范式 3NF 核心原理:不能有传递函数依赖

  下表中存在传递函数依赖:学号->系名->系主任,但系主任不能推导出学号。

  上表需要再次拆解,使其符合第三范式原理

  范式越高,数据越简单清晰,数据一致性越高,冗余度越低。永恒的真理。

  早期的计算机存储非常紧张,范式的设计理论主要是为了减少数据的冗余,从而可以存储更多的数据。

  目前HDFS相对解决了数据存储的问题,但是查询更要注意效率问题,join越少越好,越能容忍数据冗余不足的问题,所以在数据仓库项目中,表似乎没有关系。在数据库中,严格遵守关系建模和三范式表。数据仓库中的表范式并不高,一般只遵循一种范式。

  汇总:从5118备案内参发现百度SEO批量建站优化拆解!

  什么是发现机会?

  我从事 SEO 业务已有十多年,一直对 SEO 研究情有独钟。尽管大家都说SEO,尤其是百度SEO没用,但我还是坚持它是有价值的。

  因为不是技术出身(大学是中文教育专业,数理逻辑不是很好),特别佩服懂SEO和技术的朋友,尤其是半路学技术的朋友。

  另外,我在四级路上,和小伙子斗不过,所以会深入研究各种现成的工具。刚学SEO的时候,用chinaz站长工具和爱站工具很好用,很快就长大了。后来接触到5118这个工具,又被迷住了。

  搜索实战训练营时,一个童靴问,5118工具什么时候可以详细讲解?我回答说一是5118功能太多,二是很*敏*感*词*只有付费会员才能看到。建议去官网看看,即使我还没有全部探索完。

  正好清明节还好,就想着把5118站长工具全通了一遍。我去SEO排名其他内参的时候就点了,记录内参。

  其实我就是想看看,一个公司能记录多少个网站?想想他为什么要提交这么多网站?事实上,找到了两个“主角”。一位是厦门一家互联网公司的软件开发人员。注册域名506个,域名内容基本一致。

  于是我放弃了研究,当我点击第三页的时候,我找到了我们今天研究的真正主角(如下图),也就是一家传统仪器2B企业的145个域名!

  为什么要深入挖掘?

  我找到了这家传统公司网站,因为我公司做过仪器产品,我也做过这个产品类型的SEO网站,后来又为其他公司做了SEO顾问,所以我只想看看, 2022年,他们有没有最新的百度SEO玩法。

  实际 SEO 效果示例

  我随便搜了三四个他备案的网站,发现都是百度的收录。重点不仅是收录,还有他所在行业的精准度关键词,百度首页前10都有,截图如下(为了防止侵权或者广告,尽量涂抹)

  上图随便引用了他归档的四个网站。你看见了吗?不管是百度竞价广告,百度爱布,还是1688网站,垂直网站,都有网站。@网站 排名!

  你是不是也好奇,他到底用了什么神奇的SEO操作,这么牛逼?百度快排?旧域名?买外链还是什么?这个交易员的SEO也一定是个人才。因此,如果您想知道答案,请继续阅读。

  拆解批量建设的SEO游戏(干货)

  上面写了一千多个字,相信引起了你的兴趣。当然,在某些人看来,如果没用的话,我会从8:00开始拆解下一个干货。

  SEO玩法拆解一:关键词拼音全匹配域名

  做过百度网站SEO的都知道网站域名如果能拼音最好。如果你是做谷歌SEO的,做国外工作的时候最好用英文拼写。

  我们今天这个仪器批站的研究对象是全拼音,和他业务的关键词拼音是一致的。先用一般的.com,如果没有COM就用.cn,如下图。

  

  SEO玩法拆解二:网站域名几乎都是老域名

  因为100多个网站太多了,我就随便截几张域名截图给大家看看,如下图:

  公司对这些域名的注册不是临时注册,而且还在不断增加。在2020年最新一次注册中,所有产品中文名域名均已注册,如:。

  SEO玩法拆解三:所有网站已被企业记录

  SEO玩法拆解四:所有网站域名尽量不要在同一个服务器上

  看这100多个域名,独立的服务器很多,有的和其他的网站(非本公司备案),但自己的域名很少在一起。为什么?因为它避免了被检测到站群或者减重互相影响。

  SEO玩法拆解五:所有网站统一模板,但产品不同

  网站是一个统一的模板,除了产品中心、新闻、XX应用和首页产品的内容不同,其他都一样,但是这个内容的重复率也低于50%。

  SEO玩法拆解六:所有网站TDK和网页都刻意为SEO优化关键词

  我们知道百度搜索关键词排名,网站TDK,尤其是网站T(title)收录了关键词的重要性(如下图)。在我们的SEO中,我们也提到过关键词的密度是2%-8%,所以关键词也应该布局在首页布局上。

  那么我们以随机三个元素为例:

  标题:XXX仪器_XXXXX度仪_XXXXX测量仪_XXXXX测量仪_厂家直销

  关键词:XXX仪器,XXXX仪器,XXXX仪器,XXXXXX仪器,XXXXXX仪器,XXX仪器,XXXXXX仪器

  说明:XXX仪器厂家为您详细介绍XXX仪器的相关知识,包括XXX仪器的原理、使用方法、操作注意事项等,让您更好的了解和使用XXX仪器0XX0 -30XXXX8

  当你在做 网站SEO 时,你应该明白。别人的关键词布局合理,描述写的自然,产品你也应该懂哈哈哈。

  看网页上刻意的关键词锚文本内链布局如图:

  SEO玩法拆解七:所有网站信息页面均针对SEO进行站内优化

  

  这里的信息页在两个方面符合SEO站内优化,一是指文章页面布局(如相关产品、相关文章、咨询推荐)符号SEO站内优化,如图:

  另一个是指网站文章的标题的关键词,网站文章里加关键词的内部链接是特意优化的对于SEO,如图:

  当然,也有一个不足,那就是百度最新的极光算法,要求文章发布时间以分秒为单位。而这个网站主要是两年前更新的,时间只显示年月日。如上图,发布时间到了。

  SEO玩法拆解八:垂直行业资讯站,网站目录外链互导

  如果不检查这些网站是否有外部链接(友情链接和外推链接),你不会发现这家公司居然有百度权重四目录站和垂直B2B信息站,这提醒了白洋SEO . 从 2011 年到 2014 年,这就是我们在前*敏*感*词* Vyku 的比赛方式。

  我们来看看这几批外链是如何搭建的,友情链是相互关联的,外链发布自己的信息站,如图:

  其实除了以上八种SEO方法的拆解,其实比如网站打开速度、页面代码缩减、PC端和移动端自适应优化,移动端也有排名,体验不怎么样不好,如图。还有品牌知名度,图片有水印。

  做网站SEO百度排名灵感

  上面写了近三千字。我们已经完成了这个案子的拆解。用网站做百度SEO排名给我们什么启示?

  启示一:百度现在对旧域名备案排名还不错,但对新站点备案可能不太友好!是新站,没有记录,以后可能就拿不到百度SEO流量了。

  那么,灵感就是,如果你还想通过建站为百度SEO排名获得搜索流量,你应该花钱买一个有建站历史的老域名,备案可能至少要三个月比您的新网站更快!同时,之前未在国外服务器注册过的网站也将开始变化。

  启示二:这种情况下,除了右四资源站,其实所有的业务站只有一个权重,很多网站只有收录一页,也就是网站 主页。但这并不影响他的主要 关键词 排名。

  那么,灵感就是,如果你想去百度获得准确的关键词搜索流量,那么如果你是企业网站,尽量做到垂直精准。如果你的业务很多,就多注册网站,如果你发现哪个网站模板排名不错,你可以换一个,一直用。

  启示三:白帽SEO的这些方法虽然基本,10年前用过,5年前用过。即使现在使用它们,它们仍然可以使用。只是很多SEO新手没有详细了解,无法全面了解,所以觉得白帽SEO没用。

  虽然百度的流量被微信、抖音等平台分散,但搜索流量,尤其是2B业务,如机械、仪器、CRM系统等,在百度上的搜索量还是比较大的。

  启示4:不要以为现在没有Quick Ranking就不能做网站SEO。别人的网站排名肯定是做了快速排名。其实我开始的文章文章教你如何区分。

  另外,如果你真的对SEO感兴趣,即使你不懂技术,但有钻研的心,有实战精神,敢吃苦,善于学习,你的SEO技术会迟早会很棒。你要明白,如果只懂技术,不懂逻辑,其实也没多大用处。技术是为了产品或营销。

  好了,今天写了这么多,希望看到这里对你有所帮助或启发。记住,要想学好,一定要静下心来好好学习,不要贪多快,这样你就永远长不大!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线