大数据笔记(十三)——常见的NoSQL数据库之HBase数据库(A)

一.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_HOMEPATH=$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 => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODIN G => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATI ON_SCOPE => '0'} {NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING=> 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATIO N_SCOPE => '0'} 2 row(s) in 0.2540 secondshbase(main):003:0> describe 'students' Table students is ENABLED students COLUMN FAMILIES DESCRIPTION {NAME => 'grade', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODIN G => 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATI ON_SCOPE => '0'} {NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING=> 'NONE', TTL => 'FOREVER', COMPRESSION => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLICATIO N_SCOPE => '0'} 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','24'
put 'students','stu001','grade:math','85'
put 'students','stu002','info:name','Mary'
put 'students','stu002','info:age','28'

查询数据:

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 {@Testpublic 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();}@Testpublic 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对象,参数:rowKeyPut 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();}@Testpublic 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();}@Testpublic 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,结果(最后一个)

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/lingluo2017/p/8541387.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571112.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux内核网络钩子函数使用,Linux内核IOCTL网络控制框架实现实例分析

4.6、inet_ioctl函数由于inet_ioctl函数内容分支很多,但功能、处理不难理解,所以我把一些不常见的内容都省去,挑简单重要的说,完全在于抛砖引玉:static int inet_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg){…switch(cmd){case FIOSETOWN://设置属主cas…

(转)递归转非递归的思路和例子

转自&#xff1a;http://blog.51cto.com/cnn237111/1241956 某些算法逻辑&#xff0c;用递归很好表述&#xff0c;程序也很好写。理论上所有的递归都是可以转换成非递归的。如果有些场合要求不得使用递归&#xff0c;那就只好改成非递归了。 通常改成非递归算法的思路&#xff…

iOS - 富文本

iOS--NSAttributedString超全属性详解及应用&#xff08;富文本、图文混排&#xff09; ios项目中经常需要显示一些带有特殊样式的文本&#xff0c;比如说带有下划线、删除线、斜体、空心字体、背景色、阴影以及图文混排&#xff08;一种文字中夹杂图片的显示效果&#xff09;。…

pdf.js 文字丢失问题 .cmaps

使用pdf.js 展示pdf文件 需求&#xff1a;电子发票类的pdf文件&#xff0c;以base64流的形式请求到&#xff0c;在浏览器中展示pdf文件 遇到的问题&#xff1a; 正常展示后&#xff0c;部分文字无法正常显示&#xff0c; 正常显示如下&#xff1a; 文件目录&#xff1a; js:fun…

超过4g的文件怎么上传到linux,怎么免费上传大于4G的文件到百度云 大于4G的文件不开会员怎么上传到百度云...

4G管家appv1.0 安卓版类型&#xff1a;系统工具大小&#xff1a;13.1M语言&#xff1a;中文 评分&#xff1a;10.0标签&#xff1a;立即下载百度云可以非常方便大家存储一些大文件资料&#xff0c;而且百度云的容量也非常高&#xff0c;不过如果你是普通用户的话要想上传大于4g…

android 屏幕坐标色彩,Android自定义View实现颜色选取器

Android 自定义View 颜色选取器&#xff0c;可以实现水平、竖直选择颜色类似 SeekBar 的方式通过滑动选择颜色。效果图xml 属性1.indicatorColor 指示点颜色2.indicatorEnable 是否使用指示点3.orientation 方向horizontal 水平vertical 竖直使用复制 \library\src…\ColorPick…

linux右键菜单的截图,Linux: 给右键菜单加一个“转换图片为jpg格式”

Linux上通常都会安装imagemagick这个小巧但又异常强大的工具。这个软件提供了一系列很好用的功能。这里说一说如何使用它的convert命令转换图片为jpg格式&#xff0c;以及如何把它添加到Thunar的右键菜单。convert转换图片为jpg格式用起来超简单&#xff1a;convert -format jp…

eclipse实现Android登录功能,eclipse开发安卓登录

划线的地方怎么解决啊&#xff1f;有没有大佬知道如何修改package com.example.login;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.content.SharedPreferences.Edito…

android tcp 最优窗口,Android 面试必备 - 计算机网络基本知识(TCP,UDP,Http,https)...

简介HTTP协议(超文本传输协议)和 UDP(用户数据包协议)&#xff0c;TCP 协议(传输控制协议)TCP/IP是个协议组&#xff0c;可分为四个层次&#xff1a;网络接口层、网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。在传输层中有TCP协议与UDP…

c语言10个数如何求最大值,C语言,输入10个数怎样输出10个数中最大值,最小值(大一计算机)...

可以参考下面的代码&#xff1a;#include int main(){int loop 10;int min, max, value;do{printf("输入整数:");scanf("%d", &value);if (loop10) {max min value; loop--; continue;} else {if (value > max) max value;if (value loop--;}} …

android波纹效果弹窗,Android自定义View实现波纹效果

Android自定义View实现波纹效果时间&#xff1a;2017-05-27 来源&#xff1a;移动互联网学院1、引言&#xff1a;随着Android智能手机的普及&#xff0c;Android应用得到了大力支持&#xff0c;而Android应用的市场前景也是非常的强势。在Android应用的实际开发中&#xff…

图像滤镜艺术---Oilpaint油画滤镜

图像滤镜艺术---Oilpaint油画滤镜 原文:图像滤镜艺术---Oilpaint油画滤镜Oilpaint油画滤镜 图像油画效果实际上是将图像边缘产生一种朦胧&#xff0c;雾化的效果&#xff0c;同时&#xff0c;将一定的边缘模糊化&#xff0c;这样图像整体上看去像素与像素之间就像雾一样随机呈现…

转:数据库收缩

1. 数据库的相关属性 在MS中创建数据库时会为数据库分配初始的大小&#xff08;如下图&#xff1a;数据库和日志两个文件&#xff09;&#xff0c;随着数据库的使用文件会逐渐增大。数据库文件大小的增加有两种方式&#xff1a; 自动增长&#xff1a;在自动增长中可以设置每次的…

懒加载与预加载

前端性能优化中图片资源的优化。 1.懒加载&#xff08;延迟加载&#xff09; 1.图片进入可视区域之后请求图片资源&#xff1b; 2.对于电商等图片较多&#xff0c;页面很长的业务场景很适用&#xff1b; 3.可以减少无效资源的加载&#xff1b; 4.并发加载的资源过多会阻塞js的加…

8.使用Exists监控ZNode的三大Change事件

一、 zookeeper是一个分布式的协调程序&#xff08;所有程序都是通过订阅它来相互感知&#xff09;1. tcp&#xff08;长链接&#xff09; watcherserver -》clientclient -》server2. Driver 中的方法 exists() 监控一个znode的 CURD 的操作。client1 client2 同时订阅 baidu…

[SDOI2016]储能表

Description 有一个 n 行 m 列的表格&#xff0c;行从 0 到 n−1 编号&#xff0c;列从 0 到 m−1 编号。每个格子都储存着能量。最初&#xff0c;第 i 行第 j 列的格子储存着 (i xor j) 点能量。所以&#xff0c;整个表格储存的总能量是&#xff0c; 随着时间的推移&#xff0…

html对图片轮播脚本怎么调用,【jquery前端开发】可调整的幻灯片(图片轮播)

第一次写博客&#xff0c;希望接下来写的东西 或多或少能帮到些人&#xff0c;虽然这些东西都是一些大神前辈们写了无数遍的东西&#xff0c;但我尽量以一名小白的视角把代码写得清楚点&#xff0c;好心人的就给点赞吧。1.前期准备这是我们编写代码前必须要做的事&#xff0c;在…

计算机主机信息怎么看,本机电脑硬件配置信息怎么看?Win7/Win10查看详细电脑配置方法...

电脑配置决定了一台电脑的性能好坏&#xff0c;如果电脑配置没有达到游戏或者软件的要求&#xff0c;那么肯定无法流畅运行的。对于一些小白用户不知道如何查看电脑硬件配置&#xff0c;那么本机电脑硬件配置信息怎么看&#xff1f;下面装机之家小编分享一下Win7/Win10查看详细…

《Java技术》第一次作业

&#xff08;一&#xff09;、学习总结 1.在java中通过Scanner类完成控制台的输入&#xff0c;查阅JDK帮助文档&#xff0c;Scanner类实现基本数据输入的方法是什么&#xff1f;不能只用文字描述&#xff0c;一定要写代码&#xff0c;通过具体实例加以说明。 文本扫描类Scanner…

计算机主机开机为什么显示器不开,电脑开机后显示器不亮怎么办?电脑开机后显示器没反应的解决办法...

电脑开机后显示器不亮怎么办&#xff1f;电脑开机故障屡见不鲜&#xff0c;最近又有用户反馈开机问题了&#xff0c;一用户反馈说&#xff0c;电脑主机是可以正常开机的&#xff0c;但就是显示器不亮&#xff0c;这是怎么回事呢&#xff1f;出现这种情况可能是显示器或主机故障…