Hbase简介--初学者最好看一下这些

Hbase简介

HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE技术可在廉价PC Server上搭建起大规模结构化存储集群。利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理 HBase中的海量数据,利用Zookeeper作为其分布式协同服务。HBASE主要用来存储非结构化和半结构化的松散数据(列存NoSQL数据库)。

在创作HBASE时的目标便是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。

同时HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。

传统数据库遇到的问题:

1.数据量很大的时候无法存储

2.没有很好的备份机制

3.数据达到一定数量开始缓慢,很大的话基本无法支撑

HBASE优势:

1.线性扩展,随着数据量增多可以通过节点扩展进行支撑

2.数据存储在hdfs上,备份机制健全

3.通过zookeeper协调查找数据,访问速度块。

4.写入性能高,且几乎可以无限扩展。

5.海量数据下(100TB级别表)的查询依然能保持在5ms级别。

6.存储容量大,不需要做分库分表,切勿维护简单。

7.表的列可以灵活配置,1行可以有多个非固定的列。

 

 

hbase与关系型数据库的区别

 

HBase

RDBMS(关系型数据库)

硬件架构

类似于Hadoop的分布式集群,硬件成本低廉

传统的多核系统,硬件成本昂贵

容错性

由软件架构实现,由于采用多节点,所以不存在一点或几点宕机

一般需要额外硬件设备实现HA

数据库大小

PB

GB、TB

数据排布方式

稀疏的、分布的多维的Map

以行和列组织

数据类型

Bytes

丰富的数据类型

事务支持

ACID只支持单个Row级别

全面的ACID支持,对Row和表

查询语言

只支持Java API(除非与其他框架一起使用,如Phoenix、Hive)

SQL

索引

只支持Row-Key(除非与其他框架一起使用,如Phoenix、Hive)

支持

吞吐量

百万查询/每秒

数千查询/每秒

HBase在Hadoop生态系统所处位置

1.环境准备

本次教学基于centos 7.1系统

本次平台搭建需要三台云主机:

master作为 client 客户端

slave1作为 hive server 服务器端

slave2用于安装 mysql server

同时需要软件包:

hbase-1.2.4-bin.tar.gz

下载地址:https://hbase.apache.org/

jdk-8u171-linux-x64.tar.gz

下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

2.基础环境搭建

首先我们需要将java包解压并配置生效java环境变量(前面章节有)

然后我们配置hbase环境变量

vi /etc/profile

export HBASE_HOME=/usr/hbase/hbase-1.2.4

export PATH=$PATH:$HBASE_HOME/bin

生效下环境变量

source /etc/profile

然后创建hbase安装目录/usr/hbase,然后将hbase压缩包解压到安装目录

tar -zxvf hbase-1.2.4-bin.tar.gz -C /usr/hbase/

3.hbase配置 

修改配置文件

配置vi /usr/hbase/hbase-1.2.4/conf/hbase-env.sh 

export HBASE_MANAGES_ZK=false

export JAVA_HOME=/usr/java/jdk1.8.0_171

export HBASE_CLASSPATH=/usr/hadoop/hadoop-2.7.3/etc/hadoop/

配置vi /usr/hbase/hbase-1.2.4/conf/hbase-site.xml

<configuration>

        <property>

                <name>hbase.rootdir</name>

                <value>hdfs://master:9000/hbase</value>

        </property>

        <property>

                <name>hbase.cluster.distributed</name>

                <value>true</value>

        </property>

        <property>

                <name>hbase.master</name>

                <value>hdfs://master:6000</value>

        </property>

        <property>

                <name>hbase.zookeeper.quorum</name>

                <value>master,slave1,slave2</value>

        </property>

        <property>

                <name>hbase.zookeeper.property.dataDir</name>

                <value>/usr/zookeeper/zookeeper-3.4.10</value>

        </property>

</configuration>

 配置vi /usr/hbase/hbase-1.2.4/conf/regionservers

slave1

slave2

拷贝文件到hdfs

cp /usr/hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml /usr/hbase/hbase-1.2.4/conf/

cp /usr/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml /usr/hbase/hbase-1.2.4/conf/

分发hbase

scp -r /usr/hbase/ slave1:/usr/

scp -r /usr/hbase/ slave2:/usr/

4.启动hbase

在保证hadoop和zookeeper启动的情况下我们输入

/usr/hbase/hbase-1.2.4/bin/start-hbase.sh

我们的hbase就启动了

使用jps查看进程

Master节点出现HMaster

Slaver1节点出现HRegionServer

5.命令解析

create //创建表 

create ‘表名’,‘列族名’ //创建user表,列族名为info 

例如:create 'user', 'info'

 

PUT/UPDATE //插入数据 

put ‘表名’,‘列族名’,‘插入内容’ //创建表,并向列族添加数据
例如:put 'user', 'info:name', 'zhangsan' 

 

get  //查询。依据ROWKEY进行查询,速度最快 

get ‘表名’,‘ROWKEY’ //在表内依据ROWKEY查询数据
例如:get 'user', '100001' 

 

scan //全表扫描,也就测试用用,实际慎用 

scan ‘表名’ //查询该表
例如:scan 'user' 

 

scan range  //范围查询

scan ‘表名’,{STARTROW => ‘范围’}  //查询该表

例如:scan 'user' , {STARTROW => ‘100001’} 

6.hbase实例讲解

我们将要创建一个以bigdata为表名,info为列族的数据表,创建完成查看后删除

1.我们使用hbase创建表‘bigdata’列族为‘info’创建完成后查看表是否创建成功。

[root@master ~]# hbase shell

hbase(main):001:0> create 'bigdata','info';

hbase(main):002:0> list

TABLE                                                                                                                                                                                      

bigdata                                                                                                                                                                                     

1 row(s) in 0.0060 seconds

=> ["bigdata"]

2. 删除表bigdata’,并list查询。

hbase(main):002:0> list

TABLE                                                                                                                                                                                       

bigdata                                                                                                                                                                                     

1 row(s) in 0.0890 seconds

 

=> ["bigdata"]

hbase(main):003:0> disable 'bigdata'

0 row(s) in 4.4600 seconds

 

hbase(main):004:0> drop 'bigdata'

0 row(s) in 2.3400 seconds

 

hbase(main):005:0> list 'bigdata'

TABLE                                                                                                                                                                                      

0 row(s) in 0.0070 seconds

 

=> []

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值