随笔- 100  文章- 0  评论- 3  阅读- 30413 

  Hbase的应用场景及特点

  Hbase的概念与定位

  Hbase的架构体系与设计模型

  Hbase的安装部署

  Hbase的Shell基本使用

 

  使用nppFtp在notepad++上操作。

 

一:Hbase的应用场景及特点

1.能做什么

  海量数据存储

  准实时查询

  

2.实际业务场景

  交通:GPS里的数据

  金融:刷卡,交易信息

  电商:物流,浏览日志信息

  移动

  

3.Hbase的特点

  容量大:可以有百亿行,百万列。数据矩阵横向和纵向两位维度支持的数据量都非常具有弹性

  面向列:面向列的存储和权限控制,并支持独立检索。列式存储,其数据在表中是按照某列存储的,这样在查询少数几个字段的售后,可以大大减少读取的数据量

  多版本:每一个列可以存储多个版本version

  稀疏性:为空的列并不占用存储空间

  扩展性:底层依赖于HDFS

  高可靠性:WAL机制保证了数据写入时不会因为集群异常而导致写入数据丢失;replication机制保证了集群出现严重问题时,数据不会发生丢失或者损坏。而且底层的hdfs也有备份。

  高性能:底层的LSM数据结构和rowkey的有序排列等架构上的独立设计,使得非常高的写入性能。region切分,主键索引,缓存机制使得hbase在海量数据下具有一定的随机读取性能,该性能针对rowkey的查询能够达到毫秒级别。

 

 

二:Hbase的概念与定位

1.官网的描述

  https://hbase.apache.org/  

  Welcome to Apache HBase™

        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.

 

  来源于谷歌的三篇论文:HDFS,MapReduce,HBase

 

2.选择合适的版本

  http://archive.apache.org/dist/hbase/

  

3.hadoop中的定位

   

 

三:Hbase的架构体系与设计模型

 1.架构体系

  

 

 

2.说明

  在HBase中,表被分割成多个更小的块然后分散的存储在不同的服务器上,这些小块叫做Region,存放Region的地方叫做RegionServer。

  Master进程负责处理不同的RegionServer之间的Region的分发。

  

  • HBase 依赖 Zookeeper 作为分布式的协调、治理工具,RegionServer、Master也会把自己的信息写到ZooKeeper中
  • HBase 还依赖 HDFS 作为底层的文件系统,HBase 的数据最终是存储到 HDFS 服务中的
  • HBase 存在两个主要进程,分别是RegionServer和Master。客户端通过RegionServer对数据进行读写操作,而RegionServer会负责与 HDFS 进行数据交互,RegionServer会实时向Master报告自身状态及region等信息。  Master知道全局的RegionServer运行情况,可以控制RegionServer的故障转移和region的切分。Master相当于是RegionServer集群的管理者,并且任何时刻只有一个Master在运行。
  • Zookeeper作为协调工具可以帮助选举出一个Master作为集群的总管,并保证在任何时刻总有唯一一个Master在运行,这就避免了Master的“单点故障”的问题

 

  master:

  • 主要负责表和Region的管理工作
  • 管理客户端对表的增加、删除、修改、查询等操作
  • 实现不同RegionServer之间的负载均衡
  • 在Region分裂或合并后,负责重新调整Region的分布
  • 对发生故障失效的RegionServer上的Region进行迁移

  

  regionserver:

  • RegionServer是HBase中最核心的模块,负责维护分配给自己的Region,并响应用户的读写请求。
  • 用户读写数据过程:用户写入数据时,被分配到相应Region服务器去执行,用户数据首先被写入到MEMStore和Hlog中,只有当操作写入Hlog之后,commit()调用才会将其返回给客户端当用户读取数据时,Region服务器首先访问MEMStore缓存,如果找不到,再去磁盘上面的StoreFile中寻找
  • 缓存的刷新:系统会周期性地把MemStore缓存里的内容刷写到磁盘的StoreFile文件中,清空缓存,并在Hlog里面写入一个标记每次刷写都生成一个新的StoreFile文件,因此,每个Store包含多个StoreFile文件。每个Region服务器都有一个自己的HLog 文件,每次启动都检查该文件,确认最近一次执行缓存刷新操作之后是否发生新的写入操作;如果发现更新,则先写入MemStore,再刷写到StoreFile,最后删除旧的Hlog文件,开始为用户提供服务。
  • StoreFile的合并:每次刷写都生成一个新的StoreFile,数量太多,影响查找速度、调用Store.compact()把多个合并成一个合并操作比较耗费资源,只有数量达到一个阈值才启动合并

 

 

3.细化的架构体系

  

 

 4.表结构模型

  

 

  说明:

  • 该表中包含两行:com.cnn.www和com.example.www
  • 有三个列簇:contents、anchor和people
  • 第一行(com.cnn.www)拥有5个版本,第二行(com.example.www)拥有1个版本
  • 对于第一行(com.cnn.www):contents列簇中包含一列:contents:html该列的值为某个网站的html内容anchor列簇中包含两列:anchor:和anchor:列的值为列的值为CNN.compeople列簇中没有任何列
  • 对于第二行(com.example.www):contents列簇中包含一列:contents:html该列的值为一段html,anchor列簇中没有任何列people列簇中包含一列:people:author该列的值为John Doe

四:Hbase的安装部署

1.版本

  jdk7

  hadoop 2.5

  zookeeper 3.4.5

  hbase 

 

2.java

  more /etc/profile

  echo $JAVA_HOME

  

 

  ##JAVA_HOME
  export JAVA_HOME=/opt/software/jdk1.8.0_181
  export PATH=$PATH:$JAVA_HOME/bin

 

3.hadoop

  下载:http://archive.apache.org/dist/hadoop/common/

  然后使用的版本:http://archive.apache.org/dist/hadoop/common/hadoop-2.5.0/

 

   1)hadoop-env.sh:

export JAVA_HOME=/opt/software/jdk1.8.0_181

 

  2)core-site.xml

  创建目录:

  

 

复制代码
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://com.jun:9000</value>
    </property>
    
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/software/hadoop-2.5.0/data/tmp</value>
    </property>
复制代码

 

   3)hdfs-site.xml

复制代码
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    
    <property>
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>
复制代码

 

  4)slaves

com.jun

 

  格式化:

 bin/hdfs namenode -format

  效果:

   

 

 

   

  启动命令:

sbin/hadoop-daemon.sh start namenode
sbin/hadoop-daemon.sh start datanode

  

  页面访问:

  http://192.168.19.131:50070/dfshealth.html#tab-overview

  

 

 

 4.zookeeper

  使用的版本:apache-zookeeper-3.5.7-bin.tar.gz

  1)创建目录

mkdir zkData

 

  2)修改zoo.cfg

dataDir=/opt/software/apache-zookeeper-3.5.7-bin

server.1=com.jun:2888:3888

 

  3)创建mid

  

 

 

  启动:

bin/zkServer.sh start

  

 

 

5.hbase

  版本0.98.20

  http://archive.apache.org/dist/hbase/0.98.20/

 

  1) 解压

tar -zxvf hbase-2.0.0-bin.tar.gz -C /opt/software/

 

  2)hbase-env.sh

export JAVA_HOME=/opt/software/jdk1.8.0_181

export HBASE_MANAGES_ZK=false

 

  3)hbase-site.xml

复制代码

<property>
  <name>hbase.zookeeper.quorum</name>
  <value>com.jun</value>
</property>
<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>
<property>
  <name>hbase.rootdir</name>
  <value>hdfs://com.jun:9000/hbase</value>
</property>
<property>
  <name>hbase.tmp.dir</name>
  <value>/opt/software/hbase-2.0.0/data/tmp</value>
</property>

复制代码

 

   4)regionServices

com.jun

 

  启动:

 bin/start-hbase.sh 

 

   页面访问:

  http://192.168.19.131:60010/master-status

  

 

 五:基本命令的使用

1.进入客户端

bin/hbase shell

 

2.基本表操作

  cretae enable describe is_disabled is_enabled Disable drop list

 

  创建表:

  

 

 

create 'test','info'

list

scan 'test'

 

   添加数据:

  

 

 

put 'test','0000000001','info:username','tom'

 

   查看:

  

 

 

3.表数据的操作

  count,put,delete,scan,get,truncate

  

 

 

 

 

 

 

 posted on   曹军  阅读(78)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示