一.HBase的表结构和体系结构

  1.HBase的表结构

  把所有的数据存到一张表中。通过牺牲表空间,换取良好的性能。

  HBase的列以列族的形式存在。每一个列族包括若干列

  2.HBase的体系结构

  主从结构:

    主节点:HBase

    从节点:RegionServer 包含多个Region,一个列族就是一个Region

HBase在ZK中保存数据
(*)配置信息、HBase集群结构信息
(*)表的元信息
(*)实现HBase的HA:high avaibility 高可用性

二.搭建HBase的本地模式和伪分布模式

  1.解压:

tar -zxvf hbase-1.3.1-bin.tar.gz -C ~/training/

  2.设置环境变量: vi ~/.bash_profile

HBASE_HOME=/root/training/hbase-1.3.1
export HBASE_HOME PATH=$HBASE_HOME/bin:$PATH
export PATH

使文件生效:source ~/.bash_profile

  

  本地模式  不需要HDFS、直接把数据存在操作系统

hbase-env.sh

export JAVA_HOME=/root/training/jdk1.8.0_144

hbase-site.xml

<property>
<name>hbase.rootdir</name>
<value>file:///root/training/hbase-1.3.1/data</value>
</property>

  伪分布模式

hbase-env.sh 添加下面这一行,使用自带的Zookeeper

export HBASE_MANAGES_ZK=true

hbase-site.xml 把本地模式的property删除,添加下列配置

<property>
  
<name>hbase.rootdir</name>
<value>hdfs://192.168.153.11:9000/hbase</value>
</property> <property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property> <property>
<!--Zookeeper的地址-->
<name>hbase.zookeeper.quorum</name>
<value>192.168.153.11</value>
</property> <property>
<!--数据冗余度-->
<name>dfs.replication</name>
<value>1</value>
</property>

regionservers

192.168.153.11

可以在web上查看

三.搭建HBase的全分布模式和HA

在putty中设置bigdata12 bigdata13 bigdata14 时间同步:date -s 2018-03-10

主节点:hbase-site.xml

<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.153.12:9000/hbase</value>
</property> <property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property> <property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.153.12</value>
</property> <property>
<name>dfs.replication</name>
<value>2</value>
</property> <property>
<!--解决时间不同步的问题:允许的时间误差最大值-->
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>

regionservers

192.168.154.13
192.168.153.14

拷贝到13和14上:

scp -r hbase-1.3.1/ root@bigdata13:/root/training
scp -r hbase-1.3.1/ root@bigdata14:/root/training

四.HBase在Zookeeper中保存的数据和HA的实现

HA的实现:

不需要额外配置,只用在其中一个从节点上单点启动Hmaster
bigdata13:hbase-daemon.sh start master

五.操作HBase

  1.Web Console网页:端口:16010

2.命令行

  开启hbase: start-hbase.sh

开启hbase shell

建表:

hbase(main):001:0> create 'students','info','grade' //创建表
0 row(s) in 1.7020 seconds => Hbase::Table - students
hbase(main):002:0> desc 'students' //查看表结构
Table students is ENABLED
students
COLUMN FAMILIES DESCRIPTION
{NAME => 'grade', BLOOMFILTER => 'ROW', VERSIONS => '', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODIN
G => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '', BLOCKCACHE => 'true', BLOCKSIZE => '', REPLICATI
ON_SCOPE => ''}
{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING
=> 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '', BLOCKCACHE => 'true', BLOCKSIZE => '', REPLICATIO
N_SCOPE => ''}
2 row(s) in 0.2540 seconds hbase(main):003:0> describe 'students'
Table students is ENABLED
students
COLUMN FAMILIES DESCRIPTION
{NAME => 'grade', BLOOMFILTER => 'ROW', VERSIONS => '', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODIN
G => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '', BLOCKCACHE => 'true', BLOCKSIZE => '', REPLICATI
ON_SCOPE => ''}
{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING
=> 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '', BLOCKCACHE => 'true', BLOCKSIZE => '', REPLICATIO
N_SCOPE => ''}
2 row(s) in 0.0240 seconds

desc和describe的区别:

desc是SQL*PLUS语句

describe是SQL语句

分析students表的结构

查看有哪些表:list

插入数据:put

put 'students','stu001','info:name','Tom'
put 'students','stu001','info:age',''
put 'students','stu001','grade:math',''
put 'students','stu002','info:name','Mary'
put 'students','stu002','info:age',''

查询数据:

scan 相当于:select * from students

get   相当于  select * from students where rowkey=??

清空表中的数据

delete DML(可以回滚)

truncate DDL(不可以回滚)

补充:DDL:数据定义语言,如 create/alter/drop/truncate/comment/grant等
DML:数据操作语言,如select/delete/insert/update/explain plan等
DCL:数据控制语言,如commit/roollback
2、delete会产生碎片;truncate不会
3、delete不会释放空间;truncate会
4、delete可以闪回(flashback),truncate不可以闪回

truncate 'students' -----> 本质: 先删除表,再重建

日志:

Truncating 'students' table (it may take a while):
- Disabling table...
- Truncating table...
0 row(s) in 4.0840 seconds

  3.JAVA API

修改etc文件:C:\Windows\System32\drivers\etc

添加一行:192.168.153.11 bigdata11

TestHBase.java

package demo;

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.util.Bytes;
import org.junit.Test; import io.netty.util.internal.SystemPropertyUtil; /**
* 1.需要一个jar包: hamcrest-core-1.3.jar
* 2.修改windows host文件
* C:\Windows\System32\drivers\etc\hosts
* 192.168.153.11 bigdata11
* @author YOGA
*
*/
public class TestHBase { @Test
public void testCreateTable() throws Exception{
//配置ZK的地址信息
Configuration conf = new Configuration();
//hbase-site.xml文件里
conf.set("hbase.zookeeper.quorum", "192.168.153.11"); //得到HBsase客户端
HBaseAdmin client = new HBaseAdmin(conf); //创建表的描述符
HTableDescriptor htd = new HTableDescriptor(TableName.valueOf("mytable")); //添加列族
htd.addFamily(new HColumnDescriptor("info"));
htd.addFamily(new HColumnDescriptor("grade")); //建表
client.createTable(htd); client.close();
} @Test
public void testPut() throws Exception{
//配置ZK的地址信息
Configuration conf = new Configuration();
conf.set("hbase.zookeeper.quorum", "192.168.153.11"); //得到HTable客户端
HTable client = new HTable(conf, "mytable"); //构造一个Put对象,参数:rowKey
Put put = new Put(Bytes.toBytes("id001"));
//put.addColumn(family, //列族
// qualifier, //列
// value) ֵ//列对应的值
put.addColumn(Bytes.toBytes("info"), Bytes.toBytes("name"), Bytes.toBytes("Tom")); client.put(put);
//client.put(List<Put>);
client.close();
} @Test
public void testGet() throws Exception{
//配置ZK的地址信息
Configuration conf = new Configuration();
conf.set("hbase.zookeeper.quorum", "192.168.153.11"); //得到HTable客户端
HTable client = new HTable(conf, "mytable"); //构造一个Get对象
Get get = new Get(Bytes.toBytes("id001")); //查询
Result result = client.get(get); //取出数据
String name = Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")));
System.out.println(name); client.close();
} @Test
public void testScan() throws Exception{
//配置ZK的地址信息
Configuration conf = new Configuration();
conf.set("hbase.zookeeper.quorum", "192.168.153.11"); //得到HTable客户端
HTable client = new HTable(conf, "mytable"); //定义一个扫描器
Scan scan = new Scan();
//scan.setFilter(filter); 定义一个过滤器 //通过扫描器查询数据
ResultScanner rScanner = client.getScanner(scan); for (Result result : rScanner) {
String name = Bytes.toString(result.getValue(Bytes.toBytes("info"), Bytes.toBytes("name")));
System.out.println(name);
}
}
}

执行以上test,结果(最后一个)

大数据笔记(十三)——常见的NoSQL数据库之HBase数据库(A)的更多相关文章

  1. 大数据架构师必读的NoSQL建模技术

    大数据架构师必读的NoSQL建模技术 从数据建模的角度对NoSQL家族系统做了比较简单的比较,并简要介绍几种常见建模技术. 1.前言 为了适应大数据应用场景的要求,Hadoop以及NoSQL等与传统企 ...

  2. 大数据笔记(二十一)——NoSQL数据库之Redis

    一.Redis内存数据库 一个key-value存储系统,支持存储的value包括string(字符串).list(链表).set(集合).zset(sorted set--有序集合)和hash(哈希 ...

  3. 转:甲骨文发布大数据解决方案 含最新版NoSQL数据库

    原文出处: http://www.searchdatabase.com.cn/showcontent_88247.htm 以下是部分节选: 最新发布的大数据创新成果包括: Oracle Big Dat ...

  4. 大数据笔记(一)——Hadoop的起源与背景知识

    一.大数据的5个特征(IBM提出): Volume(大量) Velocity(高速) Variety(多样) Value(价值) Varacity(真实性) 二.OLTP与OLAP 1.OLTP:联机 ...

  5. 【大数据应用技术】作业九|安装关系型数据库MySQL 安装大数据处理框架Hadoop

    本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3161 1.安装MySql 按ctrl+alt+t打开终端窗口,安 ...

  6. 大数据笔记01:大数据之Hadoop简介

    1. 背景 随着大数据时代来临,人们发现数据越来越多.但是如何对大数据进行存储与分析呢?   单机PC存储和分析数据存在很多瓶颈,包括存储容量.读写速率.计算效率等等,这些单机PC无法满足要求. 2. ...

  7. 大数据笔记(十九)——数据采集引擎Sqoop和Flume安装测试详解

    一.Sqoop数据采集引擎 采集关系型数据库中的数据 用在离线计算的应用中 强调:批量 (1)数据交换引擎: RDBMS <---> Sqoop <---> HDFS.HBas ...

  8. 开源大数据技术专场(上午):Spark、HBase、JStorm应用与实践

    16日上午9点,2016云栖大会“开源大数据技术专场” (全天)在阿里云技术专家封神的主持下开启.通过封神了解到,在上午的专场中,阿里云高级技术专家无谓.阿里云技术专家封神.阿里巴巴中间件技术部高级技 ...

  9. 大数据之 ZooKeeper原理及其在Hadoop和HBase中的应用

    ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现.分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅.负载均衡.命名服务.分布式协调/通知. ...

  10. 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法

    前言 在搭建大数据Hadoop相关的环境时候,遇到很多了很多错误.我是个喜欢做笔记的人,这些错误基本都记载,并且将解决办法也写上了.因此写成博客,希望能够帮助那些搭建大数据环境的人解决问题. 说明: ...

随机推荐

  1. P1118 [USACO06FEB]数字三角形`Backward Digit Su`… (dfs)

    https://www.luogu.org/problemnew/show/P1118 看的出来是个dfs 本来打算直接从下到上一顿搜索 但是不会 看了题解才知道系数是个杨辉三角....... 这样就 ...

  2. Windows系统里Oracle 11g R2 Client(64bit)的下载与安装

    环境: windows10系统(64位) 最好先安装jre或jdk(此软件用来打开oracle自带的可视化操作界面,不装也没关系:可以安装plsql,或者直接用命令行操作) Oracle 11g 是仅 ...

  3. ubuntu 新建root用户

    1. sudo passwd :设置root用户密码 2. 切换用户 方式一:su 方式二: su root 3. 新增普通用户

  4. bfs(同一最短路径)

    http://oj.jxust.edu.cn/contest/Problem?id=1702&pid=7 题意:现在有两个相同大小的地图,左上角为起点,右下角问终点.问是否存在同一条最短路径. ...

  5. Scrapy 教程(二)-操作流程

    scrapy 是个爬虫框架,是由python编写的,用法类似 django 框架. 创建工程 在开始爬虫之前,先创建工程 scrapy startproject projectname 目录结构如下图 ...

  6. 剑指offer-二叉树的下一结点-树-python

    题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针.   思路:中序遍历,pNode节点的下一个节点根据中序 ...

  7. 公用flex类

    开发过程中,很多布局,用antd的栅格还是不灵活,flex弹性布局会更好用 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性. 注意 ...

  8. (ES6)数据处理常用工具方法收集(更新状态: on)

    1. 扁平数组转成tree结构(来源: StackOverflow的印度老哥写的) // Data Set // One top level comment var comments = [{ id: ...

  9. 你不知道的props和state

    State 与 Props 区别props 是组件对外的接口,state 是组件对内的接口.组件内可以引用其他组件,组件之间的引用形成了一个树状结构(组件树),如果下层组件需要使用上层组件的数据或方法 ...

  10. 拼接HTML代码在UIWebVIew中显示

    其原理:通过网络请求获得相关的信息,再通过手机端进行拼HTML,然后在WebView进行展示,此处还对文章中的图片增加点击效果,可以保存到相册中:文章的样式已经存在项目中,直接去调用: 1:首先了解两 ...