分布式NoSQL列存储数据库HBASE(一)

HBase HBase是Apache提供的开源的非关系型数据库。 HBase的底层存储是基于Hadoop,是一个分布式,可扩展,大数据库数据库 HBase能够实时读写大量的数据。单张表就可以做到10亿*百万列数据量的级别。 Hbase是一个NOSQL(not only sql)的数据库。 HBase是由Doug带领团队开发的。仿照了Google的<Bigtable:A Distributed Stor... 阅读详情

分布式NoSQL列存储数据库HBASE(一)

知识点01:

  1. Redis如何保证数据的安全性?

    • 持久化机制:persist
    • RDB:默认机制
      • 思想:在一定时间周期内发生一定次数数据更新【插入、删除、修改】操作,就对整个内存中所有数据拍摄全量数据快照存储在磁盘上
      • 实现
        • 手动:save/bgsave
        • 自动:save 时间 次数
      • 优点:全量、二进制文件、更快、更小、性能更好
      • 缺点:有一定概率出现数据丢失
      • 应用:缓存场景,数据备份和恢复
    • AOF:灵活性更好:安全和性能可以自由选择
      • 思想:按照一定规则,将内存数据变化的日志追加记录在文件中
      • 实现
        • always:每写一条内存就追加一条到磁盘
          • 安全性最高,性能最低
        • everysec:每1s追加一次磁盘
          • 安全和性能权衡
        • no:不用
      • 优点:灵活性更高,可以自由选择安全性和性能
      • 缺点:加载恢复数据比较慢,文件过大并且包含很多无用操作【定期构建一次快照】
      • 应用:永久性的数据存储:数据库
    • 同时启用:AOF
  2. Redis的事务有什么特点?

    • Redis本身是单线程
    • Redis的事务是命令的集合,将多条命令放入队列中,按照顺序依次串行执行
    • 一般不用,不满足原子性
    • multi、exec、discard
  3. Redis的数据过期机制和内存淘汰机制是什么?

    • 过期机制:定时过期、惰性过期、定期过期
    • 内存淘汰
      • 过期Key:随机、LRU、TTL
      • 所有Key:随机、LRU
      • 直接报错
      • 缓存:所有Key-LRU
      • 持久化:过期Key-LRU
  4. Redis的主从复制集群、哨兵集群、分片集群各自有什么特点?

    • 主从复制
      • 主:Master:提供读写
      • 从:Slave:提供读,与Master同步数据
      • 问题:Master存在单点故障问题
    • 哨兵集群
      • 基于主从复制 + 引入了哨兵进程
      • 哨兵进程:监听所有节点,实现故障恢复,配置同步
      • 功能:允许Slave选举成为新的Master
      • 过程
        • step1:某个哨兵发现master故障,主观性故障
        • step2:等到一定个数的哨兵认为master故障,客观性故障
        • step3:从slave选举新的Master
        • step4:修改其他slave配置与新的master同步数据
      • 问题:资源不足
    • 分片集群:分布式内存
      • 思想:将多个小的Redis集群从逻辑上合并为一个大的redis集群,每个小的集群就是一个分片
        • 分片的规则:槽位计算来进行分片,每个分片对应一定范围的槽位
        • 读写数据时:CRC16【K】 & 16383 = 0 ~ 16383
        • 每个小的redis集群有master和slave
          • 只读写master

知识点02:

  • 列存储与列式存储不是一个概念
    • 列式存储:相同列的数据存储在一起
    • 列存储:最小操作单元是列
      • MySQL:最小操作单元是行
        • 插入/删除/更新
      • Hbase:最小操作单元是列
        • 每一行可以拥有不同的列
  • 1-Hbase背景介绍和设计思想
    • 功能、特点、应用场景
    • 基本原理和设计思想
  • 2-Hbase的基本概念
    • MySQL:数据库、表、行、列
    • 对象概念:NameSpace、Table
    • 存储概念:Rowkey、ColumnFamily、Qualifiler、Versions、Timestamp、Region
  • 3-Hbase安装部署分布式集群
    • 集群架构和组件:Hbase + ZK + HDFS
    • 安装配置:按照笔记一步步实现即可
  • 4-Hbase使用
    • 命令的使用
  • 目标
    • Hbase是个什么东西?
    • Hbase与HDFS、Redis的区别是什么?
    • Hbase的整体的存储概念有哪些?
    • Hbase的命令有哪些?
      • put/get/delete/scan

知识点03:数据存储需求及HBASE诞生

  • 目标:了解大数据存储业务需求及Hbase的诞生背景

  • 路径

    • step1:存储需求
    • step2:Hbase诞生
  • 实施

    • 存储需求
      • 早期需求:能实现大量数据的存储和计算
        • Hadoop:HDFS + MapReduce
      • 现在需求:大数据要达到一个实时应用的效果
        • 推荐系统、实时监控、机器学习
        • 实时应用:实时采集、实时存储、实时计算、实时应用
          • Flume
          • 需要有一个工具能解决实时存储的问题:读写的速度非常快
            • HDFS:离线,性能比较差
            • Reids:实时,容量太小
          • Storm
          • Redis
    • Hbase诞生
      • Google:前三篇论文
        • GFS
        • MapReduce
        • BigTable【Chubby】
          • 开源实现:Hbase【Zookeeper】
  • 小结

    • 了解大数据存储业务需求及Hbase的诞生背景

知识点04:Hbase介绍

  • 目标:掌握Hbase的设计、功能及应用场景

  • 实施

    • 官方定义:http://hbase.apache.org/

      • Hbase是一个基于Hadoop的分布式的可扩展的大数据存储的基于内存列存储NoSQL数据库

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oBaXgO0g-1624621070109)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210524100004431.png)]

        Apache HBase™ is the Hadoop database, a distributed, scalable, big data store.
        
        Use Apache HBase™ when you need random, realtime read/write access to your Big Data. This project's goal is the hosting of very large tables -- billions of rows X millions of columns -- atop clusters of commodity hardware. Apache HBase is an open-source, distributed, versioned, non-relational database modeled after Google's Bigtable: A Distributed Storage System for Structured Data by Chang et al. Just as Bigtable leverages the distributed data storage provided by the Google File System, Apache HBase provides Bigtable-like capabilities on top of Hadoop and HDFS.
        
      • 可扩展的大数据存储:分布式

      • 随机实时的访问大数据:基于内存存储

    • 功能:提供分布式的实时随机的大数据持久性存储

    • 应用

      • 大数据量、高并发、高性能的结构化数据存储【读写】
      • 电商:订单
      • 交通:实时监控、实时车辆轨迹
      • 金融:交易信息
  • 小结

    • Hbase的功能与应用场景是什么?
      • 功能:实现高并发和高性能的实时随机的大数据存储
      • 应用:大数据、高并发和高性能的持久化的结构化和半结构化数据存储

知识点05:HBASE设计思想

  • 目标:掌握Hbase的设计思想
  • 实施
    • 为什么Hbase读写速度比较快?
      • 基于内存:达到实时性的效果
      • Redis:分布式内存
    • 为什么Hbase可以支持大数据量?
      • 基于分布式磁盘
      • HDFS:分布式磁盘
    • 核心思想:冷热数据分离
      • 热数据:常用的,会经常读取的数据,大概率会被读取的数据
      • 冷数据:不常用,不会经常被读取的数据
      • 应用场景:实时
        • 热数据:刚产生的数据
        • 冷数据:已经产生很久的数据
      • 思想:将刚产生的数据写入分布式内存 ,内存存储达到一定阈值,将内存中的数据写入分布式磁盘【HDFS】
        • 实时小数据量场景下:大概率情况下,数据直接从内存中就直接被读取了
        • 问题:很多场景下,Hbase的大量数据都存储在HDFS中,读取比较慢,怎么解决?
          • 实时大数据量场景下:需要从HDFS中读取
          • 离线数据存储场景下:大量的数据都从HDFS中读取
        • 解决:通过存储设计角度来解决这些问题
          • 索引 + 二进制 + 有序 + 缓存
    • Hbase与HDFS、Redis有什么区别?
      • Hbase:分布式NoSQL数据库、实时、分布式内存+分布式磁盘、大数据量永久性存储或者临时存储
      • HDFS:分布式文件系统、离线、分布式磁盘、大数据量永久性存储
      • Redis:分布式NoSQL数据库、实时、分布式内存、大数据量缓存或者小数量永久性存储
  • 小结
    • 掌握Hbase的设计思想

知识点06:HBASE中的对象概念

  • 目标:掌握Hbase中的对象的概念

  • 路径

    • step1:MySQL中的对象
    • step2:Hbase中的数据库概念
    • step3:Hbase中的表概念
  • 实施

    • MySQL中的对象

      • 数据库:DataBase

        • 表:Table

          方式一:dbname.tbname;
          方式二:user dbname;select * from tbname;
          
          • 行:Row
            • 列:Column
    • Hbase中的数据库概念NameSpace

      • 概念:命名空间,等同于数据库中的**Database的概念**

        • Hbase中的任何一张表都必须属于某个NameSpace
      • 使用

        • Hbase中没有切换NameSpace的命令,访问所有表只能使用Namespace:TableName方式来访问表
      • 理解:把Namespace当做表名的前缀来看,只要访问表名必须加ns

    • Hbase中的表概念Table

      • 概念:表的概念,等同于数据中的表的概念

      • 使用

        • Hbase中的表是分布式的:表的数据分布式存储在不同的机器上

        • Hbase是分布式存储【读写】,读写是操作表

        • 所有的表在访问时,都必须加上ns的名称,除非表在default默认ns下,可以不加ns名称来进行访问

          • 有一个ns叫做itcast,这个ns中有一张表叫做heima

            itcast:heima
            
          • Hbase中自带了一个ns叫做default,这个ns中有一张表叫t1

            default:t1 或者 t1
            
  • 小结

    • 什么是NameSpace?
      • 就是数据库概念,Hbase中的表要存储ns下面
      • 注意:ns没有切换的操作
    • Hbase的表与MySQL的表有什么区别?
      • Hbase的表是分布式的,写入Hbase表中的数据是分布式存储
      • 所有表的访问必须加上ns的名称:ns:tbname,除非表在default的ns下面

知识点07:HBASE中的存储概念

  • 目标:掌握Hbase中的存储的概念

  • 实施

    • 数据行设计Rowkey

      • Rowkey:行健,这个概念是整个Hbase的核心,类似于MySQL主键的概念

      • MySQL主键:可以没有,唯一标记一行、作为主键索引

        • 如果有,从数据中选择一列来自己指定,可以有可以没有

        sid name age gender phone add id

        
        
        
        
      • Hbase行健

        • 所有Hbase的表不用定义,所有Hbase的表自带行健这一列【行健这一列的值由用户自己设计】
        rowkey		sid		name		age			gender		phone		add			id
        可以使用sid作为rowkey
        	sid查询走索引查询
        可以使用name+id作为rowkey:rowkey索引查询是前缀匹配
          	name查询走索引
        	name+id查询走索引
        
        • 唯一标识一行

        • 作为Hbase表中的唯一索引

        • Hbase不能创建索引

      • 问题:查询数据走索引查询和全表扫描,只有按照rowkey查询才走索引查询

        • 原因:Hbase整个数据存储都是按照Rowkey实现数据存储的
          • Rowkey的值是什么,决定了按照什么查询就是走索引的
    • 列族设计ColumnFamily

      • cf:列族,对除了Rowkey以外的列进行分组,将列划分不同的组中

        • 注意:任何一张Hbase的表,都至少要有一个列族,除了Rowkey以外的任何一列,都必须属于某个列族,Rowkey不属于任何一个列族
      • 分组:将拥有相似IO属性的列放入同一个列族【要读一起读,要写一起写】

        • 设计原因:划分列族,读取数据时可以加快读取的性能

          • 如果没有列族,没有划分班级教室:找一个人,告诉你这个人就在这栋楼
        • 如果有了列族,划分了教室:找一个人,告诉你这个人在这栋楼某个房间

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6cH4qUbB-1624621070111)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210523125756429.png)]

  • 数据列设计Qualifier

    • Qualifier/Column:列,与MySQL中的列是一样

      • 注意

        • Hbase除了rowkey以外的任何一列都必须属于某个列族,引用列的时候,必须加上列族的名称

          • 如果有一个列族:basic

            • 如果basic列族中有两列:name,age

          basic:name
          basic:age

          
          
        • Hbase是列存储,Hbase中每一行拥有的列是可以不一样的

          • 每个Rowkey可以拥有不同的列
  • 多版本设计VERSIONS

    • 功能:某一行的任何一列存储时,只能存储一个值**,Hbase可以允许某一行的某一列存储多个版本的值的**

      • 默认每一列都只能存储1个版本
    • 级别:列族级别,指定列族中的每一列最多存储几个版本的值,来记录值的变化的

    • 区分:每一列的每个值都会自带一个时间戳,用于区分不同的版本

      • 默认情况下查询,根据时间戳返回最新版本的值

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lFGWBS5c-1624621070112)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210523130100567.png)]

    • 分布式设计

      • HDFS设计

        • 文件夹

        • 文件:划分Block:根据每128M划分一个块,每个Block存储在不同的机器上

          [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iLet5Gpo-1624621070112)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210523130214227.png)]

      • Hbase的表如何实现分布式存储的?

        • Namespace

        • Table:Region:分区,Hbase中任何一张都可以有多个分区,数据存储在表的分区中,每个分区存储在不同的机器上

          • 非常类似于HDFS中Block的概念
      • 划分规则:范围分区

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K1hxscM8-1624621070113)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210523130311316.png)]

      • 设计对比

        | 分布式概念 | HDFS | Redis | Hbase |
        | :--------: | :----------------: | :------: | :---------------: |
        | 对象 | 目录 + 文件 | DB0 | Namespace + Table |
        | 分布式 | Block | 分片集群 | Region |
        | 划分规则 | 按照大小划分:128M | 槽位划分 | 按照范围划分 |

​

  • 整体概念对比

    概念MySQLHbase
    数据库DataBaseNameSpace
    数据表TableTable【分布式的】
    数据分区-Region
    数据行数据【主键+其他列】Rowkey+数据【其他列】
    列族-ColumnFamily
    数据列普通列与对应的值列【timestamp】与对应的值【支持多版本】
  • 小结

    • 什么是行健Rowkey?
      • 类似于主键的概念
      • 功能:唯一标识一行,作为唯一索引
      • 使用:所有Hbase的表自带这一列,值由自己设计,只有按照rowkey的查询才走索引,根据rowkey属于哪个region的范围进行分区
    • 什么是列族ColumnFamily?
      • 本质就是对列的分组
      • 设计:提高查询的性能
      • 使用:任何一张表至少有一个列族
    • 什么是多版本?
      • 某一行的某一列可以存储多个版本的值
      • 级别:列族
      • 区分:timestamp
    • 什么是Region?
      • Hbase中表的分区,一张表可以有多个分区,用于实现构建分布式表,不同Region存储在不同Hbase节点上
      • 如果决定写入一条数据到表中,会写入哪个分区?分区规则:范围分区

知识点08:HBASE中的按列存储

  • 目标:了解Hbase中的按列存储的设计

  • 实施

    • 本质:KV结构存储

      • 底层:将每一列的数据变成一个KV对来进行存储

      • 结构

        • K:Rowkey + CF + column + TS
        • V:value
      • 业务数据

        rowkey				cf:id			cf:age			cf:name
        20200101_001		001				18				zhangsan
      
      • 底层存储

        K						V
        

      20200101_001+cf+age+ts 18
      20200101_001+cf+id+ts 001
      20200101_001+cf+name+ts zhangsan

      
      
      
      
    • 功能

      • Hbase的最小操作单元是列,不是行,可以实现对每一行的每一列进行读写
    • 设计

      • MySQL:按行存储,最小的操作单元是行
        • insert:插入一行
        • delete:删除一行
        • ……
      • Hbase:按列存储,最小操作单元是列
        • 插入:为某一行插入一列
        • 读取:只读某一行的某一列的
        • 删除:只删除这一行的某一列
    • 举例

      • MySQL中读取数据
        • 查询【id,name,age,addr,phone……100列,每一列10M】:select id from table ;
          • 先找到所有符合条件的行,将整行的数据所有列全部读取:1000M数据
          • 再过滤id这一列:10M
      • Hbase中读取数据
        • 查询【id,name,age,addr,phone……100列,每一列10M】:select id from table ;
        • 直接对每一行读取这一列的数据:10M
    • 总结

      • 思想:通过细化了操作的颗粒度,来提高读的性能

      • 如果按行存储:找一个人,告诉你这个人就在这栋楼某个房间的某一排

      • 如果按列存储:找一个人,告诉你这个人在这栋楼某个房间的某一排的某一列

  • 小结

    • 了解Hbase中的按列存储的设计

知识点09:HBASE集群架构

  • 目标:掌握Hbase集群的集群架构

  • 实施

    • 架构

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-R4fwX6pR-1624621070114)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210523131109291.png)]

      • Hbase集群:分布式架构集群,主从架构

        • HMaster:主节点:管理节点

          • 负责所有从节点的管理
          • 负责元数据的管理
        • HRegionServer:从节点:存储节点

          • 负责管理每张表的分区数据:Region

          • 对外提供Region的读写请求

          • 用于构建分布式内存

    • 角色

      • Hbase:通过RegionServer构建分布式内存
      • HDFS:构建分布式磁盘
      • Zookeeper
        • 辅助选举:多个Master的Active选举
        • 存储元数据:Hbase的管理元数据
  • 小结

    • 掌握Hbase集群的集群架构

知识点10:HBASE集群部署

  • 目标:实现Hbase分布式集群部署

  • 实施

    • 解压安装

      • 上传HBASE安装包到第一台机器的/export/software目录下

        cd /export/software/
        rz
        
      • 解压安装

        tar -zxvf hbase-2.1.0.tar.gz -C /export/server/
        cd /export/server/hbase-2.1.0/
        

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iH8Q17X1-1624621070115)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210524114532990.png)]

    • 修改配置

      • 切换到配置文件目录下

        cd /export/server/hbase-2.1.0/conf/
        
      • 修改hbase-env.sh

        #28行
        export JAVA_HOME=/export/server/jdk1.8.0_241
        #125行
        export HBASE_MANAGES_ZK=false
        
      • 修改hbase-site.xml

        cd /export/server/hbase-2.1.0/
        mkdir datas
        vim conf/hbase-site.xml
        
          <property >
            <name>hbase.tmp.dir</name>
            <value>/export/server/hbase-2.1.0/datas</value>
          </property>
            <property >
            <name>hbase.rootdir</name>
            <value>hdfs://node1:8020/hbase</value>
          </property>
          <property >
            <name>hbase.cluster.distributed</name>
            <value>true</value>
          </property>
          <property>
            <name>hbase.zookeeper.quorum</name>
            <value>node1:2181,node2:2181,node3:2181</value>
          </property>
        
      • 修改regionservers

        vim conf/regionservers
        
        node1
        node2
        node3
        
      • 配置环境变量

        vim /etc/profile
        
        #HBASE_HOME
        export HBASE_HOME=/export/server/hbase-2.1.0
        export PATH=:$PATH:$HBASE_HOME/bin
        
        source /etc/profile
        
    • 分发

      cd /export/server/
      scp -r hbase-2.1.0 node2:$PWD
      scp -r hbase-2.1.0 node3:$PWD
      
    • 服务端启动与关闭

      • step1:启动HDFS

        start-dfs.sh
        
      • step2:启动ZK

        /export/server/zookeeper-3.4.6/bin/start-zk-all.sh
        
      • step3:启动Hbase

        start-hbase.sh
        

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IL5HBCRs-1624621070115)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210524115912008.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D3WWAVud-1624621070116)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210524120039069.png)]

      • 关闭:先关闭Hbase再关闭zk

        stop-hbase.sh
        stop-zk-all.sh
        

      stop-dfs.sh

      
      
      
      
    • 测试

      • 访问Hbase Web UI

        node1:16010
        
        
        Apache Hbase 1.x之前是60010,1.x开始更改为16010
        CDH版本:一直使用60010
        

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DZaL9csL-1624621070116)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210524120224751.png)]

    • 搭建Hbase HA

      • 关闭Hbase所有节点

        stop-hbase.sh
        
      • 创建并编辑配置文件

        vim conf/backup-masters
        
        node2
        
      • 启动Hbase集群

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cWJPH7TY-1624621070117)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210524120715725.png)]

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-meFnfYMM-1624621070118)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210524120833546.png)]

    • 测试HA

      • 启动两个Master,强制关闭Active Master,观察StandBy的Master是否切换为Active状态

      hbase-daemon.sh stop master

      
      - **【测试完成以后,删除配置,只保留单个Master模式】**
      
      
      
      
  • 小结

    • 实现Hbase分布式集群部署

知识点11:HBASE开发场景

  • 目标:了解Hbase使用过程中的不同开发场景

  • 实施

    • 场景1:集群管理

      • 应用场景:运维做运维集群管理,我们开发用的不多

      • 需求:封装Hbase集群管理命令脚本,自动化执行

        • 类似于hive -f xxx.sql

        • 举个栗子:每天Hbase集群能定时的自动创建一张表

        • 分析

          • 要实现运行Hbase脚本:创建表:/export/data/hbase_create_day.sh

            #!/bin/bash
            create 'tbname','cf1'
            
            • 问题是:怎么能通过Linux命令行运行Hbase的命令呢?
          • 要实现定时调度:Linux Crontab、Oozie、Azkaban

            00 00 *		*	*		sh /export/data/hbase_create_day.sh
            
      • 实现:通过Hbase的客户端运行命令文件,通过调度工具进行调度实现定时运行

      • 用法:hbase shell 文件路径

        • step1:将Hbase的命令封装在一个文件中:vim /export/data/hbase.txt

          list
          exit
          
        • step2:运行Hbase命令文件

          hbase shell /export/data/hbase.txt
          
        • step3:封装到脚本

          #!/bin/bash
          hbase shell /export/data/hbase.txt
          
      • 注意:所有的Hbase命令文件,最后一行命令必须为exit

      • 导入测试数据

        • 数据中的字段信息

          image-20210523133950245
        • step1:先上传文件

        • step2:运行文件

          hbase shell /export/data/ORDER_INFO.txt
          
        • step3:查看表中数据

          scan 'ORDER_INFO',{FORMATTER=>'toString'}
          

      ​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3RBiDNEh-1624621070118)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210524144418176.png)]

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tc93VDdC-1624621070118)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210623151750271.png)]

    • 场景2:测试开发

      • 需求:一般用于测试开发,执行DDL操作,类似于SQL之类的命令

      • 实现:Hbase shell命令行

      • 用法:hbase shell

      • 命令

        • 查看帮助:help
        • 查看命令的用法:help ‘command’

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZuAZd6w8-1624621070119)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210623152015317.png)]

    • 场景3:生产开发

      • 需求:一般用于生产开发,通过MapReduce或者Spark等程序读写Hbase,类似于JDBC

        • 举个栗子:读取Hbase中的数据,进行分析处理,统计UV、PV
        • 分析
          • step1:通过分布式计算程序Spark、Flink读取Hbase数据
          • step2:对读取到的数据进行统计分析
          • step3:保存结果
      • 实现:分布式计算程序通过Java API读写Hbase,实现数据处理

      • 用法:在MapReduce或者Spark中集成API

  • 小结

    • 了解Hbase使用过程中的不同开发场景

知识点12:HBASE命令行:DDL:NS

  • 目标:掌握Hbase中的常用DDL的NameSpace管理命令

  • 实施

    • NameSpace管理

    Group name: namespace
    Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables

    
    
    
    - **列举所有Namespace**
    
      - 命令:list_namespace
    
      - SQL:show databases
    
      - 语法
    
        ```
         list_namespace
        ```
    
      - 示例
    
        ```
        list_namespace
        ```
    
      
    
    - **列举某个NameSpace中的表**
    
      - 命令:list_namespace_tables
    
          - SQL:show tables  in dbname
    
      - 语法
    
        ```shell
        list_namespace_tables 'Namespace的名称'
        ```
    
      - 示例
    
        ```shell
        list_namespace_tables 'hbase'
        ```
    
      
    
    - **创建**
    
      - 命令:create_namespace
    
        - SQL:create database  dbname
    
      - 语法
    
        ```
        create_namespace 'Namespace的名称'
        ```
    
        - 示例
    
        ```shell
        create_namespace 'heima'
      create_namespace 'itcast'
        ```
    
        
    
    - **删除**
    
      - 命令:drop_namespace
    
        - 只能删除空数据库,如果数据库中存在表,不允许删除
    
      - 语法
    
        ```
      drop_namespace 'Namespace的名称'
        ```
    
      - 示例
    
        ```
        drop_namespace 'itcast'
        drop_namespace 'heima'
        ```
        
        
    
    
  • 小结

    • 掌握Hbase中的常用DDL的NameSpace管理命令

知识点13:HBASE命令行:DDL:Table

  • 目标:掌握Hbase中的常用DDL表的命令

  • 实施

    • Table的管理命令

      Group name: ddl
        Commands: alter, alter_async, alter_status, clone_table_schema, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, list_regions, locate_region, show_filters
      
    • 列举

      • 命令:list

        • SQL:show tables
      • 语法: list

      • 示例

        list
        
    • 创建

      • 命令:create

        • SQL:表名 + 列的信息【名称和类型】

        create table if not exists tbname(
        col1 type1 ,
        col2 type2,
        ……
        );

        
        
        
        - Hbase:必须指定表名 + 至少一个列族
        
        - 表名
        - 至少一个列族
        
        
      • 语法

        #表示在ns1的namespace中创建一张表t1,这张表有一个列族叫f1,这个列族中的所有列可以存储5个版本的值
        create 'ns1:t1', {NAME => 'f1', VERSIONS => 5}
        #在default的namespace中创建一张表t1,这张表有三个列族,f1,f2,f3,每个列族的属性都是默认的
        create 't1', 'f1', 'f2', 'f3'
        
      • 示例

      #如果需要更改列族的属性,使用这种写法
      create ‘t1’,{NAME=>‘cf1’},{NAME=>‘cf2’,VERSIONS => 3}
      #如果不需要更改列族属性
      create ‘itcast:t2’,‘cf1’,‘cf2’,‘cf3’ = create ‘t1’,{NAME=>‘cf1’},{NAME=>‘cf2’},{NAME=>‘cf3’}

      
      
      
      
    • 查看

      • 命令:desc

        • SQL :desc tbname
      • 语法

        desc '表名'
        
      • 示例

        desc 't1'
        

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kdjMGCI7-1624621070119)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210623155832880.png)]

    • 删除

      • 命令:drop

        • SQL:drop table tbname
      • 语法

        drop '表名'
        
      • 示例

        drop 't1'
        
      • 注意:如果要对表进行删除,必须先禁用表,再删除表

    • 禁用/启用

      • 命令:disable / enable

      • 功能

        • Hbase为了避免修改或者删除表,影响这张表正在对外提供读写服务
        • 规则:修改或者删除表时,必须先禁用表,表示这张表暂时不能对外提供服务
        • 如果是删除:禁用以后删除
        • 如果是修改:先禁用,然后修改,修改完成以后启用
      • 语法

        disable '表名'
        enable '表名'
        
      • 示例

        disable 't1'
        enable 't1'
        
    • 判断存在

      • 命令:exists

      • 语法

        exists '表名'
        
      • 示例

        exists 't1'
        
  • 小结

    • 掌握Hbase中的常用DDL表管理命令

知识点14:HBASE命令行:Put

  • 目标:掌握Hbase插入更新的数据命令put的使用

  • 实施

    • 功能:插入 / 更新数据【某一行的某一列】

    • 语法

      #表名+rowkey+列族+列+值
      put 'ns:tbname','rowkey','cf:col','value'
      
    • 示例

      create 'itcast:t2','cf1',{NAME=>'cf3',VERSIONS => 3}
      
      put 'itcast:t2','20210201_001','cf1:name','laoda'
      put 'itcast:t2','20210201_001','cf1:age',18
      put 'itcast:t2','20210201_001','cf3:phone','110'
      put 'itcast:t2','20210201_001','cf3:addr','shanghai'
      
      put 'itcast:t2','20210101_000','cf1:name','laoer'
      put 'itcast:t2','20210101_000','cf3:addr','bejing'
      
    • 注意

      • put:如果不存在,就插入,如果存在就更新

        put 'itcast:t2','20210101_000','cf1:name','laosan'
        

      put ‘itcast:t2’,‘20210101_000’,‘cf3:addr’,‘guangzhou’
      scan ‘itcast:t2’,{VERSIONS=>10}

      
      
      
      
  • 观察结果

    • Hbase表会自动按照Rowkey构建字典有序:逐位比较
    • 没有更新和删除:通过插入来代替的,做了标记不再显示

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MbRuifXG-1624621070119)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210524154733066.png)]

  • 小结

    • put的功能及语法是什么?
      • 功能:插入或者更新
      • 语法:put 表名,行健,列族:列,值

知识点15:HBASE命令行:Get

  • 目标:掌握Hbase查询的数据命令get的使用

  • 实施

    • 功能:读取某个Rowkey的数据

      • 缺点:get命令最多只能返回一个rowkey的数据,根据Rowkey进行检索数据
      • 优点:Get是Hbase中查询数据最快的方式,并不是最常用的方式
        • Rowkey作为唯一索引
    • 语法

      get	表名	rowkey		[列族,列]
      get 'ns:tbname','rowkey'
      get 'ns:tbname','rowkey',[cf]
      get 'ns:tbname','rowkey',[cf:col]
      
    • 示例

      get 'ORDER_INFO','f8f3ca6f-2f5c-44fd-9755-1792de183845'
      get 'ORDER_INFO','f8f3ca6f-2f5c-44fd-9755-1792de183845','C1'
      get 'ORDER_INFO','f8f3ca6f-2f5c-44fd-9755-1792de183845','C1:USER_ID'
      

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ej74HguA-1624621070120)(Day26_分布式NoSQL列存储数据库HBASE(一).assets/image-20210524155451906.png)]

  • 小结

    • get的功能及语法是什么?

      • 功能:读取某个Rowkey数据
      • 语法:get 表名,rowkey,【cf:col】

知识点16:HBASE命令行:Delete

  • 目标:掌握Hbase的删除数据命令delete的使用

  • 实施

    • 功能:删除Hbase中的数据

    • 语法

      #删除某列的数据
      delete     tbname,rowkey,cf:col
      #删除某个rowkey数据
      deleteall  tbname,rowkey
      #清空所有数据
      truncate   tbname
      
    • 示例

      delete 'itcast:t2','20210101_000','cf3:addr'
      deleteall 'itcast:t2','20210101_000'
      truncate 'itcast:t2'
      
  • 小结

    • Hbase中的数据如何删除?
      • 删除列:delete 表名,Rowkey,列族+列
      • 删除行:deleteall 表名,Rowkey
      • 清空表:truncate 表名

知识点17:HBASE命令行:Scan

  • 目标:掌握Hbase的查询数据命令scan的使用

  • 实施

    • 功能:根据条件匹配读取多个Rowkey的数据

    • 语法

      #读取整张表的所有数据
      scan 'tbname'//一般不用
      #根据条件查询:工作中主要使用的场景
      scan 'tbname',{Filter} //用到最多
      
    • 示例

      • 插入模拟数据

        put 'itcast:t2','20210201_001','cf1:name','laoda'
        put 'itcast:t2','20210201_001','cf1:age',18
        put 'itcast:t2','20210201_001','cf3:phone','110'
        

      put ‘itcast:t2’,‘20210201_001’,‘cf3:addr’,‘shanghai’
      put ‘itcast:t2’,‘20210201_001’,‘cf1:id’,‘001’

      put ‘itcast:t2’,‘20210101_000’,‘cf1:name’,‘laoer’
      put ‘itcast:t2’,‘20210101_000’,‘cf3:addr’,‘bejing’

      put ‘itcast:t2’,‘20210901_007’,‘cf1:name’,‘laosan’
      put ‘itcast:t2’,‘20210901_007’,‘cf3:addr’,‘bejing’

      put ‘itcast:t2’,‘20200101_004’,‘cf1:name’,‘laosi’
      put ‘itcast:t2’,‘20200101_004’,‘cf3:addr’,‘bejing’

      put ‘itcast:t2’,‘20201201_005’,‘cf1:name’,‘laowu’
      put ‘itcast:t2’,‘20201201_005’,‘cf3:addr’,‘bejing’

        
      
    • 查看Scan用法

        scan 't1', {ROWPREFIXFILTER => 'row2', FILTER => "
          (QualifierFilter (>=, 'binary:xyz')) AND (TimestampsFilter ( 123, 456))"}
      
      • 测试Scan的使用

        scan 'itcast:t2'
        #rowkey前缀过滤器
        scan 'itcast:t2', {ROWPREFIXFILTER => '2021'}
        scan 'itcast:t2', {ROWPREFIXFILTER => '202101'}
        #rowkey范围过滤器
        #STARTROW:从某个rowkey开始,包含,闭区间
        #STOPROW:到某个rowkey结束,不包含,开区间
        scan 'itcast:t2',{STARTROW=>'20210101_000'}
        scan 'itcast:t2',{STARTROW=>'20210201_001'}
        scan 'itcast:t2',{STARTROW=>'20210101_000',STOPROW=>'20210201_001'}
        scan 'itcast:t2',{STARTROW=>'20210201_001',STOPROW=>'20210301_007'}
        
      • 注意

      • 在Hbase数据检索,尽量走索引查询:按照Rowkey条件查询

        • 尽量避免走全表扫描
        • Hbase所有Rowkey的查询都是前缀匹配,只有按照前缀匹配才走索引
      • rowkey:日期+用户id
        - 走索引:日期、日期+用户id

        • 如果想查询用户id为001的数据
          • 不走索引,用户id不是rowkey的前缀
  • 小结

    • scan的功能及语法是什么?
      • 功能:查询表中的所有数据
        • get区别:scan可以返回多条Rowkey的数据
      • 语法
        • scan + 表名
        • scan + 表名 + 过滤器

知识点18:HBASE命令行:incr & count

  • 目标:了解Hbase的incr和count命令的使用

  • 实施

    • incr:自动计数命令

      • 功能:一般用于自动计数的,不用记住上一次的值,直接做自增

        • 需求:一般用于做数据的计数

        • 与Put区别

          • put:需要记住上一次的值是什么

          • incr:不需要知道上一次的值是什么,自动计数

      • 语法

        incr  '表名','rowkey','列族:列'
        get_counter '表名','rowkey','列族:列'
        
      • 示例

        create 'NEWS_VISIT_CNT', 'C1'
        incr 'NEWS_VISIT_CNT','0000000001_00:00-01:00','C1:CNT',12
        get_counter 'NEWS_VISIT_CNT','0000000001_00:00-01:00','C1:CNT'
        incr 'NEWS_VISIT_CNT','0000000001_00:00-01:00','C1:CNT'
        
    • count:统计命令

      • 功能:统计某张表的行数【rowkey的个数】

      • 语法

        count  '表名'
        
      • 示例

        count 'ORDER_INFO'
        
      • 面试题:Hbase中如何统计一张表的行数最快

        • 方案一:分布式计算程序,读取Hbase数据,统计rowkey的个数

          #在第三台机器启动
          start-yarn.sh
          #在第一台机器运行
          hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'ORDER_INFO'
          
        • 方案二:count命令,相对比较常用,速度中等

        count ‘ORDER_INFO’

        
        - 方案三:协处理器,最快的方式
        
        - 类似于Hive中的UDF,自己开发一个协处理器,监听表,表中多一条数据,就加1
        - 直接读取这个值就可以得到行数了
        
        
  • 小结

    • 了解Hbase的incr和count命令的使用

附录一:Maven依赖

    <repositories>
        <repository>
            <id>aliyun</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>
    <properties>
        <hbase.version>2.1.2</hbase.version>
    </properties>
    <dependencies>
        <!-- Hbase Client依赖 -->
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>${hbase.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>${hbase.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
- 示例

    ```
    count 'ORDER_INFO'
  ```

- **==面试题:Hbase中如何统计一张表的行数最快==**

  - 方案一:分布式计算程序,读取Hbase数据,统计rowkey的个数

    ```
    #在第三台机器启动
    start-yarn.sh
    #在第一台机器运行
    hbase org.apache.hadoop.hbase.mapreduce.RowCounter 'ORDER_INFO'
    ```
    
  - 方案二:count命令,相对比较常用,速度中等
  
    ```
  count 'ORDER_INFO'
    ```
  
  - 方案三:协处理器,最快的方式
  
    - 类似于Hive中的UDF,自己开发一个协处理器,监听表,表中多一条数据,就加1
    - 直接读取这个值就可以得到行数了
  • 小结

    • 了解Hbase的incr和count命令的使用

附录一:Maven依赖

    <repositories>
        <repository>
            <id>aliyun</id>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        </repository>
    </repositories>
    <properties>
        <hbase.version>2.1.2</hbase.version>
    </properties>
    <dependencies>
        <!-- Hbase Client依赖 -->
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>${hbase.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>${hbase.version}</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
关于非关系型数据库(NoSQL)的综述 非关系型数据库(NoSQL)综述 简介以及与关系型数据库的对比 1、简介: 非关系型数据库也叫Nosql数据库,全称是not only sql。 2009年初,Johan Oskarsson举办了一场关于开源分布式数据库的讨论,Eric Evans在这次讨论中提出了NoSQL一词,用于指代那些非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统。Eric Evans使用NoSQL这个词... 阅读详情

相关推荐

论文笔记:基于对比学习的半监督分类学习方法

论文阅读笔记_CCSSL

weixin_46224126的博客 3312

Hbase基本概念

一、Hbase介绍 二、HBase 的特点是什么? 三、Hbase的存储结构 四、HBase 读写流程? 五、HBase表的数据模型 六. 热点现象(数据倾斜)怎么产生的,以及解决方法有哪些七、HBase的 rowkey 设计原则 八、HBase的列簇设计 九、 简述 HBase 中 compact 用途是什么,什么时候触发,分为哪两种,有什么区别,有哪些相关配置参数?

libaowenBlog的博客 1万+

wpf入门第五篇 WPF with ECharts

前言 本文是wpf入门系列第五篇,面向有winform或者web前端基础的、并且也有C#基础的同学。 ECharts是百度团队开发的开源免费的js图表控件库,非常强大,文档齐全。WPF中使用图表,除了可以选择devexpress或者oxyplot之类的专为wpf开发的图表控件之外,还可以考虑使用 WebBrowser+ECharts 来完成复杂的图表展示,其展示效果不亚于前者。 本文介绍了 WP...

wf824284257的博客 1万+

【知识点总结】NoSQL数据库技术

NoSQL基础部分 一、NoSQL相关概念 1、NoSQL定义 Not only SQL 2、时间单位 1s=103ms=106um=10^9ns 3、存储数据单位 B、KB、MB、TB、PB、EB、ZB、YB 二、数据库分类 1、TRDB数据库 2、NoSQL数据库 键值数据库 文档数据库 列族数据库 图数据库 其他数据库 3、NewSQL 三、 1、帽子定理 一致性 可用性 分区容错性 2、ACID 原子性 一致性 隔离性 持久性 3、BASE 基本可用 软状态 最终一致性 四、NoSQ

weixin_43983431的博客 2803

Doris Streamloader安装教程

Doris Streamloader 是一款用于将数据导入 Doris 数据库的专用客户端工具。本文介绍其在centos7环境下的安装过程

qq_44540985的博客 1089

计算机视觉之姿态识别(原理+代码实操)

计算机视觉中的姿态识别原理+模型介绍,同时通过代码实操简单的演示基于mediapipe的单人姿态识别。

输出既学习 3万+

HBase原理 | HBase分区影响与合理分区设置

前段时间总结了一篇关于HBase由于分区过多导致集群宕机的文章,感兴趣的同学可以点击原文《HBase案例 | 20000个分区导致HBase集群宕机事故处理》阅读参考。本文重点参考HBase官网,从分区过多这个角度出发,进一步聊一聊HBase分区过多的影响以及单节点合理分区数量等。 HBase 分区概念 接触过HBase的同学都知道,HBase每张表在底层存储上是由至少一个Region组成,Region实际上就是HBase表的分区。HBase新建一张表时默认Region即分区的数量为1,一般在生产环境中我

mojolang 3727

一文带你看懂SAP-HANA的基本架构与原理

创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥创作不易,希望大家一键三连支持!!!♥♥♥。

丷江南南的博客 5070

分布式存储系统——HBase

一、HBase简介 Google三驾马车:GFS、MapReduce和BigTable代表Google针对大数据存储与处理提出的三种框架。其中,GFS是面向大规模数据密集型应用的、可伸缩的分布式文件系统(HFDS);MapReduce是处理海量数据的分布式并行计算的执行框架(MapReduce);BigTable是处理海量数据的分布式结构化数据存储系统。 因为BigTa...

葱葱那年 1795

Neo4j 智能供应链应用源代码简析

本文简析Neo4j智能供应链应用的源代码,让你也可以快速开发自己的供应链应用。

Neo4j 开发者博客 1679

手把手教你学Simulink——基于Simulink的无感FOC(滑模观测器+PLL)实战

本文详细介绍了基于Simulink的无感FOC(滑模观测器+PLL)实现方法。主要内容包括:1)SMO+PLL原理精讲,阐述滑模观测器核心思想和PLL的作用;2)系统架构全景图展示;3)Simulink建模全流程,从基础FOC框架到SMO和PLL模块的实现;4)关键参数整定指南和工程实践要点;5)仿真结果分析及常见问题解决方案。该方法可有效替代机械传感器,降低成本并提高可靠性,适用于空调压缩机、电动汽车水泵等工业场景。文章还提供了详细的调试建议和动手实践指导。

MHD0815的博客 83

HBase基本概念与基本使用

1. HBase简介 1.1 什么是HBase HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。 HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比...

Swordfall的博客 305

大数据开发工程师必备面试题与解答

大数据开发岗位一直是互联网行业的热门方向,面试过程中既考察基础知识,也关注实际项目经验和问题解决能力。本文整理了等核心组件相关的高频面试题及参考解答,帮助大家高效准备面试。大数据面试不仅考察基础理论,更看重项目经验与问题解决能力。本文涵盖了等核心知识点及调优思路,希望能帮助你在面试中游刃有余。

X2829352498的博客 302

分布式NoSQL列存储数据库Hbase(一)

分布式NoSQL列存储数据库Hbase(一) Hbase功能及应用场景 功能 Hbase是一个分布式的NoSQL数据库,能实现随机实时的大量数据的读写 大数据存储:分布式 + HDFS 实时数据读写 应用场景 电商:实时推荐 金融:实时风控、实时征信统计 交通:实时车辆监控 游戏:实时记录所有操作 Hbase设计思想 设计思想:冷热数据分离,实时计算中,对当前最新的数据进行读取处理应用 冷:大概率不会被用到的数据 即在实时架构中,已经产生很久的数据 热大概率会用到的数据 即在实

红叶的博客 741

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

分布式NoSQL列存储数据库Hbase(一)Hbase的功能与应用场景、基本设计思想

分布式NoSQL列存储数据库Hbase(一) 知识点01:课程回顾 离线项目为例 数据生成:用户访问咨询数据、意向用户报名信息、考勤信息 数据采集 Flume:实时数据采集:采集文件或者网络端口 Sqoop:离线数据同步:采集数据库的数据 数据存储 HDFS:分布式离线文件存储系统 Hive:离线数据仓库 将HDFS上的文件映射成了表的结构,让用户可以通过数据库和表的形式来管理大数据 数据计算 MapReduce+YARN:分布式离线数据计算 Hive:通过SQL进行分布式计算

Maynor的博客 2256

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Day26_20180604_分布式列存储NoSQL数据库HBase(一)

-》Hadoop -》数据存储:hdfs -》数据计算:MapReduce -》Hive >> 作用:构建数据仓库进行数据管理 >>hive对比Hadoop就是将文件映射成表,底层还是文件,只是加上映射关系,让文件变成了表 -》数据管理:hdfs,映射 -》提供SQL化的数据计算 -》Hbase: -》Google三篇论文: -》GFS -》MapReduce -》bigtable..

黑冰[̲̅V̲̅I̲̅P̅] 225

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

HBASE介绍和使用

HBase 是一个开源的、分布式的、面向列的非关系型数据库,它构建在 Hadoop 文件系统(HDFS)之上,为大数据存储和处理提供了高可靠性、高可扩展性和高性能的解决方案。在这个示例中,我们模拟了获取服务器标识和 CPU 指标值的过程,然后根据当前时间生成行键,并将数据插入到 HBase 表中。通过以上方法,就可以使用 HBase 按时间窗方式每 5 分钟记录和存储 CPU 指标数据,并进行查询和分析。按时间窗方式记录,每5分钟记录一次CPU指标,hbase实现。与 Hadoop 生态系统集成。

莫凡的博客 1543

大数据-什么是hbase?&&hbase的行存储及列存储&&关系数据库和非关系型数据库的优劣

一、什么是HBASE? HBASE是Apache提供的基于Hadoop的、分布式的、可扩展的、能够存储大量数据的非关系型数据库 基于Google的论文《BigTable》设计实现 区别于传统数据库的行存储,HBASE是面向列进行存储,底层基于Key-Value结构存储 HBASE能够提供低延迟的数据查询能力,其原因是底层充分利用了缓存机制以及复杂的数据结构和算法来实现 二、HBASE的行存储和列存储 行存储在磁盘上的存储是连续的;列存储在磁盘上的存储是不连续的 从写入性能上对比,写入次数

weixin_47055922的博客 2879

NoSQL数据库简单介绍

一、NoSQL概述 NoSQL,泛指非关系型的数据库。传统的关系型数据库如MySQL、SQL Server、Oracle等都是将复杂的数据结构归结为简单的二元关系(即二维表形式),能够使用SQL语句进行复杂的查询并且支持事务。但是随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的社交网络类型的web2.0纯动态网站,面临着很多诸如在巨大数据量下查询缓慢,单一的关系型数据模型难以应对数据种类复杂等情况。这时就需要用到NoSQL的数据库了。 二、NoSQL

雪月清的博客 1万+

Hbase分布式列存储数据库

Hbase--分布式列存储NOSQL数据库 HBase 本质上是一个数据模型,可以提供快速随机访问海量结构化数据。利用 Hadoop 的文件系统(HDFS)提供的容错能 力。它是 Hadoop 的生态系统,使用 HBase 在 HDFS 读取消费/随机访问数据,是 Hadoop 文件系统的一部分。 HBase ...

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 1793

NoSQL数据库详细介绍

NoSQL,意思是"不仅仅是 SQL",指的是非关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。NoSQL 用于超大规模数据的存储。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

Java+GO+JS全栈工程师-鹤冲天的博客:编程辅导~商务合作~技术交流 1万+

非关系型数据库NOSQL

介绍不同于传统关系型数据的非关系型数据库相关知识。

小发菜 1703

分布式NoSQL列存储数据库Hbase操作(二)

Hbase的介绍Hbase的设计概念数据库:Namespace表:Table任何一张表,都属于某个NS在访问表时,除了default的Namespace中的表,其他所有Namespace的表在使用时,必须加上NS名称表:分布式表行:Rowkey列:column family : column,唯一标识一列支持多版本:一列中可以存储多个版本的值,通过时间戳来区分,列族级别的属性Hbase架构组成。

Maynor的博客 1926

NoSQL综述及HBase基础

文章目录一.NoSQL1.什么是NoSQL2.NoSQL和关系型数据库对比如下表3.NoSQL和BI、大数据的关系二.Hbase1.概述2.HBase发展历史3.应用场景3.1.增量数据-时间序列数据3.2.信息交换-消息传递3.3.内容服务-Web后端应用程序3.4.HBase应用场景示例4.Apache HBase生态圈5.HBase分布式环境部署见如下链接6.HBase架构7.HBase Shell8.使用Java API操作HBase 一.NoSQL 1.什么是NoSQL NoSQL:not onl

sun_0128的博客 1万+
上一篇: 浅谈OLTP与OLAP及事务操作
下一篇: 分布式NoSQL列存储数据库HBASE(二)
是番茄鱼啊
博客等级 码龄6年 3粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值