Apache HBase

滴滴实时数仓逐层剖解:实时与离线数据误差<0.5%

 ̄綄美尐妖づ 提交于 2020-11-18 09:30:22
作者介绍 潘澄, 资深软件开发工程师。负责实时数据仓库建设,多年数据相关工作经验,专注数据建模、数据仓库、实时数据技术等领域。 朱峰, 高级软件开发工程师。主要从事实时数据仓库建设,专注实时和离线数仓技术,对数仓建模、数据研发和数仓中间层建设有一定的积累。 前言 随着滴滴业务的高速发展,业务对于数据时效性的需求越来越高,而伴随着实时技术的不断发展和成熟,滴滴也对实时建设做了大量的尝试和实践。本文主要以顺风车这个业务为引子,从引擎侧、平台侧和业务侧各个不同方面,来阐述滴滴所做的工作,分享在建设过程中的经验。 一、实时数仓建设目的 随着互联网的发展进入下半场,数据的时效性对企业的精细化运营越来越重要,商场如战场,在每天产生的海量数据中,如何能实时有效的挖掘出有价值的信息, 对企业的决策运营策略调整有很大帮助。 其次从智能商业的角度来讲,数据的结果代表了用户的反馈,获取结果的及时性就显得尤为重要,快速的获取数据反馈能够帮助公司更快的做出决策,更好的进行产品迭代,实时数仓在这一过程中起到了不可替代的作用。 1 、解决传统数仓的问题 从目前数仓建设的现状来看,实时数仓是一个容易让人产生混淆的概念,根据传统经验分析,数仓有一个重要的功能,即能够记录历史。通常,数仓都是希望从业务上线的第一天开始有数据,然后一直记录到现在。但实时流处理技术,又是强调当前处理状态的一个技术

HBASE(分布式海量NOSQL数据库)

霸气de小男生 提交于 2020-11-17 07:00:09
HBase建表高级属性,hbase应用案例看行键设计,HBase和mapreduce结合,从Hbase中读取数据、分析,写入hdfs,从hdfs中读取数据写入Hbase,协处理器和二级索引 1. Hbase高级应用1.1建表高级属性下面几个shell 命令在hbase操作中可以起到很到的作用,且主要体现在建表的过程中,看下面几个create 属性1、 BLOOMFILTER 默认是NONE 是否使用布隆过虑及使用何种方式 布隆过滤可以每列族单独启用。 使用 HColumnDe... hbase系统架构图以及各部分的功能作用,物理存储,HBase寻址机制,读写过程,Regin管理,Master工作机制 1.1 hbase内部原理1.1.1 系统架构 Client 1 包含访问hbase的接口,client维护着一些cache来加快对hbase的访问,比如regione的位置信息。Zookeeper 1 保证任何时候,集群中只有一个master 2 存贮所有Region的寻址入口—-roo... hbase的shell命令行方式操作 进入hbase命令行 cd /home/tuzq/software/hbase-1.3.1/bin ./hbase shell 查看帮助 显示hbase中的表 List(列出你有哪些表) 创建user表,包含info、data两个列族 create

工具篇-Flink里边的一些坑

我与影子孤独终老i 提交于 2020-11-16 00:24:13
1. 自定义Sink写入hbase? 使用的是原生的hbase客户端,可以自己控制每多少条记录刷新一次。遇到了几个坑导致数据写不到hbase里边去: 集群hbase版本和客户端版本不一致(版本1和版本2相互之间会有冲突) Jar包冲突 例如protobuf-java版本冲突,常见的是两个关键错误, java.io.IOException: java.lang.reflect. InvocationTargetExceptio n 和 Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase .protobuf.ProtobufUtil 。 2. Flink 消费Kafka偏移量 Flink读写Kafka,如果使用Consumer08的话,偏移量会提交Zk,下边这个配置可以写在Conf文件中,提交偏移量的Zk可以直接指定。Consumer09以后版本就不向Zk提交了,Kafka自己会单独搞一个Topic存储消费状态。 1 xxxx08 { 2 bootstrap.servers = "ip:9092" 3 zookeeper.connect = "ip1:2181,ip2/vio" 4 group.id = "group1" 5 auto.commit

大厂高频面试题-连续登录问题

梦想的初衷 提交于 2020-11-14 04:02:13
1 背景 对于数据开发人员来说,手写sql是比较熟悉的了,就有这样一道题,面试时需要手写sql,这就是非常经典的连续登录问题,大厂小厂都爱问,这种题说简单也不简单,说难也不难,关键是要有思路。 2 真题 hql统计连续登陆的三天及以上的用户 这个问题可以扩展到很多相似的问题:连续几个月充值会员、连续天数有商品卖出、连续打车、连续逾期。 数据提供 用户ID、登入日期 user01,2018-02-28 user01,2018-03-01 user01,2018-03-02 user01,2018-03-04 user01,2018-03-05 user01,2018-03-06 user01,2018-03-07 user02,2018-03-01 user02,2018-03-02 user02,2018-03-03 user02,2018-03-06 输出字段 +---------+--------+-------------+-------------+--+ | uid | times | start_date | end_date | +---------+--------+-------------+-------------+--+ 3 群内讨论 这道题在群里发出后,大家就展开了激烈的讨论: 4 解决方案 可以看出来,有很多种不同的解决方案。

面试|spark刷爆磁盘与java弱引用的关系

删除回忆录丶 提交于 2020-11-13 11:46:25
一 引用基本概念 如下面,定义两个变量num,str,存储模型大致如下图: int num = 6; String str = “浪尖聊大数据”; 变量num值直接从6修改为了8;变量str只是修改了其保存的地址,从0x88修改为0x86,对象 “浪尖聊大数据 ”本身还在内存中,并没有被修改。只是内存中新增了对象 “浪尖是帅哥”。 二 值传递&引用传递 举例说明引用传递和值传递: 第一个栗子:基本类型 void foo(int value) { value = 88; } foo(num); // num 没有被改变 第二个栗子:没有提供改变自身方法的引用类型 void foo(String text) { text = "mac"; } foo(str); // str 也没有被改变 第三个栗子:提供了改变自身方法的引用类型 StringBuilder sb = new StringBuilder("vivo"); void foo(StringBuilder builder) { builder.append("5"); } foo(sb); // sb 被改变了,变成了"vivo5"。 第四个栗子:提供了改变自身方法的引用类型,但是不使用,而是使用赋值运算符。 StringBuilder sb = new StringBuilder("oppo"); void foo

857页Alibaba“Java学习进阶笔记”开源!分布式/微服务/Spring框架/JVM/数据结构与算法啥都有

做~自己de王妃 提交于 2020-11-13 11:36:26
笔记作者: 来自于阿里P8级架构师: Mark 笔记特点: 条理清晰,含图像化表示更加易懂。 内容概要: 包括 Java 集合、JVM、多线程、并发编程、设计模式、Spring全家桶、Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、MongoDB、Redis、MySQL、RabbitMQ、Kafka、Linux、Netty、Tomcat等大厂面试题等、等技术栈! 由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。 即可免费获取 JAVA集合 接口继承关系和实现 List ArrayList(数组) Vector(数组实现、线程同步) LinkList(链表) Set HashSet(Hash表) TreeSet(二叉树) JVM JVM就是java虚拟机,它是一个虚构出来的计算机,可在实际的计算机上模拟各种计算机的功能。JVM有自己完善的硬件结构,例如处理器、堆栈和寄存器等,还具有相应的指令系统。 线程 JVM内存区域 JVM运行时内存 垃圾回收与算法 JAVA 四种引用类型 GC分代收集算法 VS 分区收集算法 GC垃圾收集器 JAVA IO/NIO JVM 类加载机制 JAVA多线程并发 JAVA并发知识库 JAVA线程实现/创建方式 4种线程池 线程生命周期(状态) 终止线程4种方式

风控管理平台

廉价感情. 提交于 2020-11-13 06:55:48
本文从以下四个方面,阐述风控管理平台的建设: 一. 架构演进 二. 技术架构 三. 业务架构 四. 系统难点 一. 架构演进 将公司内部风控系统从业务代码为主的风控架构改造为了平台化为主的2代架构,进而改造成为动态化及离线数据模型化的2.5代架构,正在向深度学习,在线数据模型的3代架构上演变。 二. 技术架构 首先来看目前风控的技术架构,从业务及架构层面将风控划分为五大体系:分别是存储体系,识别体系,支撑体系,运营体系,数据计算体系。 其中存储体系包括hbase,mysql,redis,es,hive,实际上都利用了现有的框架或开源项目。 识别体系包括控制平台(控制系统,批处理系统,决策系统,总线系统),处罚平台(处罚系统),分析平台(规则系统,模型系统), 数据平台(数据系统,运营数据系统)。 支撑体系主要是指后台配置系统。 运营体系主要是指风控运营系统,kibana报表系统。 数据计算体系主要指大数据及离线计算平台及基于其上的数据分析业务。 其调用关系如下图: 三. 业务架构 其次,来看整个系统的业务架构。目前已经初步具备的 业务能力有,营销作弊,交易欺诈,登录注册防控,内容防控 数据模型能力有,用户画像及风险评级,关联反查,风险大盘,各类报表等 运营能力有,用户预警,商户预警,案件审核,综合信息查询 并且基于现有的数据,分类整理并形成了自身的数据资产,分别为名单类,用户类

面试官问,你在开发中有用过什么设计模式吗?我懵了

て烟熏妆下的殇ゞ 提交于 2020-11-10 02:49:07
设计模式不应该停留于理论,跟具体业务结合,它才会变得更香~ 1.前言 设计模式我们多少都有些了解,但是往往也只是知道是什么。 在真实的业务场景中,你有用过什么设计模式来编写更优雅的代码吗? 我们更多的是每天从产品经理那里接受到新需求后,就开始MVC一把梭,面向sql编程了。 我们习惯采用MVC架构,实时上是非常容易创建很多贫血对象模型,然后写出过程式代码。我们使用的对象,往往只是数据的载体,没有任何逻辑行为。我们的设计过程,也是从ER图开始,以数据为中心进行驱动设计。一个需求一个接口,从controller到service到dao,这样日复一日的CRUD。 什么设计模式?根本不存在的! 今天,我们尝试从常用设计模式(工厂模式、代理模式、模版模式)在CRUD中的可落地场景,希望能给大家带来一些启发。 2.理解设计模式 设计模式(Design pattern),不是前人凭空想象的,而是在长期的软件设计实践过程中,经过总结得到的。 使用设计模式是为了让代码具有可扩展性,实现高聚合、低耦合的特性。 世上本来没有设计模式,写代码的人多了,便有了设计模式。 面向对象的设计模式有七大基本原则: 开闭原则(Open Closed Principle,OCP) 单一职责原则(Single Responsibility Principle, SRP) 里氏代换原则(Liskov

HBase入门——HBase入门系列链接

为君一笑 提交于 2020-11-09 03:19:09
链接 最近在学习Hbase的过程中发现了系列好文分享下,貌似都是大厂的猿猿们分享的,文章值得学习,分享精神和他们的学习方式更值得借鉴。 HBase最佳学习资料汇总 简明HBase入门教程-Write全流程 HBase入门教程-Flush与Compaction HBase数据模型解析和基本的表设计分析 HBase高性能随机查询之道 – HFile原理解析 HBase原理之SequenceId HBase原理之Region切分 HBase原理之数据写入流程 HBase原理之数据读取流程 HBase优化之预分区 HBase最佳实践之HBase查询优化 信息来源: HBase论坛 : http://hbase.group 有态度的HBase/Spark/BigData : http://hbasefly.com/ 公众号: HBase技术社区 来源: oschina 链接: https://my.oschina.net/u/2315181/blog/1923703

【从0开始の全记录】Flume+Kafka+Spark+Spring Boot 统计网页访问量项目

五迷三道 提交于 2020-11-04 06:58:12
点击上方 蓝色字体 ,选择“ 设为星标 ” 回复”资源“获取更多资源 大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 1.需求说明 1.1 需求 到现在为止的网页访问量 到现在为止从搜索引擎引流过来的网页访问量 项目总体框架如图所示: 1.2 用户行为日志内容 2.模拟日志数据制作 用Python制作模拟数据,数据包含: 不同的URL地址->url_paths 不同的跳转链接地址->http_refers 不同的搜索关键词->search_keyword 不同的状态码->status_codes 不同的IP地址->ip_slices #coding=UTF-8 import random import time url_paths = [ "class/112.html", "class/128.html", "class/145.html", "class/146.html", "class/131.html", "class/130.html", "class/145.html", "learn/821.html", "learn/825.html", "course/list" ] http_refers=[ "http://www.baidu.com/s?wd={query}", "https://www.sogou