大数据技术之HBase原理与实战归纳分享-上( 二 )

  • Row:HBase 表中的每行数据都由一个 RowKey 和多个 Column(列)组成,数据是按照 RowKey 的字典顺序存储的,并且查询数据时只能根据 RowKey 进行检索,所以 RowKey 的设计十分重要 。
  • Column:HBase 中的每个列都由 Column Family(列族)和 Column Qualifier(列限定符)进行限定,例如 info:name,info:age 。建表时,只需指明列族,而列限定符无需预先定义 。
  • Time Stamp:用于标识数据的不同版本(version),每条数据写入时,系统会自动为其加上该字段,其值为写入 HBase 的时间 。
  • Cell:由{rowkey, column Family:column Qualifier, timestamp} 唯一确定的单元 。cell 中的数据全部是字节码形式存储 。
  • 应用场景
    • 对象存储:比如一些app的海量的图片、网页、新闻等对象,可以存储在HBase中,有些病毒公司的病毒库也可以存储在HBase中 。
    • 时空数据:主要是轨迹、气象网格之类
      • 比如滴滴打车的轨迹数据主要存在HBase之中 。
      • 另外大数据量的车联网企业,数据也都是存在HBase中 。
      • 比如互联网出行,智慧物流与外卖递送,传感网与实时GIS等场景 。
    • 时序数据:时序数据就是分布在时间上的一系列数值 。
      • HBase之上有OpenTSDB模块 , 可以满足时序类场景的需求 。
      • 比如我们有很多的设备、传感器,产生很多数据 , 如果规模不是特别大的厂家有几千个风机,每个风机有几百个指标,那么就会有一百万左右的时序数据,如果用采样每一秒会产生一百万个时间点 , 如果用传统数据库,那么每一秒会产生一百万次,持续地往MQ做一百万次,它会崩裂 。并且查询也是个大问题,除了多维查询以外 , 我们还会额外地增加时间纬度,查看一段时间的数据 。这时候HBase很好了满足了时序类场景的需求 。
    • 推荐画像:特别是用户的画像,是一个比较大的稀疏矩阵,蚂蚁的风控就是构建在HBase上 。用户画像有用户数据量大,用户标签多,标签统计维度不确定等特点,适合HBase特性的发挥 。
    • 消息/订单:在电信领域、银行领域 , 不少的订单查询底层的存储,另外不少通信、消息同步的应用构建在HBase之上 。
    • Feed流:是RSS中用来接收该信息来源更新的接口,简单的说就是持续更新并呈现给用户的内容 。比如微信朋友圈中看到的好友的一条条状态,微博看到的你关注的人更新的内容,App收到的一篇篇新文章的推送 , 都算是feed流 。
    • NewSQL:HBase上有Phoenix的插件,可以满足二级索引、SQL的需求,对接传统数据需要SQL非事务的需求 。从NoSQL到NewSQL,Phoenix或许是新的趋势 。
    基础架构
    大数据技术之HBase原理与实战归纳分享-上

    文章插图
    组成角色包含如下几个部分: