IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> HBase初步学习与性能测试 -> 正文阅读

[大数据]HBase初步学习与性能测试

HBase初步学习

1、HBase定义

HBase(Hadoop Database)是一个分布式、可扩展的NoSQL数据库。基于Big Table,为Hadoop框架当中的结构化数据提供存储服务,是面向列的分布式数据库。这一点与HDFS是不一样的,HDFS是分布式文件系统,管理的是存放在多个硬盘上的数据文件,不支持随机修改,而Hbase管理的是类似于key—value映射的表。

2、HBase数据模型

  • Name space:关系型数据库中表放在database中,而Hbase的表放在命名空间中,自带的命名空间分别是hbase(存放hbase内置的表)和default(用户默认使用的命名空间)
  • Region:按行切分,叫作表的切片。最初创建的一张表就可以视为一个Region,只需要定义列族CF
  • Row:每行数据由一个RowKey和多个或一个Column组成
  • Column:每个列由CF列族和CQ(Column Qualifier)列限定符(就是列名)确定
  • Time Stamp:标识数据的不同版本
  • Cell:region --> row key --> CF --> CQ --> time stamp,就可以确定具体的数据,又称为cell(单元格),存储的时候都以字节码存储,不区分类型

一个列族下的列可以随意添加,不受限制。HBase的Key由RowKey(行键)+ColumnFamily(列族)+Column Qualifier(列修饰符)+TimeStamp(时间戳–版本)+KeyType(类型)组成,而Value就是实际上的值。

3、HBase基本架构

HBase架构.jpg

  • ZooKeeper:存储了HBase的元数据(meta表),处理请求需要取ZK中的元数据表才能知道到哪个服务器处理(根据Region id等信息组成的rowKey,在meta表中确定RegionServer)

    meta表结构.png

    meta 表的地址信息保存在 zk 的 /hbase 路径下的 meta-region-server 节点上:

    meta表.png
    参考:https://lihuimintu.github.io/2019/06/30/HBase-Meta/

  • HMaster:管理表级服务,如创建、删除、修改表。分配region到各个RegionServer,监控各个RS状态,可以控制RegionServer的故障转移和Region的切分

  • HRegionServer:数据节点,用来存储数据,管理对数据的操作。负责与HDFS的交互

一张HBase表会根据RowKey进行横向切分,切分到不同的HRegion中。所以一个HRegion可以看作一个表的一部分。而Store是存储一个列族的数据。

HBase性能测试

1、测试环境

本次测试中,测试环境为HBase1.4.13,集群一共包含3台linux虚拟机,每台都作为RegionServer部署,其中一台还负责HMaster服务。

测试背景.png

2、YCSB安装

YCSB全称为:Yahoo! Cloud Serving Benchmark,是一个常用于测试比较NoSQL数据库管理系统性能的开源程序。

Github地址:https://github.com/brianfrankcooper/YCSB

本实验测试的是HBase的系统性能,所以选择下载ycsb-hbase12-binding-0.17.0.tar.gz,并解压即可。

3、YCSB测试

  • 创建表

    根据官方文档,在测试之前要先在HBase中创建表,并设置Pre-splitting策略(HBase默认只分配一个region给table,也就是说相关读写请求都只会让一个regionServer承担,会导致测试结果很差,无法体现真正性能)。本实验预分区的个数为30(10*regionServer)个

    创建table.png

  • 运行workload

    • 加载workload:

      该阶段负责生成测试数据。

      bin/ycsb load hbase12 -P workloads/workloada -cp /opt/module/hbase-1.4.13/conf/ -p table=usertable -p columnfamily=family

    • 运行workload:

      该阶段进行实际的读写测试,生成测试报告。

      bin/ycsb run hbase12 -P workloads/workloada -cp /opt/module/hbase-1.4.13/conf/ -p table=usertable -p columnfamily=family

    本次workload采用的是workloada,在 ycsb/workloads/ 下存储了workloada的信息,请求比例为50%读,50%写,1000条记录数,1000条操作数:

    # Yahoo! Cloud System Benchmark
    # Workload A: Update heavy workload
    #   Application example: Session store recording recent actions
    #                        
    #   Read/update ratio: 50/50
    #   Default data size: 1 KB records (10 fields, 100 bytes each, plus key)
    #   Request distribution: zipfian
    
    recordcount=1000
    operationcount=1000
    workload=site.ycsb.workloads.CoreWorkload
    
    readallfields=true
    
    readproportion=0.5
    updateproportion=0.5
    scanproportion=0
    insertproportion=0
    
    requestdistribution=zipfian
    
  • 测试结果

    workloada (1000条记录数,1000条操作数,读写操作各占50%):

    [OVERALL], RunTime(ms), 3962
    [OVERALL], Throughput(ops/sec), 252.39777889954567
    [TOTAL_GCS_PS_Scavenge], Count, 4
    [TOTAL_GC_TIME_PS_Scavenge], Time(ms), 105
    [TOTAL_GC_TIME_%_PS_Scavenge], Time(%), 2.65017667844523
    [TOTAL_GCS_PS_MarkSweep], Count, 0
    [TOTAL_GC_TIME_PS_MarkSweep], Time(ms), 0
    [TOTAL_GC_TIME_%_PS_MarkSweep], Time(%), 0.0
    [TOTAL_GCs], Count, 4
    [TOTAL_GC_TIME], Time(ms), 105
    [TOTAL_GC_TIME_%], Time(%), 2.65017667844523
    [READ], Operations, 526
    [READ], AverageLatency(us), 1838.4657794676807
    [READ], MinLatency(us), 665
    [READ], MaxLatency(us), 43775
    [READ], 95thPercentileLatency(us), 2959
    [READ], 99thPercentileLatency(us), 9839
    [READ], Return=OK, 526
    [CLEANUP], Operations, 2
    [CLEANUP], AverageLatency(us), 51349.0
    [CLEANUP], MinLatency(us), 10
    [CLEANUP], MaxLatency(us), 102719
    [CLEANUP], 95thPercentileLatency(us), 102719
    [CLEANUP], 99thPercentileLatency(us), 102719
    [UPDATE], Operations, 474
    [UPDATE], AverageLatency(us), 4070.5696202531644
    [UPDATE], MinLatency(us), 2712
    [UPDATE], MaxLatency(us), 62527
    [UPDATE], 95thPercentileLatency(us), 5555
    [UPDATE], 99thPercentileLatency(us), 10295
    [UPDATE], Return=OK, 474
    

本实验分别测试了HBase读写请求比例为0.5/0.5、0.95/0.05、0.05/0.95的情况下,1000条,10000条以及100000条数据和操作的情况,得到了如下数据:

OVERALLOVERALLREADREADREADUPDATEUPDATEUPDATE
read/update propertionrecordcountRunTime(ms)Throughput(ops/sec)OperationsAverageLatency(us)95thPercentileLatency(us)OperationsAverageLatency(us)95thPercentileLatency(us)
0.5/0.510003962252.3975261838.46529594744070.5695555
0.5/0.51000023025434.31249501044.244202150503320.8415747
0.5/0.5100000131710759.24350108559.449791498922042.8782433
0.95/0.0510002700370.3719491713.2033179515055.6665819
0.95/0.051000087031149.0299517636.18610384833420.9175203
0.95/0.05100000663571507.00195135528.90677348652983.9454655
0.05/0.9510003792263.713461224.65213969542927.8014139
0.05/0.951000023226430.551519823.144106194812281.2442903
0.05/0.95100000195563511.3445070622.213816949302007.9322341

由测试可知:当读写请求比例一定时,随着记录条数和请求条数的增加,读写延迟会大幅度降低,同时总吞吐量也会显著提升。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-07-10 14:37:33  更:2021-07-10 14:37:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/7 11:24:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码