测试准备

【首先同步时间:】

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. python列表和字符串的三种逆序遍历方式

    python列表和字符串的三种逆序遍历方式 列表的逆序遍历 a = [1,3,6,8,9] print("通过下标逆序遍历1:") for i in a[::-1]: print( ...

  2. 功能强大的js数组方法:reduce

    arr.reduce()方法接受一个函数作为累加器,数组中的每个值从左到右开始缩减,最终为一个值. reduce接受的参数主要有callback(回调函数)和可选参数initvalue(作为第一次调用 ...

  3. [XAF] Llamachant Framework Modules

    Llamachant Framework Modules 最近更新 2018-08-22 *变更:我们从所需的模块列表中删除了审计跟踪模块.如果要在应用程序中使用Audit Trail功能,请将Aud ...

  4. Codeforces Round #421 (Div. 2)

    A: 题意:给你一本书共c页,第一天看v0页,第二天看v0+a,第二天看v0+2a以此类推,每天最多看v1页,但是后一天要重复看前一天的后l页. 代码: #include<stdio.h> ...

  5. 《JavaScript 高级程序设计》读书笔记四 变量 作用域 内存

    一   变量(基本类型和引用类型) a.基本类型保存值,保存在栈内存,引用类型保存指针,保存在堆内存: b.所有函数的参数都是按值进行传递的,不管参数是何种类型: c.检测类型 typeof     ...

  6. flask上下文(new)

    flask源码解析之上下文 引入 对于flask而言,其请求过程与django有着截然不同的流程.在django中是将请求一步步封装最终传入视图函数的参数中,但是在flask中,视图函数中并没有请求参 ...

  7. Java中最常用的集合类框架之 HashMap

    一.HashMap的概述 HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构.      HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射 ...

  8. 吴恩达机器学习笔记29-神经网络的代价函数(Cost Function of Neural Networks)

    假设神经网络的训练样本有

  9. alibaba的FastJson找不到JSON对象问题

    在现在出现使用JSON.toJsonString()方法时,可能没有JSON这个对象. 这种问题可能是下载的jar版本比较高.在低版本的jar使用的是JSON对象. 我使用的是1.2.47版本的jar ...

  10. Static了解和复习继承。

    Static了解 static加在局部变量的前面改变其存储类型使之成为静态局部变量,会延长它的生存周期,但是不会改变其作用域. 静态成员是属于类的,而不是属于某个对象的.即便没有任何一个实例,类的静态 ...