背景

人资绩效系统数据预处理平台,负责接收所有上游业务量数据。具有数据量大、非结构化数据、更新单个业务量数据,查询性能要求高等特性。通常技术上可以选择OSS、MySql数据库、ES等存储方案。其中OSS云存储方案,查询性能与更新单个业务量数据上无法满足。MySql数据库如果每对接一种业务量创建一个表的方式,对于更新查询等方面复杂度较高,不利于系统扩展。而ES存储量与查询量都可以满足,但更新单个字段不够友好,且ES成本较高。

现状

技术选型时,充分考虑到人资数据预处理平台的特性,数据量大,数据非结构化,高性能、开源稳定等要求,选型HBase。

HBase是一个分布式的、面向列的开源数据库,它是一个适合于非结构化数据存储的数据库,它在Hadoop之上提供了类似于Bigtable的能力,同时又是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,同时HBase技术可在廉价PC Server上搭建起大规模结构化存储集群,性价非常高。

HBase适用场景

对象存储:不少的头条类、新闻类的的新闻、网页、图片存储在HBase之中,一些病毒公司的病毒库也是存储在HBase之中。

时序数据:HBase之上有OpenTSDB模块,可以满足时序类场景的需求。

推荐画像:特别是用户的画像,是一个比较大的稀疏矩阵,蚂蚁的风控就是构建在HBase之上。

时空数据:主要是轨迹、气象网格之类,滴滴打车的轨迹数据主要存在HBase之中,另外在技术所有大一点的数据量的车联网企业,数据都是存在HBase之中。

消息/订单:在电信领域、银行领域,不少的订单查询底层的存储,另外不少通信、消息同步的应用构建在HBase之上。

Feeds流 :典型的应用就是xx朋友圈类似的应用。

HBase基础概念

命名空间:类比MySql中数据库库名。

表名:类比MySql中表名。

列族:一组列的集合为列族。列族下的列可以N个。

列名称:存在列族下的单个列,列族下的名称。

RowKey:Hbase存储采用 key-value方式,RowKey就是Key,所有的修改,查询等操作都只能基于RowKey,必须唯一。

HBase整体架构

HBase由三种类型的服务器以主从模式构成

Region Server:负责数据的读写服务,用户通过与Region server交互来实现对数据的访问。每个Region服务器中包含最多1000个Region,每个Region里面包含了StartKey到EndKey的一个区间数据。
HBase HMaster:分组分配Region和操作DDL,在集群处于数据恢复或者动态调整时,监控所有Region Server的状态。
ZooKeeper:负责维护集群的状态(某台服务器是否在线,服务器之间数据的同步操作及Hmaster的选举等)。

集群与协同工作

Region Server,会通过心跳方式与Zookeeper保持连接,并创建一个临时节点,当无法监听到心跳时,会通知Zookeeper,同时删除临时节点,而HMaser会通过zookeeper得到Region Server服务器的状态,当服务器下线时,会进行数据恢复,容灾等操作。HMaster同样会同Zookeeper保持心跳,用于监控HMaster状态,当HMaster下线时,会通过选举方式,将HMaster集群中的一台机器设置成Active,其他机器设置成InActive状态,来保证整个集群的高可用性。

数据写入过程

1.HBase客户端发起Put请求时,会先将数据写入预写日志(WAL)中,将操作记录写入WAL末尾。WAL用于Region Server服务器崩溃时,恢复MemStore中数据,WAL存储在Hadoop的HDFS中。

2.数据在写入Wal后,会将数据先写入Region Server下Region中MemStore中(写入缓存,内存级别)

3.在写入MemStore成功后,反馈给客户端本次写入已经完成。

4.当MemStore达到一定量级时,会通过Flush方式,生成HFile,存入Hadoop的HDFS中。HFile在生成前,会在内存中对Key进行升序排序,将排序好的数据顺序写入HFile中,并在HFile中生成一个多级索引,还有一个尾部指针。

数据读取过程

1.客户端发起请求,从Zookeeper中获取一个叫MetaTable的元数据。注:如果本地有缓存会优先读取本地缓存。

2.客户端通过MetaTable,得知RowKey所有在的Region Server服务器得到Region位置。

3.客户端优先从Region中的BlockCache(读取缓存)中获取数据,如果BlockCache中不存在,会通过MemStore(写入缓存)中获取数据,如果还不存在,会通过HFile中读取,并将数据返回给客户端。

4.读取HFIle时,会通过尾部指针中布隆过滤区域与时间区域,可以快读定位RowKey是否在HFile文件当中。

5.HFile读取后,会将多级索引加载在BlockCache中,用于读加速

最佳实践

HBase主要特点(人资绩效数据预处理平台实践适配的特点)

1.HBase为分布式列式数据库,可以横向进行扩展,解决系统数据量大的问题。

2.HBase为列式存储数据库,一个列族下可以支持成百上千列,解决系统非结构化数据存储与更新单个列数据的问题。

3.HBase具备毫秒级读写,随机读写,实时读写,无线存储拓展,数据高可用,多级缓存,服务不中断,主备自动切换,异地双活等特性,解决系统对于性能,存储的问题。

4.HBase存储自带多种压缩算法,降低数据存储量。

5.HBase数据支持多版本,对修改的数据可以支持多个版本数据。

6.HBase自带数据有效期功能,对于长时间无需使用的数据,可以进行删除。

HBase缺点

1.HBase核心是Rowkey的设计,Rowkey需要保证唯一的同时还需要散列,所有查询全部需要经过Rowkey查询,因次需要在数据库或者ES中建立二级索引辅助搜索。

2.HBase为列式存储,无法根据单独的列进行查询,只能通过RowKey进行查询。

HBase注意事项

1、数据热点问题以及解决方法
HBase每张表下默认会有10个Region,如果使用不正确会导致所有数据写入同一个Region服务器下,造成数据热点问题,解决数据热点问题一共需要注意两个方面。

第一方面是建表时(预分区建表),要根据自己的RowKey特性选择正确的分区规则,一共有三种方式,每种分区方式都不一样,在这里建议使用 HexStringSplit这种方式。

第二方面是RowKey的设计,需要保证唯一的同时尽量散列。人资侧采用雪花算法生成唯一ID,对唯一ID进行MD5转16进制加上反转后的唯一ID作为RowKey,可以将数据均匀的分散到多个Region中,避免数据热点问题。

2、HBase批量获取数据大小建议
对HBase进行批量查询时,将批量数据控制到100以内,超过后性能会下降非常明显。

3、配额与限流
申请HBase实例时需要注意,如申请时配额写成10000QPS,意味着这个实例下所有表的读+写每秒不能超过10000次,超过配额后,服务会报警超出配额,并会进行重试。当10000次不能满足要求时,可以申请提升配额或者改成批量操作,减少与服务器连接次数。

4、单行数据大小限制
单行不建议超过400KB,KV存储系统非对象存储系统。如果Value过大会导致处理性能直线下降表初始化后默认只能接受512KB大小的VALUE入库。

5、HBase连接注意事项
HBase每次连接耗时较高,构建Connect对象时,需要在程序启动时进行,不能在使用时进行创建。

HBase在人资绩效数据预处理平台中的性能参考

HBase写入最近30天TP99

HBase写入均值

HBase查询速度TP99

HBase查询均值

HBase 在京东人资数据预处理平台中的实践!相关推荐

  1. 京东到家数据构造平台设计与实践

    文|袁盼 李磊 编辑|刘慧卿 一 前言 二 背景和目标 三 系统架构设计 3.1 系统介绍 3.2 典型功能详解 四 成果与展望 一 前言 随着到家业务与小时购业务的快速发展,系统迭代日新月异,测试效 ...

  2. 基于python的九轴惯性传感器的数据预处理代码-中值滤波实验

    ** 基于python的九轴惯性传感器的数据预处理代码-中值滤波实验 ** import random import numpy as np import pandas as pd import sc ...

  3. cnn对网络数据预处理_CNN中的数据预处理和网络构建

    cnn对网络数据预处理 In this article, we will go through the end-to-end pipeline of training convolution neur ...

  4. 【VPX302】基于3U VPX总线架构的高性能数据预处理平台/XCKU115

    板卡概述         VPX302是一款基于3U VPX总线架构的高性能数据预处理FMC载板,板卡具有1个FMC+(HPC)接口,1个X8 GTH背板互联接口,可以实现1路PCIe x8:具有4路 ...

  5. mysql恩阳执行脚本_王新栋 | 2017京东商城-京麦平台618备战实践

    作者:王新栋 编辑:王友强 作为技术研发人员,我们常戏称京东每年只干两件事,一个是618,另外一个是双11! 确实每一次的大促都是一场全兵演练,技术人员在这场战斗中,从团队合作.技术提升.用户意识上都 ...

  6. 浅谈大数据服务平台架构与实践

    来源:CDO研习社 编辑:数据社全文共 5517个字,建议阅读需 10 分钟 导读:数据服务是数据中台体系中的关键组成部分.作为数仓对接上层应用的统一出入口,数据服务将数仓当作一个统一的 DB 来访问 ...

  7. 企业级一站式大数据开发平台理论及实践

    点击上方蓝色字体,选择"设为星标" 回复"资源"获取更多资源 前言 本文是个人在从零搭建部门数据及运营平台的过程中的笔记.随着互联网规模不断的扩大,数据也在爆炸 ...

  8. 数据预处理过程中处理方法

    1.初次清洗,DataFrame中存在数值型字段和非数值型字段技巧 1)将训练集和测试集数据进行合并,统一处理 dataset=pd.concat([train_data,test_data],axi ...

  9. PhantomJS NodeJS 在京东网站前端监控平台的最佳实践

    本文首发于 infoQ 及「前端之巅」微信公众号(微信群直播记录),感谢 infoQ 前端之巅尾尾同学对文章的整理和校对.微信群直播的组织策划.「前端之巅」是个非常棒的前端知识分享平台,想了解最前沿的 ...

最新文章

  1. 招募 | 《大数据实践课》课程实践企业合作项目
  2. oracletns中不存在名称为_关于数据库:向SQL Developer添加新连接时未显示Oracle TNS名称...
  3. 了解前端——js需知道知识点
  4. 看看async,await 是如何简化异步的调用WCF!
  5. oracle 11g(四)给oracle添加为系统服务(脚本)
  6. 内核中接收网络帧的处理
  7. Linux 下的进程间通信:管道、消息队列、共享文件、共享内存
  8. ironpython调用c dll_在IronPython中加载模块
  9. 大麦网抢票python代码_damai_ticket
  10. win7文件和文件夹可以重名吗_怎么取消WIN7复制同名文件自动重命名
  11. 小米电视联网后显示无法解析小米电视服务器,小米电视连上无线不能上网怎么回事?教你解决办法...
  12. 10大白帽黑客专用的 Linux 操作系统
  13. GTK+:GTK+的简介、安装、使用方法之详细攻略
  14. CSDN图片上传去除水印
  15. oracle查询同一天生日的,遇到和你同一天生日的人概率有多大?
  16. MFC 生成 exe文件的图标更改方法
  17. matlab 地质学,大类学子有话说 | 地球科学与工程学院:探寻地球的奥秘
  18. 团队项目开发——细思恐极
  19. Elastic Search 深入搜索
  20. sharemouse:MAC Windows

热门文章

  1. Linux之SSH协议知识点总结
  2. 如何在 Windows 中检查计算机正常运行时间
  3. mqtt 传文件断开连接的原因_mqtt 发送消息断开链接
  4. 习题7-1 选择法排序 (20 分)
  5. hdu6989 (莫队+单调栈+ST表)
  6. 线段树 ---- 牛客多校2021多校第6场 H Hopping Rabbit 扫描线
  7. js如何运行python代码_python中执行javascript代码
  8. c1 c2在c语言中,c1和c2科目一样吗
  9. 【构造】CF12E Start of the season(神奇的构造)难度⭐⭐⭐
  10. 全面理解java内存模型_深入理解Java内存模型(八)——总结