hbase远程api调用, 远程连接开发,环境构建相关问题总结
2017-09-01 15:46
609 查看
平时在开发的过程中,都是将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地址,都配置成自己的对应
4000
主机的 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文件。在文件的末尾添加
5 ) 进入到服务武器的终端,开启对应的服务:
start-all.sh # 开启 hadoop 服务
start-hbase.sh # 开启 hbase 服务
3,编写例子测试:
运行结果:
下面我将介绍我在使用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地址,都配置成自己的对应
4000
主机的 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"); } }
运行结果:
相关文章推荐
- HPUX环境,在WebLogic服务器中使用java调用C动态连接库异常问题总结
- hadoop开发运行环境配置及相关问题总结
- 嵌入式视频监控系统环境搭建,cheese调用摄像头相关问题总结
- HBase总结(十四)LINUX下用Eclipse构建HBase开发环境
- vmare Ubuntu 下Hadoop 开发环境搭建eclipse win10 远程连接 安装与问题处理
- linux下qt开发的mysql工具远程连接问题总结
- windows 下构建ionic开发环境以及相关问题解决办法
- Linux下用Eclipse构建HBase开发环境 (总结13)
- HBase总结(十四)LINUX下用Eclipse构建HBase开发环境
- HBase总结(十四)LINUX下用Eclipse构建HBase开发环境
- CENTOS6.5环境下POSTGRESQL的安装与配置总结以及远程连接问题的解决
- 关于在WindowsXp 环境下Python2.6 + web.py 构建WEB开发环境遇到的问题
- 解决hessian远程调用连接超时的问题
- Ubuntu 12.04(x64) 配置Anroid开发环境相关问题
- Oracle在RAC环境下远程客户端连接的问题
- 关于Microsoft Unified Communications Managed API 3.0开发的相关技术问题(UserEndpoint 、ApplicationEndpoint的区别是什么?)
- 与 Flash Builder 开发环境相关的问题
- 解决远程桌面无法连接的问题-总结的精华
- 关于java开发中path和classpath环境变量问题的总结
- 关于Android开发环境的构建方法总结