HBase环境部署

作者: 心_的方向 | 来源:发表于2016-11-24 21:50 被阅读390次
3.png ](https://img.haomeiwen.com/i3068725/574284fb7d9f4eac.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
HBase可以被看做一个主-从架构的数据库
  • ** Master **:为HBase的主节点,用来协调客户端应用程序和RegionServer的关系,监控和记录数据库表的元数据的变化。一般来讲一个集群中有多个Master,而且一般和Hadoop中的NameNode运行同一主机上。
  • ** RegionServer **:为HBase的从节点,用region的形式存储实际的表。region是HBase表的基础单元。一般和Hadoop中的DataNode运行在同一主机上。
  • ** ZooKeeper **:用来选举集群主节点Master,维持只有一个master提供访问和运行,同时存储集群的元数据。

HBase的数据存储模型

2.png
** 行健(rowkey) **:是HBase表中每个记录的主键,可以提高查找 功能的速度。
** 列簇(column family) **:是一个字符串名称,包含一个或者多个列,这样做也是为了提高检索速度(检索所需的列的时间更快)。
** 列 **:列一定属于某一个列簇。
** 版本(version) **:一个单元格可以保存多个值,一个version代表着一个单元格可以同时存储几个值。
** 时间戳(timestamp) **:对于每条插入的数据,当前的时间戳与值是相关的,它表示了数值插入到这个单元格中的时间。
** 单元格 :最小的存储单元,是一行的一个列中的实际值, 值都是用字节数组存储的 **
** namespace **:hbase中数据库的概念,表名对应有一个namespace

综上所述,插入一个单元格数据必须包含
** rowkey+columnfamily(列簇名)+columname(列名)+timestamp:value **
其中rowkey+列簇名+列名 确定一个单元格;
rowkey+列簇名+列名+timestamp 确定一个单元格中的一个值。

安装部署伪分布式HBase

  1. 启动hadoop


    3.png
  2. 启动zookeeper


    4.png
  3. 下载解压hbase


    5.png
  4. 修改配置文件
  • hbase-env.sh文件
    export JAVA_HOME=/opt/modules/jdk1.7.0_67
# Tell HBase whether it should manage it's own instance of Zookeeper or not.
    export HBASE_MANAGES_ZK=false
  • hbase-site.xml文件
  <property >
        <!-- hbase临时存储数据的目录 -->
        <name>hbase.tmp.dir</name>
        <value>/opt/modules/hbase-0.98.6-hadoop2/datas</value>
  </property>
  <property >
        <!-- hbase在hdfs存储表的根目录 -->
        <name>hbase.rootdir</name>
        <value>hdfs://bigdata-00:8020/hbase</value>
  </property>
  <property >
        <name>hbase.cluster.distributed</name>
        <value>true</value>
  </property>
  <property>
        <!-- 配置zookeeper节点的位置 -->
        <name>hbase.zookeeper.quorum</name>
        <value>bigdata-00</value>
 </property>
  1. 启动hbase
$ bin/hbase-daemon.sh start master
$ bin/hbase-daemon.sh start regionserver
6.png

登陆web界面查看(bigdata-00:60010)


7.png

HBase中shell的基本使用

进入hbase命令行bin/hbase shell
list_namespace查看有哪些namespace

8.png
create_namespace 'test'创建一个namespace,后面接namespace名
describe_namespace 'test'描述一个namespace
9.png
drop_namespace 'test'删除一个namespace
list查看有哪些表
create 'ns:表名','列簇名'
describe 'ns:表名'显示表的详细信息
10.png
drop 'ns:tbname'删除一个表
put 'ns:tbname','行键','列簇:列名','值'插入一个数据
get 'ns:tbname','行键','列簇','列'获取一个单元格的数据,如果不加后面的列簇和列,即为获取一行的数据。
scan 'ns:tbname'查看一个表的所有数据
11.png
scan 'nstest:tb1',{STARTROW => '20161119_10001',STOPROW => '20161119_10003'}scan+过滤条件查询数据
delete 'ns:tbname','键值','列簇:列名'删除一个值

HBase表的物理模型

HBase在实际的存储中,每个列簇存储在单独的一个HDFS上。表格中的行都是按照RowKey字典序列进行排序的,并且表格在行的方向上被分割为多个Region。如下图:


12.png

如下图,表A按照行被分为相等大小的4个Region,这些Region分别被RegionServer管理,但是每个RegionServer可以管理不同表格中的Region。为了负载尽量相同,每个RegionServer管理的Region数据基本上是相同的。


13.png
15.png
Region是按照大小进行分割的,每个表最开始只有一个Region,随着数据增多,Region不断增大,当增大到一个阈值的时候,Region就会等分成两个新的Region,之后的过程也同样,随着数据量的增加,不断分割Region。
14.png

Region虽然是分布式存储的最小单元,但不是存储的最小单元

  • 一个Region由一个或多个Store组成,每个Store保存一个列簇
  • 每个Store又由一个memStore和0到多个StoreFile
  • memStore存储在内存中,StoreFile存储在HDFS中
  • memStore是内存中的写入缓冲区,HBase写入数据到硬盘之前是将数据累积在memStore中,当这个内存缓冲区写满后将数据写到StoreFiel上。
  • 每个Region包含一个HLOG,它是预写式日志WAL,但存储数据的时候只有当把数据写入到WAL和每个Store中的memStore才算成功,这样可以保证数据的安全性。


    16.png

相关文章

  • HBase分布式部署实践

    一、Hbase的分布式部署 Hbase实践官方文档CSDN-Hbase分布式部署 依赖环境 Hadoop,开启hd...

  • HBase Shell 练习

    1. 环境准备 成功启动HBase,假如你还没有成功地部署HBase,可以先看下:HBase部署入门指南 2. ...

  • GeoMesa HBase 快速起步

    目标 快速搭建起 GeoMesa HBase 环境,跑通官方示例程序。 步骤清单 搭建 HBASE 环境 部署 G...

  • HBase | 集群部署

    集群部署 环境准备 java环境、zookeeper环境、hadoop环境 hadoop-jdk-hbase版本需...

  • HBase环境部署

    ** Master **:为HBase的主节点,用来协调客户端应用程序和RegionServer的关系,监控和记录...

  • 4.搭建HBase

    Hbase安装部署基本步骤: 1、在Hadoop配置的基础上,配置环境变量HBASE_HOME、hbase-env...

  • Module-Hbase技术文档

    Hbase技术文档.md tags: 大数据 底层存储 分布式 Hbase 2019年 安装部署 环境依赖说明: ...

  • SuperMap iDesktopX创建HBase数据源并导入数

    需提前部署HBase集群,HBase环境搭建请查看文章https://www.jianshu.com/p/d9c0...

  • Kylin即席查询02:Kylin 安装

    1.Kylin 依赖环境 安装 Kylin 前需先部署好 Hadoop、Hive、Zookeeper、HBase,...

  • HBase生产环境部署指南

    最近集群要迁移,本来想在网上找到个相对完整的HBase生产环境部署教程来参考一下,无奈,网上基本上都是教你搭建测试...

网友评论

    本文标题:HBase环境部署

    本文链接:https://www.haomeiwen.com/subject/udubpttx.html