平时在开发的过程中,都是将hbase的环境装在虚拟机或者双系统上的,开发是直接在unix或者linux上进行的,这样对于使用上,有些繁琐。

下面我将介绍我在使用windows远程开发过程中的一些总结:

1,环境

开发环境: windows下的 idea (或者eclipse等)

hbase环境:  VMware 下的虚拟机 Ubuntu server 16.04

(我这里是伪分布式环境,用于程序的开发环境)

版本:hadoop: 2.7.4

版本:hbase 1.2.6

2,配置

1),虚拟机配置

主机名:zhoujun

** 配置网络ip信息:

            sudo vim /etc/hosts



                 这里我的ip是 192.168.27.132,不同的虚拟机根据不同的ip进行配置

** ip 地址通过 ifconfig来查看

** 修改主机名 :

             sudo vim /etc/hostname

这里就设置成你的主机名就可以了,我这里是:zhoujun

2) 配置 hadoop

将 hadoop 的配置文件中的所有的关于ip地址,都配置成自己的对应主机的 i p ,(建议用自己的主机名就行)

3) 配置 hbase

进入到自己的hbase 的安装目录,进入/conf配置目录下,我这里的hbase安装在 /opt目录下

这里一样的把对应使用到了主机或者ip地址的地方都改成自己主机对应的 ip ,例如:

然后重启自己的服务器:

  sudo reboot now

3) 重新配置 ssh  密钥

            cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys # 加入授权

4)配置 windows :

进入     C:\Windows\System32\drivers\etc 的文件夹下, 打开 hosts文件。在文件的末尾添加

192.168.27.132   zhoujun    # 注意这里的 主机名,是你虚拟机的主机名,而不是用户名

5 ) 进入到服务武器的终端,开启对应的服务:

             start-all.sh          # 开启 hadoop 服务
start-hbase.sh # 开启 hbase 服务

3,编写例子测试:

import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*; import java.io.IOException;
import java.util.Arrays; /**
* Created by zhoujun on 2017/8/31.
*/
public class HbaseConection {
/**
* 连接池对象
*/
protected static Connection connection;
private static final String ZK_QUORUM = "hbase.zookeeper.quorum";
private static final String ZK_CLIENT_PORT = "hbase.zookeeper.property.clientPort";
/**
* HBase位置
*/
private static final String HBASE_POS = "192.168.27.132"; /**
* ZooKeeper位置
*/
private static final String ZK_POS = "192.168.27.132"; /**
* zookeeper服务端口
*/
private final static String ZK_PORT_VALUE = "2181"; /**
* 静态构造,在调用静态方法时前进行运行
* 初始化连接对象.
* */
static{
Configuration configuration = HBaseConfiguration.create();
configuration.set("hbase.rootdir", "hdfs://" + HBASE_POS
+ ":9000/hbase");
configuration.set(ZK_QUORUM, ZK_POS);
configuration.set(ZK_CLIENT_PORT, ZK_PORT_VALUE);
try {
connection = ConnectionFactory.createConnection(configuration);
} catch (IOException e) {
e.printStackTrace();
}// 创建连接池
} /**
* @param tableName 创建一个表 tableName 指定的表名
* @param seriesStr 以字符串的形式指定表的列族,每个列族以逗号的形式隔开,(例如:"f1,f2"两个列族,分别为f1和f2)
**/
public static boolean createTable(String tableName, String seriesStr) {
boolean isSuccess = false;// 判断是否创建成功!初始值为false
Admin admin = null;
TableName table = TableName.valueOf(tableName);
try {
admin = connection.getAdmin();
if (!admin.tableExists(table)) {
System.out.println("INFO:Hbase:: " + tableName + "原数据库中表不存在!开始创建...");
HTableDescriptor descriptor = new HTableDescriptor(table);
Arrays.asList(seriesStr.split(","))
.forEach(s -> descriptor.addFamily(new HColumnDescriptor(s.getBytes())));
admin.createTable(descriptor);
System.out.println("INFO:Hbase:: "+tableName + "新的" + tableName + "表创建成功!");
isSuccess = true;
} else {
System.out.println("INFO:Hbase:: 该表已经存在,不需要在创建!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(admin);
}
return isSuccess;
} /**
* 插入数据
* @param tableName 表名
* @param rowkey 行健
* @param family 列族
* @param qualifier 列描述符
* @param value 值
* @throws IOException 异常信息
*/
public static void putDataH(String tableName, String rowkey, String family,
String qualifier, Object value) throws IOException {
Admin admin = null;
TableName tN = TableName.valueOf(tableName);
admin = connection.getAdmin();
if (admin.tableExists(tN)) {
try (Table table = connection.getTable(TableName.valueOf(tableName
.getBytes()))) {
Put put = new Put(rowkey.getBytes());
put.addColumn(family.getBytes(), qualifier.getBytes(),
value.toString().getBytes());
table.put(put); } catch (Exception e) {
e.printStackTrace();
}
} else {
System.out.println("插入数据的表不存在,请指定正确的tableName ! ");
}
} /**
* 根据table查询表中的所有数据 无返回值,直接在控制台打印结果
* */
@SuppressWarnings("deprecation")
public static void getValueByTable(String tableName) throws Exception {
Table table = null;
try {
table = connection.getTable(TableName.valueOf(tableName));
ResultScanner rs = table.getScanner(new Scan());
rs.forEach(r -> {
System.out.println("获得到rowkey:" + new String(r.getRow()));
Arrays.stream(r.raw()).forEach(keyValue -> {
System.out.println("列:" + new String(keyValue.getFamily())
+ ":" + new String(keyValue.getQualifier())
+ "====值:" + new String(keyValue.getValue()));
});
});
} finally {
IOUtils.closeQuietly(table);
}
} public static void main(String[] args) throws Exception {
System.out.println(createTable("learmTest","f1"));
System.out.println("***************插入一条数据:");
putDataH("learmTest","test1","f1","name","4545");
System.out.println("****************打印表中的数据:");
getValueByTable("learmTest");
} }

运行结果:

hbase远程api调用, 远程连接开发,环境构建相关问题总结的更多相关文章

  1. novaclient的api调用流程与开发

    novaclient的api调用流程与开发 2015年07月05日 19:27:17 qiushanjushi 阅读数:3915   http://blog.csdn.net/tpiperatgod/ ...

  2. PHP面试 PHP基础知识 十一(开发环境及相关配置)

    开发环境及相关配置 版本控制软件 集中式和分布式 集中式:集中式版本控制工具,版本库集中存放在中央服务器,团队成员里的每个人工作时从中央服务器下载代码,个人修改后再提交到中央服务器 分布式:分布式版本 ...

  3. Android开发环境搭建相关文章列表(转载)

    Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1, ...

  4. Spark的Java开发环境构建

    为开发和调试SPark应用程序设置的完整的开发环境.这里,我们将使用Java,其实SPark还支持使用Scala, Python和R.我们将使用IntelliJ作为IDE,因为我们对于eclipse再 ...

  5. Ubuntu16.04之开发环境构建

    Ubuntu软件安装相对于centos而言,那真的是要愉快的多啊! 以下安装步骤,本人在公司的测试环境和开发环境以及之前个人虚拟机的测试或生产环境都测验过,基本没有问题,只要按照步骤来,即可马到成功! ...

  6. Android:开发环境搭建相关问题

    1.Android.ADT.SDK概念与关系 SDK:Software Development Kit,中文意思是“软件开发工具包”.这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关 ...

  7. 嵌入式linux开发环境构建

    2.1硬件环境构建 2.1.1主机与目标板结合的交叉开发模式 在主机上编辑.编译软件,然后再目标办上运行.验证程序. 对于S3C2440.S3C2410开发板,进行嵌入式Linux开发时一般可以分为以 ...

  8. zju(1)嵌入式开发环境构建

    1. 实验目的 搭建嵌入式开发环境,安装ubntu,编译交叉工具链,安装配置tftp,nfs.用makefile 编译几个文件,在实验台上运行. 2. 实验内容 1) 安装ubuntu12.04 2) ...

  9. Android开发环境——SDK相关内容汇总

     Android开发环境将分为SDK相关内容.Eclipse ADT相关内容.模拟器AVD相关内容.调试器DDMS相关内容.日志LogCat相关内容.连接驱动ADB相关内容.内存泄露检测工具MAT相关 ...

随机推荐

  1. Liunx运维(九)-Liunx进程管理命令

    文档目录: 一.ps:查看进程 二.pstree:查看进程状态树 三.pgrep:查找匹配条件的进程 四.kill:终止进程 五.killall:通过进程名终止进程 六.pkill:通过进程名种植进程 ...

  2. 软件工程与UML代码互改

    这个作业属于哪个课程https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 这个作业的要求在哪里https://edu.cnblogs.com/campus/fz ...

  3. 使用Spring中@Async注解实现异步调用

    异步调用? 在解释异步调用之前,我们先来看同步调用的定义:同步就是整个处理过程顺序执行,当各个过程都执行完毕,并返回结果. 异步调用则是只是发送了调用的指令,调用者无需等待被调用的方法完全执行完毕,继 ...

  4. instanceof和isInstance的区别

    instanceof 是一个操作符(类似new, ==等) ( Object reference variable ) instanceof (class/interface type) if(a i ...

  5. 上班从换一张桌面壁纸开始——开源小工具Bing每日壁纸

    发布一个自用的开源小软件,Bing每日壁纸,使用c# winform开发.该小软件可以自动获取Bing的精美图片设置为壁纸,并且支持随机切换历史壁纸,查看壁纸故事. 功能特性 自动获取Bing最新图片 ...

  6. Java线程安全与锁优化,锁消除,锁粗化,锁升级

    线程安全的定义 来自<Java高并发实战>"当多个线程访问一个对象的时候,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法的时候进行任何 ...

  7. MBAir下安装httprunner2.5.7 har2case 出现zsh: command not found解决方案

    MBAir下python3.8安装httprunner2.5.7 出现zsh: command not found find / -name hrun查找到路径为: /Users/w550856/Li ...

  8. 【Linux】shell脚本实现多并发

    情景 shell脚本的执行效率虽高,但当任务量巨大时仍然需要较长的时间,尤其是需要执行一大批的命令时.因为默认情况下,shell脚本中的命令是串行执行的.如果这些命令相互之间是独立的,则可以使用&qu ...

  9. 两行代码修复了解析MySQL8.x binlog错位的问题!!

    写在前面 MySQL是互联网行业使用的最多的关系型数据库之一,而且MySQL又是开源的,对于MySQL的深入研究,能够加深我们对于数据库原理的理解.自从开源了mykit-data之后,不少小伙伴试用后 ...

  10. SDUST数据结构 - chap4 串

    函数题: 6-1 查找子串: 裁判测试程序样例: #include <stdio.h> #define MAXS 30 char *search(char *s, char *t); vo ...