大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建
大数据应用之Windows平台Hbase客户端Eclipse环境搭建-Java版
作者:张子良
版权所有,转载请注明出处
引子:
大数据的场景下,NoSql型数据库的优势不言而喻,但是涉及NoSQL数据库的实际动手开发的东西多是Linux平台,大多语焉不详,至于Windows平台介绍的东西就更少了,而且大多无法运行。本文就Windows平台基于Eclipse搭建Hbase环境客户端开发环境做一个介绍。另外基于Thrift实现的Windows版本Hbase客户端库也做了封装,有需要的可以留言索取。
一、开发环境
操作系统:windows xp sp3
开发工具:Eclipse3.6
虚拟机:VMware
服务器环境:hadoop1.1.0 + Hbase0.94
备注:需要特别说明的是不需要Cygwin搭建Linux在Windows环境下的方针。
二、环境配置
2.1系统设置
修改Windows主机Hosts文件C:\WINDOWS\system32\drivers\etc\hosts,增加服务器配置
127.0.0.1 localhost
127.0.0.1 microsof-c2f4ea
192.168.230.133 hadoop1
2.2 Eclipse设置
运行Eclipse,创建一个新的Java工程“HBaseClient”,右键项目根目录,选择 “Properties”->“Java Build Path”->“Library”->“Add External JARs”,将HBase解压后根目录下的hbase-0.94.0.jar、hbase-0.94.0-tests.jar和lib子目录下所有jar 包添加到本工程的Classpath下。拷贝Hbase服务器端配置文件hbase-site.xml添加到本工程的Classpath中。配置文件如下所示:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.230.133:9000/hbase</value>
<description>The directory shared by region servers.</description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed Zookeeper
true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
</description>
</property>
<property>
<name>hbase.master</name>
<value>hdfs://192.168.230.133:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.230.133</value>
<description>Comma separated list of servers in the ZooKeeper Quorum. For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com". By default this is set to localhost for local and pseudo-distributed modes of operation. For a fully-distributed setup, this should be set to a full list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh this is the list of servers which we will start/stop ZooKeeper on.
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/log/zookeeper</value>
<description>Property from ZooKeeper's config zoo.cfg.
The directory where the snapshot is stored.
</description>
</property>
</configuration>
三、程序源码
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
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.KeyValue;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Result;
import org.apache.hadoop.hbase.client.ResultScanner;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;
public class HBaseTest {
private static Configuration conf = null;
/**
* 初始化配置
*/
static {
Configuration HBASE_CONFIG = new Configuration();
//与hbase/conf/hbase-site.xml中hbase.zookeeper.quorum配置的值相同
HBASE_CONFIG.set("hbase.master", "192.168.230.133:60000");
HBASE_CONFIG.set("hbase.zookeeper.quorum", "192.168.230.133");
//与hbase/conf/hbase-site.xml中hbase.zookeeper.property.clientPort配置的值相同
HBASE_CONFIG.set("hbase.zookeeper.property.clientPort", "2181");
conf = HBaseConfiguration.create(HBASE_CONFIG);
}
/**
* 创建一张表
*/
public static void creatTable(String tableName, String[] familys) throws Exception {
HBaseAdmin admin = new HBaseAdmin(conf);
if (admin.tableExists(tableName)) {
System.out.println("table already exists!");
} else {
HTableDescriptor tableDesc = new HTableDescriptor(tableName);
for(int i=0; i<familys.length; i++){
tableDesc.addFamily(new HColumnDescriptor(familys[i]));
}
admin.createTable(tableDesc);
System.out.println("create table " + tableName + " ok.");
}
}
/**
* 删除表
*/
public static void deleteTable(String tableName) throws Exception {
try {
HBaseAdmin admin = new HBaseAdmin(conf);
admin.disableTable(tableName);
admin.deleteTable(tableName);
System.out.println("delete table " + tableName + " ok.");
} catch (MasterNotRunningException e) {
e.printStackTrace();
} catch (ZooKeeperConnectionException e) {
e.printStackTrace();
}
}
/**
* 插入一行记录
*/
public static void addRecord (String tableName, String rowKey, String family, String qualifier, String value)
throws Exception{
try {
HTable table = new HTable(conf, tableName);
Put put = new Put(Bytes.toBytes(rowKey));
put.add(Bytes.toBytes(family),Bytes.toBytes(qualifier),Bytes.toBytes(value));
table.put(put);
System.out.println("insert recored " + rowKey + " to table " + tableName +" ok.");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 删除一行记录
*/
public static void delRecord (String tableName, String rowKey) throws IOException{
HTable table = new HTable(conf, tableName);
List list = new ArrayList();
Delete del = new Delete(rowKey.getBytes());
list.add(del);
table.delete(list);
System.out.println("del recored " + rowKey + " ok.");
}
/**
* 查找一行记录
*/
public static void getOneRecord (String tableName, String rowKey) throws IOException{
HTable table = new HTable(conf, tableName);
Get get = new Get(rowKey.getBytes());
Result rs = table.get(get);
for(KeyValue kv : rs.raw()){
System.out.print(new String(kv.getRow()) + " " );
System.out.print(new String(kv.getFamily()) + ":" );
System.out.print(new String(kv.getQualifier()) + " " );
System.out.print(kv.getTimestamp() + " " );
System.out.println(new String(kv.getValue()));
}
}
/**
* 显示所有数据
*/
public static void getAllRecord (String tableName) {
try{
HTable table = new HTable(conf, 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.getRow()) + " ");
System.out.print(new String(kv.getFamily()) + ":");
System.out.print(new String(kv.getQualifier()) + " ");
System.out.print(kv.getTimestamp() + " ");
System.out.println(new String(kv.getValue()));
}
}
} catch (IOException e){
e.printStackTrace();
}
}
public static void main (String [] agrs) {
try {
String tablename = "scores";
String[] familys = {"grade", "course"};
HBaseTest.creatTable(tablename, familys);
//add record zkb
HBaseTest.addRecord(tablename,"zkb","grade","","5");
HBaseTest.addRecord(tablename,"zkb","course","","90");
HBaseTest.addRecord(tablename,"zkb","course","math","97");
HBaseTest.addRecord(tablename,"zkb","course","art","87");
//add record baoniu
HBaseTest.addRecord(tablename,"baoniu","grade","","4");
HBaseTest.addRecord(tablename,"baoniu","course","math","89");
System.out.println("===========get one record========");
HBaseTest.getOneRecord(tablename, "zkb");
System.out.println("===========show all record========");
HBaseTest.getAllRecord(tablename);
System.out.println("===========del one record========");
HBaseTest.delRecord(tablename, "baoniu");
HBaseTest.getAllRecord(tablename);
System.out.println("===========show all record========");
HBaseTest.getAllRecord(tablename);
} catch (Exception e) {
e.printStackTrace();
}
}
}
四、运行截图
通过Hbase的Web-UI我们可以看到我们已经创建了表Scores,列族结构如下图所示:
五、执行结果
直接在Eclipse中运行,运行结果截屏如下图所示:
六、关于Put
以上示例虽然实现了操作,但是针对就插入性能方面却是没有优化,后续的文章将会介绍影响PUT操作的性能和PUT的集中方法,作为Hbase性能调优的专题。
转载于:https://www.cnblogs.com/hadoopdev/p/3184044.html
大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建相关推荐
- 【教程】Windows下Miniconda+Pytorch+Pycharm开发环境搭建指南
Windows下Miniconda+Pytorch+Pycharm开发环境搭建指南 给本科生写的新手教程,遇到很多新手的共性问题,可供大家参考.在开始阅读之前,请注意两个要关键:1.为什么要使用Con ...
- 基于Eclipse平台的Android OpenCV开发环境搭建
基于Eclipse平台的Android OpenCV开发环境搭建 作者:雨水, 日期:2016-1-31,CSDN博客:http://blog.csdn.net/gobitan 摘要:本文主要记录了如 ...
- Windows Java JavaFX IntelliJ IDEA 开发环境搭建 创建工程 编译运行 打包分发 自定义运行时
博文目录 文章目录 本文说明 JavaFX 简单说明 JavaFX 版本说明 JavaFX 与 JDK 的关系 JavaFX 与 JDK Modular (JDK 9 模块化系统) JavaFX 模块 ...
- MonkeyRunner在Windows下的Eclipse开发环境搭建步骤(兼解决网上Jython配置出错的问题)...
网上有一篇shangdong_chu网友写的文章介绍如何在Eclipse上配置MonkeyRunner,做了挺好的一个描述,但经过我的试验在我的环境上碰到了Jython解析器出错的问题,且该文章缺少P ...
- 大数据小项目之电视收视率企业项目09--hive环境搭建
Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据.它架构在Hadoop之上,总归为大数据,并使得查询和分析方便.并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务 ...
- #大数据技术#基于python的hadoop(单机)环境搭建及使用
基于python的hadoop(单机)环境搭建及使用 0.写在前面 1.虚拟机安装centos6.5 1.1安装流程 1.1.1系统安装 1.1.2修改静态ip(超级用户) 1.1.3更换可用源(超级 ...
- windows下gdal的java开发环境搭建
本文接前文gis利器之Gdal(一),前面简单介绍了gdal工具是什么,具体有什么功能.对于gdal的具体功能,感兴趣的去官网看看.日常对于gis常见的矢量和栅格数据进行处理,gdal都是拿手的.今天 ...
- windows 7 安装及.net开发环境搭建
明天是win7中文版的正式发售日期,作为MS的粉丝,特地在今天到网上down了一个D版(是旗舰版哦!)体验了一把,基于xp/vista在web程序员心中的恶劣印象(主要是xp的IIS不能新建站点,只能 ...
- 【软件使用】Windows下的Objective-C集成开发环境搭建(IDE)
Objective-C是苹果软件的编程语言,想要上机学习.调试,有一个集成开发环境(IDE)方便很多.有三类方法搭建Objective-C的集成开发环境: 1) 使用苹果的平台,集成开发环境使用X ...
- Windows下的QT系统开发环境搭建
QT是一款由Qt Company开发的跨平台C++图形用户界面应用程序开发框架.它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器.Qt是面向对象的框架,使用特殊 ...
最新文章
- 浅谈对html css的理解,HTML+CSS入门 CSS选择器 、属性和值浅谈
- [转] Java快速教程
- C语言的集成开发环境
- Stream Processing:Apache Flink快照(snapshot)原理
- 【中台】“中台”概念究竟是什么?制造业企业需要拥抱吗?
- 基于相空间重构的混沌背景下微弱信号检测方法仿真
- java怎么访问视图_springmvc-直接访问视图文件
- netcore redis 存储集合_.net core redis的全套操作
- java并发编程之美-阅读记录2
- Lucene解析 - 基本概念
- serlvet配置xml和@WebServlet
- 《数据挖掘:理论与算法》习题 + 期末考试+答案 + 2021年【完整/完结】
- matlab下载svm,svm工具箱下载-matlab svm工具箱下载通用版-极限软件园
- 微信小程序必看api demo源码
- 游戏里的攻防-检测与反检测
- ExcelVBA收纳箱:以A1单元格内容统一插入批注
- 工业设备软件的研发测试
- 阿里云IoT千里传音之声连网互动营销服务,首次亮相!
- 解决win7 若要安装Office2010,需要在计算机上安装MSXML版本6.10.1129.0 问题
- NOI 4.6 贪心 2407:书架
热门文章
- 技术升级成为Linux运维人前途的魔障,是跟进还是选择被淘汰?
- JS 通过选择百度地图地址获取经纬度自动填充到文本框中的方法
- Jupyter Notebook 作图显示中文
- Stroustrup专访:畅想C++17
- linux基本命令操作(二)
- demo2 Kafka+Spark Streaming+Redis实时计算整合实践 foreachRDD输出到redis
- 虚拟机在教学实验中的应用
- 27_文件上传—添加商品
- [环境]搭建Node+NPM+Grunt+Ruby开发环境
- gdi作图与系统不兼容_技术作图:技能准备amp;物理装备