HBase的java客户端测试(一)---DDL操作
测试准备
【首先同步时间:】
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操作的更多相关文章
- HBase的java客户端测试(二)---DML操作
测试准备 [首先同步时间:] for node in CloudDeskTop master01 master02 slave01 slave02 slave03;do ssh $node " ...
- docker安装fastdfs与java客户端测试
一.docker 安装FastDFS 1.拉取镜像 docker pull morunchang/fastdfs 2.创建并启动tracker容器 docker run -d --name=track ...
- Hbase配置java客户端
1.修改windows配置文件 C:\WINDOWS\system32\drivers\etc\hosts 将远程hbase和zookeeper主机的IP地址加进去 54.0.88.53 H ...
- Kubernetes官方java客户端之七:patch操作
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- 使用Java客户端对Redis进行操作
一.背景 上篇文章我们介绍了如何在centos7下面进行安装单机版redis以及redis集群.这篇文章,我们来聊一聊如何使用java客户端来进行操作redis.我们知道redis的java客户端有很 ...
- RABBITMQ/JAVA 客户端测试(再补:利用文件流)
(一)这里可以先复习一下java输入输出流和文件操作--- 1.File类保存文件或目录的各种元数据信息,包括文件名.文件长度.最后修改时间.是否可读.获取当前文件的路径名.判断指定文件是否存在.获取 ...
- RabbitMQ/JAVA 客户端测试(补:利用线程)
上次进行了简单的连接测试.这次主要进行一下小小的补充.利用线程将生产者消费者代码合到一个文件中. 我是将Recv.java(消费者)文件放在一个线程里添加到Send.java(生产者)中. 代码如下: ...
- Kubernetes官方java客户端之八:fluent style
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Hbase入门(五)——客户端(Java,Shell,Thrift,Rest,MR,WebUI)
Hbase的客户端有原生java客户端,Hbase Shell,Thrift,Rest,Mapreduce,WebUI等等. 下面是这几种客户端的常见用法. 一.原生Java客户端 原生java客户端 ...
随机推荐
- ora 01795 in 1000 limit
https://docs.oracle.com/cd/B19306_01/server.102/b14200/conditions013.htm https://docs.oracle.com/cd/ ...
- 与我们息息相关的internet服务(2)---WWW服务
在起步一个公司,从组建的技术上,可能要准备很多东西,其中一个就是我们熟悉的公司网站 网站,在初中,那时浏览一个网页可叫网上冲浪,听起来似乎比洗澡还爽快,可现在这词就是土鳖,网上冲浪火起来主要是应 ...
- JS中encodeURI()、decodeURI()、encodeURIComponent()和decodeURIComponent()编码与解码
编码解码问题. 解决这个问题大家一般都使用encodeURI或者encodeURIComponent方法,在这里做一下总结: 首先看看各个方法不同浏览器的支持程度 函数 描述 FF N IE deco ...
- POJ2947-Widget Factory
工厂里每件期间的生产时间为3-9天,告诉你有N个器件和M个计划,每个计划都是说明生产1-N号器件的时间,最后问你每件器件的生产时间.或者多解或没有解. 例如样例 2 3 2 MON THU 1 2 3 ...
- node平台的安装与搭建
1.node.js 官网:https://nodejs.org/ (.org:是非盈利机构,他们的软件是不收费的,但是服务收费) 安装完以后的检测指令:node -v (在这里安装需要注意一 ...
- jenkins as code 与go语言学习
前言 最近看jenkins as code这个概念在很多文章中提起,持续交付中八大原则也有把一切都放入版本管理,最近准备把我们公司用的一些jenkins上的job的配置也放到git中,由于https: ...
- BABOK概述
BABOK概述 BABOK(Business Analysis Body of Knowlodge: 业务[或商业]分析知识体系)是由位于加拿大的IIBA(International Institut ...
- Linux(lamp安装)
网络配置 1. 配置ip地址和子网掩码 编辑配置文件: > cd /etc/sysconfig/network-scripts > cp ifcfg-eth0 ./ifcfg-eth ...
- Java-异常初步练习
案例一: package com.esandinfo; /** * 自定义一个Exception类 */ class MyCustomException extends RuntimeExceptio ...
- [转]SDN与OpenFlow技术简介
http://blog.163.com/s_zhchluo/blog/static/15014708201411144727961/ 本文是2012年文章,对Openflow的发展.规范.应用和SDN ...