文章目录

  • 1.基础的环境准备
  • 2.完全分布式 Fully-distributed
    • 2.1 配置文件hase-env.sh
    • 2.2 hbase-site.xml
    • 2.3 配置regionservers
    • 2.4 配置备用的master
    • 2.5 HDFS客户端配置
    • 2.6 启动
    • 2.7 通过页面查看节点信息
  • 3. java中客户端操作Hbase
    • 3.1 引入依赖
    • 3.2 初始化创建连接
    • 3.3 操作Hbase数据库
      • 3.3.1 创建表
      • 3.3.2 往创建的user表插入数据
      • 3.3.3 使用get 查询单条数据
      • 3.3.4 scan 查询数据
      • 3.3.5 删除数据
    • 3.4 关闭连接

1.基础的环境准备

基础的环境准备不在赘述,包括jdk安装,防火墙关闭,网络配置,环境变量的配置,各个节点之间进行免密等操作等。使用的版本2.0.5.

2.完全分布式 Fully-distributed

参考官方文档

分布式的部署,都是在单节点服务的基础配置好配置,直接分发到其他节点即可。

2.1 配置文件hase-env.sh

jdk路径的配置,以及不适用内部自带的zk.

export JAVA_HOME=/usr/java/default
export HBASE_MANAGES_ZK=false

2.2 hbase-site.xml

<configuration><property><name>hbase.rootdir</name><value>hdfs://muycluster/hbase</value></property><property><name>hbase.cluster.distributed</name><value>true</value></property><property><name>hbase.zookeeper.quorum</name><value>node02,node03,node04</value></property>
</configuration>

2.3 配置regionservers

配置集群regionserver的节点

node02
node03
node04

2.4 配置备用的master

conf/backup-masters

vi backup-masters
node03

2.5 HDFS客户端配置

官方提供三种方式进行配置

  • Add a pointer to your HADOOP_CONF_DIR to the HBASE_CLASSPATH environment variable in hbase-env.sh.

  • Add a copy of hdfs-site.xml (or hadoop-site.xml) or, better, symlinks, under ${HBASE_HOME}/conf, or

  • if only a small set of HDFS client configurations, add them to hbase-site.xml.
    一般我们都选择第二种,直接将hadoop-site.xml配置拷贝到 ${HBASE_HOME}/conf即可

2.6 启动

[root@node01 /]# start-hbase.sh
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/bigdata/hbase-2.0.5/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/bigdata/hadoop-2.6.5/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
running master, logging to /opt/bigdata/hbase-2.0.5/logs/hbase-root-master-node01.out
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/bigdata/hbase-2.0.5/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/bigdata/hadoop-2.6.5/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
node02: running regionserver, logging to /opt/bigdata/hbase-2.0.5/bin/../logs/hbase-root-regionserver-node02.out
node04: running regionserver, logging to /opt/bigdata/hbase-2.0.5/bin/../logs/hbase-root-regionserver-node04.out
node03: running regionserver, logging to /opt/bigdata/hbase-2.0.5/bin/../logs/hbase-root-regionserver-node03.out
node04: running master, logging to /opt/bigdata/hbase-2.0.5/bin/../logs/hbase-root-master-node04.out

2.7 通过页面查看节点信息

访问端口16010:http://node01:16010/master-status

3. java中客户端操作Hbase

3.1 引入依赖

   <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client --><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-client</artifactId><version>2.0.5</version></dependency><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-mapreduce</artifactId><version>2.0.5</version></dependency>

3.2 初始化创建连接

操作表Java API中主要提供了一个Admin对象进行表的 操作。

HBase schemas can be created or updated using the The Apache HBase Shell or by using Admin in the Java API.

   Configuration conf = null;Connection conn = null;//表的管理对象Admin admin = null;Table table = null;//创建表的对象TableName tableName = TableName.valueOf("user");@Beforepublic void init() throws IOException {//创建配置文件对象conf = HBaseConfiguration.create();//加载zookeeper的配置conf.set("hbase.zookeeper.quorum","node02,node03,node04");//获取连接conn = ConnectionFactory.createConnection(conf);//获取对象admin = conn.getAdmin();//获取数据操作对象table = conn.getTable(tableName);}

3.3 操作Hbase数据库

3.3.1 创建表

 /*** 创建表 主要使用Admin对象进行表的创建* @throws IOException*/@Testpublic void createTable() throws IOException {//定义表描述对象TableDescriptorBuilder tableDescriptorBuilder = TableDescriptorBuilder.newBuilder(tableName);//定义列族描述对象ColumnFamilyDescriptorBuilder columnFamilyDescriptorBuilder = ColumnFamilyDescriptorBuilder.newBuilder("cf".getBytes());//添加列族信息给表tableDescriptorBuilder.setColumnFamily(columnFamilyDescriptorBuilder.build());if(admin.tableExists(tableName)){//禁用表admin.disableTable(tableName);admin.deleteTable(tableName);}//创建表admin.createTable(tableDescriptorBuilder.build());}

3.3.2 往创建的user表插入数据

  @Testpublic void insert() throws IOException {Put put = new Put(Bytes.toBytes("row1"));put.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("name"),Bytes.toBytes("elite"));put.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("age"),Bytes.toBytes("22"));put.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("address"),Bytes.toBytes("gz"));table.put(put);}

3.3.3 使用get 查询单条数据

 @Testpublic void get() throws IOException {Get get = new Get(Bytes.toBytes("row1"));//在服务端做数据过滤,挑选出符合需求的列get.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("name"));get.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("age"));get.addColumn(Bytes.toBytes("cf"),Bytes.toBytes("address"));Result result = table.get(get);Cell cell1 = result.getColumnLatestCell(Bytes.toBytes("cf"),Bytes.toBytes("name"));Cell cell2 = result.getColumnLatestCell(Bytes.toBytes("cf"),Bytes.toBytes("age"));Cell cell3 = result.getColumnLatestCell(Bytes.toBytes("cf"),Bytes.toBytes("address"));System.out.print(Bytes.toString(CellUtil.cloneValue(cell1))+" ");System.out.print(Bytes.toString(CellUtil.cloneValue(cell2))+" ");System.out.print(Bytes.toString(CellUtil.cloneValue(cell3)));}

3.3.4 scan 查询数据

  /*** 获取表中所有的记录*/@Testpublic void scan() throws IOException {Scan scan = new Scan();ResultScanner rss = table.getScanner(scan);for (Result rs: rss) {Cell cell1 = rs.getColumnLatestCell(Bytes.toBytes("cf"),Bytes.toBytes("name"));Cell cell2 = rs.getColumnLatestCell(Bytes.toBytes("cf"),Bytes.toBytes("age"));Cell cell3 = rs.getColumnLatestCell(Bytes.toBytes("cf"),Bytes.toBytes("address"));System.out.print(Bytes.toString(CellUtil.cloneValue(cell1))+" ");System.out.print(Bytes.toString(CellUtil.cloneValue(cell2))+" ");System.out.println(Bytes.toString(CellUtil.cloneValue(cell3)));}}

3.3.5 删除数据

 /*** 删除数据* @throws IOException*/@Testpublic void delete() throws IOException {Delete delete = new Delete("row2".getBytes());table.delete(delete);}

3.4 关闭连接

 @Afterpublic void close(){try {table.close();} catch (IOException e) {e.printStackTrace();}try {admin.close();} catch (IOException e) {e.printStackTrace();}try {conn.close();} catch (IOException e) {e.printStackTrace();}}

Hbase数据库完全分布式搭建以及java中操作Hbase相关推荐

  1. mysql数据库 布尔类型_MySql数据库类型bit等与JAVA中的对应类型【布尔类型怎么存】...

    用char(1):可以表示字符或者数字,但是不能直接计算同列的值.存储消耗1个字节 用tinyint:只能表示数字,可以直接计算,存储消耗2个字节 用bit: 只能表示0或1,不能计算,存储消耗小于等 ...

  2. 分布式文件系统—HDFS—Java API操作

    原文作者:jiangw-Tony 原文地址:HDFS基础使用 hdfs 在生产应用中主要是客户端的开发,其核心步骤是从 hdfs 提供的 api 中构造一个 HDFS的访问客户端对象,然后通过该客户端 ...

  3. 使用 Java API 操作 HBase

    使用 Java API 操作 HBase 数据库,就类似HBase Shell,本质上一个是Java 代码,一个是Shell 命令.(hadoop 的文件系统莫不如此,可用Java API 的方式操作 ...

  4. java可以操作扫描仪吗_在Java中操作扫描仪(使用JNI)

    在Java中操作扫描仪(使用JNI) 作者:    文章来源: 发布日期:2005年01月01日    浏览次数:1次 这是一个用java来操作扫描仪的小例子: package edu.ctgu.JT ...

  5. 大数据学习笔记:利用JAVA项目操作HBase

    文章目录 一.Java类与HBase数据模型之间的对应关系 二.利用JAVA项目操作HBase (一)HBase表基本操作 1.创建Java项目HBaseDemo 2.在pom.xml添加对hadoo ...

  6. Java中操作Xml使用备忘

    List item 文章目录 Java中操作Xml使用备忘 1. Hutool中XmlUtil的使用简介 2. Hutool中XmlUtil快速读取Xml字符串某个节点值 [简单取值时,推荐使用] 2 ...

  7. java中操作字符串都有哪些类,他们之间有什么区别?

    java中操作字符串的类有哪些? String StringBuffer StringBuilder 区别 我们可以先看一下这几个类的继承关系图 从类的继承关系上来开的话,String和StringB ...

  8. java 中操作字符串都有哪些类?它们之间有什么区别?

    java 中操作字符串都有哪些类?它们之间有什么区别? String.StringBuffer.StringBuilder String : final修饰,String类的方法都是返回new Str ...

  9. HBase 6、用Phoenix Java api操作HBase

    开发环境准备:eclipse3.5.jdk1.7.window8.hadoop2.2.0.hbase0.98.0.2.phoenix4.3.0 1.从集群拷贝以下文件:core-site.xml.hb ...

最新文章

  1. 信通院2018人工智能发展白皮书技术篇重磅发布
  2. linux高编线程-------线程的创建,终止
  3. 那个悲伤的朋友,去了一趟菜场竟然活过来了
  4. 小学教师计算机应用水平和能力,中小学教师信息技术应用能力的现状与对策
  5. 单例模式访问mysql设计类图_如何应用策略设计模式分离JDBC数据库连接中的外部环境信息...
  6. iic调试软件上时钟芯片测试,时钟芯片的测试方法和系统 Clock chip testing methods and systems...
  7. 【转】阿里巴巴性能测试规划思路
  8. R 学习笔记《四》 R语言初学者指南--载入数据
  9. 商务数据分析与应用学习笔记
  10. 上兴远程控制使用及分析
  11. 价格不应成为电脑下乡主导
  12. 2016年第四届C/C++ A组蓝桥杯省赛真题
  13. 函数式编程之Promise的奇幻漂流
  14. linux wrf 系统_WRF在Linux环境下的安装
  15. [Vulfocus解题系列] 所复现漏洞总结
  16. java美元美分兑换_美元美分换算(美分美角美元的换算)
  17. 深度学习笔记--pytorch从梯度下降到反向传播BP到线性回归实现,以及API调用和手写数据集的实现
  18. 清华大学鲍橒计算机1999,《最强大脑》观察员学历:鲍橒清华,王峰武大,DR魏非211...
  19. Java的try-with-resource使用时遇到的问题
  20. Python Appium移动端app自动化测试框架

热门文章

  1. c++实现“反应时间”测试
  2. oracle12 expdb,12c导出导入用expdp
  3. 禁用U盘!隐藏盘符和禁止查看
  4. C宏#define的一些用法
  5. 免费收录网站的搜索引擎登录口大全
  6. MATLAB实现图像灰度直方图
  7. App开发者必备的运营、原型、UI设计工具整理
  8. Splay(splay模板)
  9. 安装centos 7
  10. HTML、CSS、JS(JAVA Sprict)