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

这篇具有很好参考价值的文章主要介绍了Hbase数据库完全分布式搭建以及java中操作Hbase。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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
Hbase数据库完全分布式搭建以及java中操作Hbase

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");
    @Before
    public 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
     */
    @Test
    public 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表插入数据

  @Test
    public 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);
    }

Hbase数据库完全分布式搭建以及java中操作Hbase文章来源地址https://www.toymoban.com/news/detail-438516.html

3.3.3 使用get 查询单条数据

 @Test
    public 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 查询数据

  /**
     * 获取表中所有的记录
     */
    @Test
    public 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
     */
    @Test
    public void delete() throws IOException {
        Delete delete = new Delete("row2".getBytes());
        table.delete(delete);
    }

3.4 关闭连接

 @After
    public 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的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据开源框架环境搭建(五)——Hbase完全分布式集群的安装部署

    目录 实验环境: 实验步骤: 〇、Zookeeper安装配置: 一、安装前注意事项 二、HBase安装  三、Hbase集群配置 1.配置hbase-env.sh文件,位于Hbase安装目录/conf/ 2.配置hbase-site.xml文件,位于Hbase安装目录/conf/ 3.配置regionservers 4.新建 backup-masters文件,添加备份HMaster机器名 四、将配置好

    2024年02月08日
    浏览(45)
  • HBase集群搭建记录 | 云计算[CentOS7] | HBase完全分布式集群搭建

    本系列文章索引以及一些默认好的条件在 传送门 默认使用master节点并用root用户登录终端进行操作 文章难免会有点小bug,如果有显而易见的错误,比如没有创建文件夹时就已经开始在该文件夹下操作,还请读者自行创建~ 官网下载地址 博主因为课程需要以及版本问题,下载的

    2023年04月23日
    浏览(69)
  • 解释什么是分布式数据库,列举几种常见的分布式数据库系统

    敏感信息和隐私保护是指在收集、存储和使用个人数据时,需要采取一系列措施来保护这些数据的安全和机密性,防止数据被未经授权的第三方访问、使用或泄露。这些措施包括加密、访问控制、数据脱敏、数据加密、隐私政策等。 在隐私保护的技术手段方面,常用的技术包

    2024年02月08日
    浏览(57)
  • Hadoop3.x完全分布式环境搭建Zookeeper和Hbase

    集群规划 IP地址 主机名 集群身份 192.168.138.100 hadoop00 主节点 192.168.138.101 hadoop01 从节点 192.168.138.102 hadoop02 从节点 Hadoop完全分布式环境搭建请移步传送门 先在主节点上进行安装和配置,随后分发到各个从节点上。 1.1 解压zookeeper并添加环境变量 1)解压zookeeper到/usr/local文件夹

    2024年02月04日
    浏览(46)
  • HBase完全分布式配置(下)hbase篇 保姆级教程(近乎零基础跟着配也能配对)

    配置前也是要确保前面都配置正确,把多余的jdk都删掉(不会删看笔者第一篇文章) 上传不再赘述 解压: 改名: 环境变量: 应用: 要修改jdk和设置zookeeper外部使用 由于hbase对hdfs有依赖关系,则需要将hadoop下的core-site.xml和hdfs-site.xml复制到hbase中的conf目录下 zookeeper-hadoop-

    2024年04月17日
    浏览(38)
  • VMware创建Linux虚拟机之(四)ZooKeeper&HBase完全分布式安装

    Hello,world!    🐒本篇博客使用到的工具有:VMware16 ,Xftp7 若不熟悉操作命令,推荐使用带GUI页面的CentOS7虚拟机 我将使用带GUI页面的虚拟机演示 虚拟机(Virtual Machine) 指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算

    2024年02月07日
    浏览(46)
  • 分布式数据库架构

    对于mysql架构,一定会使用到读写分离,在此基础上有五种常见架构设计:一主一从或多从、主主复制、级联复制、主主与级联复制结合。 1.1、主从复制 这种架构设计是使用的最多的。在读写分离的基础上,会存在一台master作为写机,一个或多个slave作为读机。因为在实际的

    2024年02月10日
    浏览(50)
  • 分析型数据库:分布式分析型数据库

    分析型数据库的另外一个发展方向就是以分布式技术来代替MPP的并行计算,一方面分布式技术比MPP有更好的可扩展性,对底层的异构软硬件支持度更好,可以解决MPP数据库的几个关键架构问题。本文介绍分布式分析型数据库。 — 背景介绍— 目前在分布式分析型数据库领域,

    2023年04月14日
    浏览(61)
  • 分布式数据库-事务一致性

    version: v-2023060601 author: 路__ 分布式数据库的“强一致性”应该包含两个方面: serializability(串行) and linearizability(线性一致) ,上述图为“Highly Available Transactions: Virtues and Limitations”论文中对于一致性模型的介绍。图中箭头表示一致性模型之间的关系。对于异步网络上的分

    2024年02月08日
    浏览(53)
  • 分布式数据库NoSQL(二)——MongoDB 数据库基本操作

    MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似 json 的

    2024年02月06日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包