热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:HBase的java客户端测试DDL操作

篇首语:本文由编程笔记#小编为大家整理,主要介绍了HBase的java客户端测试---DDL操作相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了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 让我们一起学习大数据



1 package com.mmzs.bigdata.hbase.ddl;
2
3 import java.io.IOException;
4 import java.util.Map;
5 import java.util.Map.Entry;
6 import java.util.Set;
7
8 import org.apache.hadoop.conf.Configuration;
9 import org.apache.hadoop.hbase.HBaseConfiguration;
10 import org.apache.hadoop.hbase.HColumnDescriptor;
11 import org.apache.hadoop.hbase.HTableDescriptor;
12 import org.apache.hadoop.hbase.NamespaceDescriptor;
13 import org.apache.hadoop.hbase.TableName;
14 import org.apache.hadoop.hbase.TableNotFoundException;
15 import org.apache.hadoop.hbase.client.Admin;
16 import org.apache.hadoop.hbase.client.Connection;
17 import org.apache.hadoop.hbase.client.ConnectionFactory;
18 import org.apache.hadoop.hbase.io.ImmutableBytesWritable;
19
20 /**
21 * DDL:
22 * createTable|disableTable|deleteTable|modifyTable|modifyColumn|getTableDescriptor
23 *
24 * 表空间——>表——>列族——>列(字段)——>列值(字段值)
25 *
26 * @author hadoop
27 *
28 */
29 public class DDLMain {
30 /**
31 * 操作HBase集群的客户端
32 */
33 private static Admin admin;//操作HBase集群的客户端
34
35 static{
36 //创建HBase配置
37 Configuration cOnf= HBaseConfiguration.create();
38 //要和hbase-site.xml中configuration配置的一样
39 conf.set("hbase.zookeeper.quorum", "slave01:2181,slave02:2181,slave03:2181");
40 //根据HBase配置获取集群路径
41 Connection conn;
42 try {
43 cOnn= ConnectionFactory.createConnection(conf);
44 admin = conn.getAdmin();
45 } catch (IOException e) {
46 e.printStackTrace();
47 }
48 }
49
50 public static void main(String[] args) {
51 // createNamespace("mmzs02");
52 // try {
53 // createHTable("mmzs:myuser");
54 // } catch (IOException e) {
55 // e.printStackTrace();
56 // }
57 existHTable("mmzs:myuser");
58 // modifyHTableByAddFamily("mmzs:myuser","attach00");
59 // modifyHTableByDelFamily("mmzs:myuser","attach00");
60 // modifyHTableByModFamily("mmzs:myuser","base",5);
61 //deleteHTable("mmzs:myuser");
62 // iterateNameSpace();
63
64
65
66 }
67
68 /**
69 * 创建表空间
70 * @param namespaceNameStr
71 * @throws IOException
72 */
73 public static void createNamespace(String namespaceNameStr){
74 NamespaceDescriptor.Builder builder=NamespaceDescriptor.create(namespaceNameStr);
75 NamespaceDescriptor nd=builder.build();
76 try {
77 admin.createNamespace(nd);
78 } catch (IOException e) {
79 e.printStackTrace();
80 }
81
82 }
83
84 //删除表空间
85 public static void deleteNamespace(String namespaceNameStr){
86 try {
87 admin.deleteNamespace(namespaceNameStr);
88 } catch (IOException e) {
89 e.printStackTrace();
90 }
91 }
92
93
94 //创建HBase表
95 public static void createHTable(String tabNameStr) throws IOException{
96 //转化为表名
97 TableName tabname=TableName.valueOf(tabNameStr);
98 //根据表名创建表结构
99 HTableDescriptor htd = new HTableDescriptor(tabname);
100 //定义列族名字“base”
101 HColumnDescriptor base = new HColumnDescriptor("base");
102 base.setMaxVersions(3);
103 // 定义列族名字为”extra“
104 HColumnDescriptor extra = new HColumnDescriptor("extra");
105 extra.setMaxVersions(3);
106
107 htd.addFamily(base);
108 htd.addFamily(extra);
109 try {
110 admin.createTable(htd);
111
112 } catch (IOException e) {
113 e.printStackTrace();
114 }
115 }
116
117 /**
118 * 判断某表是否存在
119 * @param tabNameStr
120 */
121 public static void existHTable(String tabNameStr){
122 TableName tabName=TableName.valueOf(tabNameStr);
123 Boolean flag = null;
124 try {
125 flag = admin.tableExists(tabName);
126 } catch (IOException e) {
127 e.printStackTrace();
128 }
129 if (flag) {
130 System.out.println(tabName+"存在");
131 } else {
132 System.out.println(tabName+"不存在");
133 }
134 }
135
136 //增加一个列族
137 public static void modifyHTableByAddFamily(String tabNameStr,String familyName){
138 //转化为表名
139 TableName tabname=TableName.valueOf(tabNameStr);
140 try {
141 //根据表名得到表
142 HTableDescriptor htd = admin.getTableDescriptor(tabname);
143 //新建一个列族
144 HColumnDescriptor attach = new HColumnDescriptor(familyName);
145 attach.setMaxVersions(3);
146 //将新建的列族添加到表中
147 htd.addFamily(attach);
148
149 //修改指定的表
150 admin.modifyTable(tabname, htd);
151 } catch (TableNotFoundException e) {
152 e.printStackTrace();
153 } catch (IOException e) {
154 e.printStackTrace();
155 }
156 }
157
158 //修改列族
159 public static void modifyHTableByModFamily(String tabNameStr,String familyName,Integer max){
160 //转化为表名
161 TableName tabname=TableName.valueOf(tabNameStr);
162 try {
163 //根据表名得到表
164 HTableDescriptor htd = admin.getTableDescriptor(tabname);
165 //得到指定的列族
166 HColumnDescriptor hcd =htd.getFamily(familyName.getBytes());
167 hcd.setMaxVersions(max);
168
169 //修改表中的指定列族
170 admin.modifyColumn(tabname, hcd);
171 } catch (TableNotFoundException e) {
172 e.printStackTrace();
173 } catch (IOException e) {
174 e.printStackTrace();
175 }
176 }
177
178 //删除列族
179 public static void modifyHTableByDelFamily(String tabNameStr,String familyName){
180 TableName tabname=TableName.valueOf(tabNameStr);
181 try {
182 HTableDescriptor htd = admin.getTableDescriptor(tabname);
183 htd.removeFamily(familyName.getBytes());
184
185 //删除表中的指定列族
186 admin.modifyTable(tabname, htd);
187 } catch (TableNotFoundException e) {
188 e.printStackTrace();
189 } catch (IOException e) {
190 e.printStackTrace();
191 }
192 }
193
194
195 //遍历所有的表空间
196 public static void iterateNameSpace(){
197 try {
198 //取出所有的表空间的结构
199 NamespaceDescriptor[] nds=admin.listNamespaceDescriptors();
200 for(NamespaceDescriptor nd:nds){
201 //获取表空间的名字
202 String namespaceName=nd.getName();
203 //获取表空间下所有的表的结构
204 HTableDescriptor[] htds=admin.listTableDescriptorsByNamespace(namespaceName);
205 for(HTableDescriptor htd:htds){
206 //获取表的名字
207 String tabName=htd.getTableName().getNameAsString();
208 //获取表下的所有的列族的结构
209 HColumnDescriptor[] hcds=htd.getColumnFamilies();
210 for(HColumnDescriptor hcd:hcds){
211 //获取列族的名字
212 String familyName=hcd.getNameAsString();
213 //获取列族下的所有键值对
214 Map keyVals=hcd.getValues();
215 //遍历当前列族下的所有键值对
216 Set> entrys=keyVals.entrySet();
217 for(Entry entry:entrys){
218 String key=new String(entry.getKey().get());
219 String value=new String(entry.getValue().get());
220 String info=new StringBuilder(namespaceName)
221 .append("\\t")
222 .append(tabName)
223 .append("\\t")
224 .append(familyName)
225 .append("\\t")
226 .append(key)
227 .append(":")
228 .append(value)
229 .toString();
230
231 //输出结果
232 System.out.println(info);
233 }
234 }
235 }
236 }
237 } catch (IOException e) {
238 e.printStackTrace();
239 }
240
241 }
242
243 //删除HBase表
244 public static void deleteHTable(String tabNameStr) {
245 TableName tableName = TableName.valueOf(tabNameStr);
246
247 try {
248 //先禁用表
249 admin.disableTable(tableName);
250 //在删除表
251 admin.deleteTables(tabNameStr);
252 } catch (IOException e) {
253 e.printStackTrace();
254 }
255 }
256
257 }


DDLMain

 

测试结果:

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

 



推荐阅读
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 2018深入java目标计划及学习内容
    本文介绍了作者在2018年的深入java目标计划,包括学习计划和工作中要用到的内容。作者计划学习的内容包括kafka、zookeeper、hbase、hdoop、spark、elasticsearch、solr、spring cloud、mysql、mybatis等。其中,作者对jvm的学习有一定了解,并计划通读《jvm》一书。此外,作者还提到了《HotSpot实战》和《高性能MySQL》等书籍。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • Python脚本编写创建输出数据库并添加模型和场数据的方法
    本文介绍了使用Python脚本编写创建输出数据库并添加模型数据和场数据的方法。首先导入相应模块,然后创建输出数据库并添加材料属性、截面、部件实例、分析步和帧、节点和单元等对象。接着向输出数据库中添加场数据和历程数据,本例中只添加了节点位移。最后保存数据库文件并关闭文件。文章还提供了部分代码和Abaqus操作步骤。另外,作者还建立了关于Abaqus的学习交流群,欢迎加入并提问。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringCloudRibbon部分源码相关的知识,希望对你有一定的参考价值。1:ribbon是提供通过servi ... [详细]
  • 生产环境下JVM调优参数的设置实例
     正文前先来一波福利推荐: 福利一:百万年薪架构师视频,该视频可以学到很多东西,是本人花钱买的VIP课程,学习消化了一年,为了支持一下女朋友公众号也方便大家学习,共享给大家。福利二 ... [详细]
  • Python实现变声器功能(萝莉音御姐音)的方法及步骤
    本文介绍了使用Python实现变声器功能(萝莉音御姐音)的方法及步骤。首先登录百度AL开发平台,选择语音合成,创建应用并填写应用信息,获取Appid、API Key和Secret Key。然后安装pythonsdk,可以通过pip install baidu-aip或python setup.py install进行安装。最后,书写代码实现变声器功能,使用AipSpeech库进行语音合成,可以设置音量等参数。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文介绍了自学Vue的第01天的内容,包括学习目标、学习资料的收集和学习方法的选择。作者解释了为什么要学习Vue以及选择Vue的原因,包括完善的中文文档、较低的学习曲线、使用人数众多等。作者还列举了自己选择的学习资料,包括全新vue2.5核心技术全方位讲解+实战精讲教程、全新vue2.5项目实战全家桶单页面仿京东电商等。最后,作者提出了学习方法,包括简单的入门课程和实战课程。 ... [详细]
  • 熟练掌握Spring Cloud,终于成为Java工程师的面试门槛 ... [详细]
author-avatar
七锦少年
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有