Hbase深入学习(六) ―― Java操作HBase

本文讲述如何用hbase shell命令和hbase java api对hbase服务器进行操作。

先看以下读取一行记录hbase是如何进行工作的,首先hbaseclient端会连接zookeeper qurom,例如hbase_config.set(“hbase.zookeeper.quorum”,”192.168.50.216”)).通过zookeeper组件client能获知哪个server管理root-region。那么client就去访问管理root的server,在meta中记录了hbase中所有表信息,可以使用scan ‘meta’命令列出你创建的所有表的相信信息,从而获取region分布的新。一旦client获取了这一行的位置信息,比如这一行属于哪个region,client将会缓存这个信息并直接访问hregionserver.久而久之client缓存的信息渐渐增多,即使不妨问,meta表也能知道去访问哪个hregionserver.hbase中包含两种基本类型的文件,一种用于存储wal的log,另一种用于存储具体的数据,这些数据都通过dfs client和分布式的文件系统hdfs进行交互实现存储。

Hbase的一些内存实现原理:

* HMaster— HBase中仅有一个Master server。
    * HRegionServer—负责多个HRegion使之能向client端提供服务,在HBase cluster中会存在多个HRegionServer。
    * ServerManager—负责管理Region server信息,如每个Region server的HServerInfo(这个对象包含HServerAddress和startCode),已load Region个数,死亡的Region server列表
    * RegionManager—负责将region分配到region server的具体工作,还监视root和meta 这2个系统级的region状态。
    * RootScanner—定期扫描root region,以发现没有分配的meta region。
    * MetaScanner—定期扫描meta region,以发现没有分配的user region。

HBase基本命令
下面我们再看看看HBase的一些基本操作命令,我列出了几个常用的HBaseShell命令,如下:

名称

命令表达式

创建表

create '表名称', '列名称1','列名称2','列名称N'

添加记录

put '表名称', '行名称', '列名称:', '值'

查看记录

get '表名称', '行名称'

查看表中的记录总数

count  '表名称'

删除记录

delete  '表名' ,'行名称' , '列名称'

删除一张表

先要屏蔽该表,才能对该表进行删除,第一步 disable '表名称' 第二步  drop '表名称'

查看所有记录

scan "表名称"

查看某个表某个列中所有数据

scan "表名称" , ['列名称:']

更新记录

就是重写一遍进行覆盖

可以进入 hbase 的shell 模式中你可以输入 help 命令查看到你可以执行的命令和对该命令的说明,例如对scan这个命令,help中不仅仅提到有这个命令,还详细的说明了scan命令中可以使用的参数和作用,例如,根据列名称查询的方法和带LIMIT 、STARTROW的使用方法:
scan   Scan a table; pass table name and optionally a dictionary ofscanner specifications.  Scanner specifications may include one or moreof  the following: LIMIT, STARTROW, STOPROW, TIMESTAMP, or COLUMNS. If no columns are specified, all columns will be scanned.  To scan allmembers of a column family, leave the qualifier empty as in 'col_family:'.  Examples:
            hbase>scan '.META.'
            hbase>scan '.META.', {COLUMNS => 'info:regioninfo'}
            hbase>scan 't1', {COLUMNS => ['c1', 'c2'], LIMIT => 10, STARTROW => 'xyz'}

使用JavaAPI对HBase服务器进行操作

需要下列jar包
     hbase-0.20.6.jar
     hadoop-core-0.20.1.jar
     commons-logging-1.1.1.jar
     zookeeper-3.3.0.jar
     log4j-1.2.91.jar

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.HBaseConfiguration;

importorg.apache.hadoop.hbase.HColumnDescriptor;

importorg.apache.hadoop.hbase.HTableDescriptor;

import org.apache.hadoop.hbase.KeyValue;

importorg.apache.hadoop.hbase.client.HBaseAdmin;

import org.apache.hadoop.hbase.client.HTable;

import org.apache.hadoop.hbase.client.Result;

importorg.apache.hadoop.hbase.client.ResultScanner;

import org.apache.hadoop.hbase.client.Scan;

@SuppressWarnings("deprecation")

public class HbaseCaseTest {

static HBaseConfiguration cfg = null;

static {

Configuration HBASE_CONFIG = new Configuration();

HBASE_CONFIG.set("hbase.zookeeper.quorum", "retailvm1d.nam.nsroot.net");

HBASE_CONFIG.set("hbase.zookeeper.property.clientPort", "2181");

cfg = new

HBaseConfiguration
(HBASE_CONFIG);

}

public static void creatTable(String tablename) throws Exception {

HBaseAdmin admin = new HBaseAdmin(cfg);

if (admin.tableExists(tablename)){

System.out.println("table   Exists!!!");

}

else{

HTableDescriptor tableDesc = new HTableDescriptor(tablename);

tableDesc.addFamily(new HColumnDescriptor("name:"));

admin.createTable(tableDesc);

System.out.println("createtable ok .");

}

}

public static void getAllData (String tablename) throws Exception{

HTable table = new HTable(cfg, tablename);

Scan s = new Scan();

ResultScanner ss =table.getScanner(s);

for(Result r:ss){

for(KeyValue kv:r.raw()){

System.out.print(new String(kv.getFamily()));

System.out.println(new String(kv.getValue()    ));

}

}

}

public static void  main (String [] agrs) {

try {

String tablename="tablename";

HbaseCaseTest.creatTable(tablename);

HbaseCaseTest.getAllData(tablename);

}

catch (Exception e) {

e.printStackTrace();

}

}

}

Hbase深入学习(六) Java操作HBase的更多相关文章

  1. HBase之四--(1):Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  2. java操作Hbase实例

    所用HBase版本为1.1.2,hadoop版本为2.4 /* * 创建一个students表,并进行相关操作 */ import java.io.IOException; import java.u ...

  3. Java操作hbase总结

    用过以后,总得写个总结,不然,就忘喽. 一.寻找操作的jar包. java操作hbase,首先要考虑到使用hbase的jar包. 因为咱装的是CDH5,比较方便,使用SecureCRT工具,远程连接到 ...

  4. 错误: 找不到或无法加载主类 java操作hbase出错

    用java操作hbase 利用maven引入hbase包后发现无法启动程序,然后网上说是包的冲突. 我引入了下面三个包然后程序就不能运行了. <dependency> <groupI ...

  5. Java 操作 HBase 教程

    Java 操作 HBase 教程 一.简介 二.hbase-client 引入 三.连接操作 四.表操作 五.运行测试 相关博文原文地址: 博客园:美码师:HBase(2) Java 操作 HBase ...

  6. Hbase深入学习(一) 什么是hbase

    Hbase深入学习(一) 什么是hbase 一.hbase是什么?      首先hbase是一个在Hadoop的HDFS分布式存储系统上介于映射(key/value)的nosql的分布式数据库:它通 ...

  7. HBASE学习d端口master:16010(java操作hbase)https://www.cnblogs.com/junrong624/p/7323483.html

    HBase提示已创建表,但是list查询时,却显示表不存在. https://blog.csdn.net/liu16659/article/details/80216085 下载网址 http://a ...

  8. 【hbase】——Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

  9. (转)Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询

    1.搭建环境 新建JAVA项目,添加的包有: 有关Hadoop的hadoop-core-0.20.204.0.jar 有关Hbase的hbase-0.90.4.jar.hbase-0.90.4-tes ...

随机推荐

  1. 打印Ibatis最终的SQL语句

    在项目开发时都大家都希望将SQL在后台打印出来,以帮助开发以及后续的bug修改.如果用JDBC那么可以方便的打印,可使用ibatis就不知道怎么办了,最近在网上找了一段log4j的配置可以很保姆的处理 ...

  2. XA事务处理

    XA接口详解 X/Open XA接口是双向的系统接口,在事务管理器(Transaction Manager)以及一个或多个资源管理器(Resource Manager)之间形成通信桥梁.事务管理器控制 ...

  3. kettle实现文本文件数据抽取方法

    KETTLE做调度的思路是,把一个有特定格式的的文本文件,写入ORACLE数据库表, 具体方法见如下操作: 首先来看下文本文件的内容: 1|test1 2|test2 3|test3 通过|进行分割的 ...

  4. 【剑指offer 面试题12】打印1到最大的n位数

    思路: 用n位字符数组表示n位数,通过递归的方式逐层(位)遍历,递归终止时打印. #include "stdio.h" #include "string.h" ...

  5. 在ASP.NET下做了一个实验MVC的小东西

    星期五下班前一时兴起,对MVC发表了一点看法.后来就想干脆弄个小东西来验证一些自己的想法帮组理清思路.所要源代码的免了,3个小时的急就章实在是乱得可以,既没有好的架构,也没有任何代码质量可言,主要是实 ...

  6. Tomcat 下配置OpenLayers proxy.cgi代理

    摘要:在OpenLayers访问WFS服务时,会遇到跨域的问题而导致服务无法访问.此时,需要在应用程序中设置代理,通过代理进行访问.本文介绍在tomcat进行proxy.cgi文件配置,以及在调用代理 ...

  7. android开发关于popupwindow显示关闭的笔记

    一.方法一: popupWindow.setFocusable(false); //这样popupWindow无法获得焦点,无法处理popupWindow中的事件 设置MainActivity的onT ...

  8. 5个Xcode开发调试技巧

    转自Joywii的博客,原文:Four Tips for Debugging in XCode Like a Bro    1.Enable NSZombie Objects(开启僵尸对象) Enab ...

  9. Spring SimpleJdbcTemplate Querying examples

    Here are few examples to show how to use SimpleJdbcTemplate query() methods to query or extract data ...

  10. CentOS_6.5 64位系统,安装git服务器+客户端

    ================ git服务器安装 ==================== CentOS安装Git服务器 Centos 6.4 + Git 1.8.2.2 + gitosis## . ...