测试准备

【首先同步时间:】

for node in CloudDeskTop master01 master02 slave01 slave02 slave03;do ssh $node "date -s '2017-12-30 21:32:30'";done

【slave各节点启动zookeeper集群:】

cd /software/zookeeper-3.4.10/bin/ && ./zkServer.sh start && cd - && jps

【master01启动HDFS集群:】

cd /software/ && start-dfs.sh && jps

【master01启动HBase:】

cd /software/hbase-1.2.6/bin && start-hbase.sh && jps

【master02上启动HBase:】

cd /software/hbase-1.2.6/bin && hbase-daemon.sh start master && jps

如有节点启动出现故障:
单独启动master:
cd /software/hbase-1.2.6/bin && hbase-daemon.sh start master && jps
单独启动regionserver:
cd /software/hbase-1.2.6/bin && hbase-daemon.sh start regionserver && jps
通过命令终端查看:
hbase(main):009:0> status
通过web终端查看:
http://master01的IP地址:16010/

【在主机CloudDeskTop导入java客户端开发所需jar包:】HBase1.2.6-All.zip

测试目标:

运用java代码编写程序操作HBase数据库,本次测试致力于对DDL语法的java客户端操作;

测试代码:大数据学习交流QQ群:217770236 让我们一起学习大数据

 package com.mmzs.bigdata.hbase.ddl;

 import java.io.IOException;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.TableNotFoundException;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.io.ImmutableBytesWritable; /**
* DDL:
* createTable|disableTable|deleteTable|modifyTable|modifyColumn|getTableDescriptor
*
* 表空间——>表——>列族——>列(字段)——>列值(字段值)
*
* @author hadoop
*
*/
public class DDLMain {
/**
* 操作HBase集群的客户端
*/
private static Admin admin;//操作HBase集群的客户端 static{
//创建HBase配置
Configuration conf = HBaseConfiguration.create();
//要和hbase-site.xml中configuration配置的一样
conf.set("hbase.zookeeper.quorum", "slave01:2181,slave02:2181,slave03:2181");
//根据HBase配置获取集群路径
Connection conn;
try {
conn = ConnectionFactory.createConnection(conf);
admin = conn.getAdmin();
} catch (IOException e) {
e.printStackTrace();
}
} public static void main(String[] args) {
// createNamespace("mmzs02");
// try {
// createHTable("mmzs:myuser");
// } catch (IOException e) {
// e.printStackTrace();
// }
existHTable("mmzs:myuser");
// modifyHTableByAddFamily("mmzs:myuser","attach00");
// modifyHTableByDelFamily("mmzs:myuser","attach00");
// modifyHTableByModFamily("mmzs:myuser","base",5);
//deleteHTable("mmzs:myuser");
// iterateNameSpace(); } /**
* 创建表空间
* @param namespaceNameStr
* @throws IOException
*/
public static void createNamespace(String namespaceNameStr){
NamespaceDescriptor.Builder builder=NamespaceDescriptor.create(namespaceNameStr);
NamespaceDescriptor nd=builder.build();
try {
admin.createNamespace(nd);
} catch (IOException e) {
e.printStackTrace();
} } //删除表空间
public static void deleteNamespace(String namespaceNameStr){
try {
admin.deleteNamespace(namespaceNameStr);
} catch (IOException e) {
e.printStackTrace();
}
} //创建HBase表
public static void createHTable(String tabNameStr) throws IOException{
//转化为表名
TableName tabname=TableName.valueOf(tabNameStr);
//根据表名创建表结构
HTableDescriptor htd = new HTableDescriptor(tabname);
//定义列族名字“base”
HColumnDescriptor base = new HColumnDescriptor("base");
base.setMaxVersions(3);
// 定义列族名字为”extra“
HColumnDescriptor extra = new HColumnDescriptor("extra");
extra.setMaxVersions(3); htd.addFamily(base);
htd.addFamily(extra);
try {
admin.createTable(htd); } catch (IOException e) {
e.printStackTrace();
}
} /**
* 判断某表是否存在
* @param tabNameStr
*/
public static void existHTable(String tabNameStr){
TableName tabName=TableName.valueOf(tabNameStr);
Boolean flag = null;
try {
flag = admin.tableExists(tabName);
} catch (IOException e) {
e.printStackTrace();
}
if (flag) {
System.out.println(tabName+"存在");
} else {
System.out.println(tabName+"不存在");
}
} //增加一个列族
public static void modifyHTableByAddFamily(String tabNameStr,String familyName){
//转化为表名
TableName tabname=TableName.valueOf(tabNameStr);
try {
//根据表名得到表
HTableDescriptor htd = admin.getTableDescriptor(tabname);
//新建一个列族
HColumnDescriptor attach = new HColumnDescriptor(familyName);
attach.setMaxVersions(3);
//将新建的列族添加到表中
htd.addFamily(attach); //修改指定的表
admin.modifyTable(tabname, htd);
} catch (TableNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} //修改列族
public static void modifyHTableByModFamily(String tabNameStr,String familyName,Integer max){
//转化为表名
TableName tabname=TableName.valueOf(tabNameStr);
try {
//根据表名得到表
HTableDescriptor htd = admin.getTableDescriptor(tabname);
//得到指定的列族
HColumnDescriptor hcd =htd.getFamily(familyName.getBytes());
hcd.setMaxVersions(max); //修改表中的指定列族
admin.modifyColumn(tabname, hcd);
} catch (TableNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} //删除列族
public static void modifyHTableByDelFamily(String tabNameStr,String familyName){
TableName tabname=TableName.valueOf(tabNameStr);
try {
HTableDescriptor htd = admin.getTableDescriptor(tabname);
htd.removeFamily(familyName.getBytes()); //删除表中的指定列族
admin.modifyTable(tabname, htd);
} catch (TableNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} //遍历所有的表空间
public static void iterateNameSpace(){
try {
//取出所有的表空间的结构
NamespaceDescriptor[] nds=admin.listNamespaceDescriptors();
for(NamespaceDescriptor nd:nds){
//获取表空间的名字
String namespaceName=nd.getName();
//获取表空间下所有的表的结构
HTableDescriptor[] htds=admin.listTableDescriptorsByNamespace(namespaceName);
for(HTableDescriptor htd:htds){
//获取表的名字
String tabName=htd.getTableName().getNameAsString();
//获取表下的所有的列族的结构
HColumnDescriptor[] hcds=htd.getColumnFamilies();
for(HColumnDescriptor hcd:hcds){
//获取列族的名字
String familyName=hcd.getNameAsString();
//获取列族下的所有键值对
Map<ImmutableBytesWritable,ImmutableBytesWritable> keyVals=hcd.getValues();
//遍历当前列族下的所有键值对
Set<Entry<ImmutableBytesWritable, ImmutableBytesWritable>> entrys=keyVals.entrySet();
for(Entry<ImmutableBytesWritable, ImmutableBytesWritable> entry:entrys){
String key=new String(entry.getKey().get());
String value=new String(entry.getValue().get());
String info=new StringBuilder(namespaceName)
.append("\t")
.append(tabName)
.append("\t")
.append(familyName)
.append("\t")
.append(key)
.append(":")
.append(value)
.toString(); //输出结果
System.out.println(info);
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
} } //删除HBase表
public static void deleteHTable(String tabNameStr) {
TableName tableName = TableName.valueOf(tabNameStr); try {
//先禁用表
admin.disableTable(tableName);
//在删除表
admin.deleteTables(tabNameStr);
} catch (IOException e) {
e.printStackTrace();
}
} }

DDLMain

测试结果:

在命令端查看,查看方式,可参考:http://www.cnblogs.com/mmzs/p/8135327.html

HBase的java客户端测试(一)---DDL操作的更多相关文章

  1. HBase的java客户端测试(二)---DML操作

    测试准备 [首先同步时间:] for node in CloudDeskTop master01 master02 slave01 slave02 slave03;do ssh $node " ...

  2. docker安装fastdfs与java客户端测试

    一.docker 安装FastDFS 1.拉取镜像 docker pull morunchang/fastdfs 2.创建并启动tracker容器 docker run -d --name=track ...

  3. Hbase配置java客户端

    1.修改windows配置文件 C:\WINDOWS\system32\drivers\etc\hosts 将远程hbase和zookeeper主机的IP地址加进去 54.0.88.53      H ...

  4. Kubernetes官方java客户端之七:patch操作

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  5. 使用Java客户端对Redis进行操作

    一.背景 上篇文章我们介绍了如何在centos7下面进行安装单机版redis以及redis集群.这篇文章,我们来聊一聊如何使用java客户端来进行操作redis.我们知道redis的java客户端有很 ...

  6. RABBITMQ/JAVA 客户端测试(再补:利用文件流)

    (一)这里可以先复习一下java输入输出流和文件操作--- 1.File类保存文件或目录的各种元数据信息,包括文件名.文件长度.最后修改时间.是否可读.获取当前文件的路径名.判断指定文件是否存在.获取 ...

  7. RabbitMQ/JAVA 客户端测试(补:利用线程)

    上次进行了简单的连接测试.这次主要进行一下小小的补充.利用线程将生产者消费者代码合到一个文件中. 我是将Recv.java(消费者)文件放在一个线程里添加到Send.java(生产者)中. 代码如下: ...

  8. Kubernetes官方java客户端之八:fluent style

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  9. Hbase入门(五)——客户端(Java,Shell,Thrift,Rest,MR,WebUI)

    Hbase的客户端有原生java客户端,Hbase Shell,Thrift,Rest,Mapreduce,WebUI等等. 下面是这几种客户端的常见用法. 一.原生Java客户端 原生java客户端 ...

随机推荐

  1. HTML5中input标签有用的新属性

    HTML5对input增加了一些新标签,个人觉得比较常用有效的以下几个 placeholder=“请输入” 常见用于默认提示 autofocus 自动聚焦到当前输入框 maxlength=" ...

  2. 网络编程 —— UPD

    UDP协议(数据报协议:SOCK_DGRAM) udp是无链接的,先启动哪一端都不会报错 udp协议的特点: 传输数据不可靠,发送完后没有确认就删除 传送内容可为空 对于查寻速度快 支持的是一对多的模 ...

  3. offset系列、scroll系列与client系列

    offset系列: offsetLeft:获取元素距离最左边的距离,自身的margin包括在内,不包括自身的border offsetTop:获取元素距离最上边的距离,自身的margin包括在内,不包 ...

  4. 怎么取cxgrid某一列的合计值

    怎么取cxgrid某一列的合计值   1.cxGrid1DBTableView1->optionsview->Footer 设为True 2.cxGrid1DBTableView1-> ...

  5. css浮动(float)及清除浮动的几种实用方法

    CSS浮动是现在网页布局中使用最频繁的效果之一,而浮动可以帮我们解决很多问题,那么就让我们一起来看一看如何使用浮动. 一.css浮动(float) (1)html文档流 自窗体自上而下分成一行一行,并 ...

  6. MySQL-5.7.19 在阿里云 CentOS-7.0 上的安装

    工具准备 查看系统是否安装了yum工具: [root@wangbo srv]# rpm -qa | grep yum yum-metadata-parser-1.1.4-10.el7.x86_64 y ...

  7. 微信小程序我的界面

    前言 感谢! 承蒙关照~ 微信小程序我的界面 界面效果: 界面结构: 小程序代码: 我们先看me.json代码 { "navigationBarTitleText": " ...

  8. dubbo实用知识点总结(二)

    1. 参数验证 2. 结果缓存 3. 泛化引用 客户端没有对应接口类的情况,可以直接调用 4. 泛化实现 5. 回声测试 用于检测服务是否可用 6. 上下文信息 7. 隐式传参(不常用) 8. 异步调 ...

  9. Maven相关命令

    mvn comile  编译(main - >java) mvn test 测试 mvn package  打成 jar / war 包 mvn install 将模块放入本地仓库 mvn cl ...

  10. WebService学习-第一弹

    一:WebService简介(1)简介----百度百科(注意标识的重点) Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言 ...