Spark+Hbase 亿级流量分析实战(数据结构设计)

mulan 2019-04-24 22:21:59 ⋅ 581 阅读

靠文章生存的大厂们简书/小红书/CSDN(PS:好吧你们仨记得给我广告费),对优秀的文章进行大数据分析的工作必不可以少了,本系列文章将会从关于文章的各个维度进行实战分析,这系列文章新手可借着踏入大数据研发的大门,至于大数据的大佬们可以一起来相互伤害,至少为什么取名为 ''亿级流量分析实战'' 看完后整个系列的文章你就知道了,相信大家都是会举一反三的孩子们。

网名:大猪大猪
姓名:不祥
年龄:不祥
身高:不祥
性别:不祥

日志存储结构设计如下,肯定很多小伙伴要问为什么设计成JSON形式?多占空间?多...
统一回复:可读易排查

{ "time": 1553269361115, "data": { "type": "read", "aid": "10000", "uid": "4229d691b07b13341da53f17ab9f2416", "tid": "49f68a5c8493ec2c0bf489821c21fc3b", "ip": "22.22.22.22" }}


参数



日志表

create 'LOG_TABLE',{NAME => 'info',TTL => '30 DAYS',CONFIGURATION => {'SPLIT_POLICY' => 'org.apache.hadoop.hbase.regionserver.KeyPrefixRegionSplitPolicy','KeyPrefixRegionSplitPolicy.prefix_length'=>'2'},COMPRESSION=>'SNAPPY'},SPLITS => ['20', '40', '60', '80', 'a0', 'c0', 'e0']


  1. rowkey --------> 49|20190101000000000|f68a5c  (时间+用户ID)
    设计原则:能按时间维度查询,而且还能打散数据。

  2. 过期时间 30天 --------> 够长的了,反正日志源文件还在
    设计原则:其实就是为了不占用那么多的存储资源。

  3. 预分区 -------->使用rowkey前两位,00~ff=256 个region,表示现在的业务已经可以满足要求。
    设计原则:是为了能尽量打散数据到各台Region Server

用户表

create 'USER_TABLE',{NAME => 'info',CONFIGURATION => {'SPLIT_POLICY' => 'org.apache.hadoop.hbase.regionserver.KeyPrefixRegionSplitPolicy','KeyPrefixRegionSplitPolicy.prefix_length'=>'2'},COMPRESSION=>'SNAPPY'},SPLITS => ['20', '40', '60', '80', 'a0', 'c0', 'e0']


  1. rowkey --------> 49f68a5c8493ec2c0bf489821c21fc3b (用户ID,前8位)
    设计原则:唯一性,通过ID能直接找到用户信息。

现在还没涉及到程序设计与实现篇章,后续将会在 "亿级流量分析实战" 系列文章中逐一实现。

心明眼亮的你、从此刻开始。

      

作者:大猪大猪
链接:https://www.jianshu.com/p/24a6daf93746



全部评论: 0

    我有话说:

    数据结构

    结构,简单的理解就是关系。严格点说,结构是指各个组成部分相互搭配和排列的方式。在现实世界中,不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系成为结构数据结构:是相互之间存在一种

    为什么说作为程序员分库分表的必要性一定要掌握?

      互联网大厂程序员必须掌握海量数据和高并发问题处理技能,期望进入大厂的程序员一定要仔细看这篇! MySQL 分库分表是做什么的? 相信很多程序员对 MySQL 都比较熟悉了,目前国内

    排序 --- 归并排序

    此篇文章引自 这里,个人感觉无出其右者,只好借鉴而来 归并排序 是递归分治和有序合并的简称, 首先利用分治法的思想将序列递归分裂成若干个子序列,使将子序列基本有序,最后使整体有序。 一、图示

    Apache HBase 2.3.2 发布,分布式存储系统

    Apache HBase 2.3.2 已经发布。HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用 HBase 技术可在廉价 PC

    线性表 - 栈与队列

    1.栈 1.栈(stack)是限定仅在表尾进行插入和删除操作的线性表,(先进后出) 2.我们把允许插入和删除的一端成为栈顶(top) 另一端称为栈底(bottom),不含任何数据元素的栈称为空栈

    「轻阅读」聊一聊6种常用的架构设计模式(上)

      许多现代应用都需要在企业规模上进行构建,有时甚至需要在互联网规模上进行构建。这些应用都需要满足可扩展性、可用性、安全性、可靠性和弹性需求。 在本文中,我将谈论一些设计模式,这些模式

    「轻阅读」亿用户的分布式数据存储解决方案

    分布式数据库和分布式存储是分布式系统中难度最大、挑战最大,也是最容易出问题的地方。互联网公司只有解决分布式数据存储的问题,才能支撑更多次亿用户的涌入。

    面试官:如何设计数据库平滑扩容架构?

    该方案能够实现n库扩2n库的秒、平滑扩容,增加数据库服务能力,降低单库一半的数据量,其核心原理是:成倍扩容,避免数据迁移。

    Java Web实战篇-轻松提高千万数据库查询效率

    通过优化数据库设计、java后台和数据库优化达到提高千万数据查询的效率。

    Apache Spark 3.0 发布,包含3400 多个补丁,TPC-DS 性能提升2倍。

    Spark 是用于大数据处理,数据科学,机器学习和数据分析等领域的统一引擎。

    「转载」使用DDD指导业务设计的一点思考

    领域驱动设计(DDD) 是 Eric Evans 提出的一种软件设计方法和思想,主要解决业务系统的设计和建模。DDD 有大量难以理解的概念,尤其是翻译的原因,某些词汇非常生涩,例如:模型、限界上下文

    实战解析】基于HBase的大数据存储在京东的应用场景

    作者就职于京东商城京麦平台组,从事京东商家开放平台的相关开发工作。热爱技术,熟悉各种常用开源框架,有丰富的大型分布式系统、高并发系统的开发经验。热衷于对大数据的研究,对Hadoop、HBase以及

    产品设计系列——数据驱动设计

    10个移动专题案例进行数据分析,提升对我们的产品设计、增强用户体验,研发出更高转化率的产品。

    Dgraph 1.2.8 发布,事务性分布式图形数据库

    Dgraph 1.2.8 发布了。Dgraph 是一个可扩展的,分布式的,低延迟的图数据库,目标是提供 Google 生产水平的规模和吞吐量,在超过 TB 的结构数据里,为用户提供足够低延迟的实时

    您应该避免的五个简单的数据库设计错误

    Anith 在他非常成功的文章 Facts and Fallacies about First Normal Form 之后,对五个常见的数据库设计错误进行了引人入胜的讨论,尽管使用它们的不幸后果

    电商实战篇:商品模型分析设计(超级实用

    最近在设计电商平台,那么在整个电商系统中商品模型是非常重要的模块,也可以说是整个电商的核心,那么接下来我们一起分析一下,设计出一个完整的商品模型。

    精品推荐:Java核心数据结构(List,Map,Set)使用技巧与优化

    JDK提供了一组主要的数据结构实现,如List、Map、Set等常用数据结构。这些数据都继承自 java.util.Collection 接口,并位于 java.util 包内。