HBaseAPI使用,分布式搭建,多Master

本文介绍如何使用HBase Java客户端进行基本操作,并详细阐述了HBase与MapReduce集成的应用场景,包括HBase作为MapReduce的输入源、输出目标以及二者结合的方式。此外,还介绍了完全分布式及多Master配置步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、hbase Java client

  1. 添加maven依赖

    <dependency>
     <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-server</artifactId>
      <version>0.98.6-hadoop2</version>
    </dependency>
    <dependency>
      <groupId>org.apache.hbase</groupId>
      <artifactId>hbase-client</artifactId>
      <version>0.98.6-hadoop2</version>
    </dependency>   

    这里写图片描述

  2. 添加配置

    1. 第一种:configuration实例中添加
    2. 第二种:将配置文件放到classpath

      新建一个source folder,将下面5个文件放入
      在/opt/modules/hbase-0.98.6-hadoop2/conf下
      hbase-site
      regionservers
      log4j
      在/opt/modules/hadoop-2.5.0/etc/hadoop下
      hdfs-site
      core-site

      这里写图片描述
      这里写图片描述

  3. client 操作:增删改查

    1. 查:可以是按表查,可以按列簇查,也可以按列查
      这里写图片描述
      这里写图片描述
    2. 增:必须是按列添加
      这里写图片描述
      这里写图片描述
    3. 删:删除列
      这里写图片描述
      这里写图片描述
    4. 查scan
      这里写图片描述
      这里写图片描述
    5. 查scan范围查询
      这里写图片描述
      这里写图片描述
    6. rowkey前缀过滤
      插入一条16号的数据
      这里写图片描述
      rowkey前缀过滤
      这里写图片描述
      这里写图片描述
    7. 特殊配置

      //设置是否开启缓存
      scan.setCacheBlocks(true);
      //缓存的条数
      scan.setCaching(100);
      //设置每次取多少条
      scan.setBatch(10);
      //这两个参数共同决定了RPC请求次数

二、hbase与mapreduce集成

  1. hbase是一个数据库,用于数据存储
  2. mapreduce是一个计算框架,用于数据处理
  3. 集成的模型(3种情况)
    1. hbase作为mapreduce的输入
    2. hbase作为mapreduce的输出
    3. hbase作为输入和输出
  4. 官方提供了一些mapreduce的方法

    1. lib/hbase-server-0.98.6-hadoop2.jar
    2. 运行jar ,查看其中有哪些方法
      /opt/modules/hadoop-2.5.0/bin/yarn jar lib/hbase-server-0.98.6-hadoop2.jar
      报错:Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/filter/Filter
      at java.lang.Class.getDeclaredMethods0(Native Method)
      这里写图片描述
      原因:hadoop中缺少hbase的相关jar包
      -》方法一:将hbase的jar包拷贝到hadoop的lib(不推荐)
      -》方法二:配置临时环境变量,只在当前shell回话有效

      export HBASE_HOME=/opt/modules/hbase-0.98.6-hadoop2
      export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:`${HBASE_HOME}/bin/hbase mapredcp`

      这里写图片描述

      这里写图片描述

    3. 再次运行
      这里写图片描述
    4. 测试rowcounter命令
      /opt/modules/hadoop-2.5.0/bin/yarn jar lib/hbase-server-0.98.6-hadoop2.jar rowcounter student:stu_info
      这里写图片描述
    5. 自定义实现hbase的mapreduce
      1. 明确需求(将A表中的某些字段存进B表中):
      2. 将student:stu_info表中info列簇中的name列,导入到t5表中
        先创建t5表
        这里写图片描述
      3. 实现需求:map-》reduce-》driver
        -》input-》map -》shuffle-》reduce-》output
      4. hbase作为输入
      5. -》key:rowkey
        -》value:result(每一个rowkey包含的cell)
        -》maptask个数:一个region一个maptask
      6. 运行jar
        /opt/modules/hadoop-2.5.0/bin/yarn jar /opt/datas/hbaseMR.jar org.apache.hadoop.hbase.HMr
        这里写图片描述
  5. importtsv

    1. 查看参数

      /opt/modules/hadoop-2.5.0/bin/yarn jar lib/hbase-server-0.98.6-hadoop2.jar importtsv
      Usage: importtsv -Dimporttsv.columns=a,b,c <tablename> <inputdir>

      实现的注意事项:
      1-rowkey必须在文件中
      2-列簇必须加上
      3-文件路径指得是hdfs

    2. 第一种方式:直接将数据导入到hbase表中

    3. /opt/modules/hadoop-2.5.0/bin/yarn jar lib/hbase-server-0.98.6-hadoop2.jar importtsv -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:sex t5 /input/import.tsv
      这里写图片描述
      这里写图片描述
      这里写图片描述
    4. 第二种方式
      第一步:将数据文件转换成Hfile
      -Dimporttsv.bulk.output=/path/for/output
      第二步:将hfile导入到hbase表中
      1. 第一步
        /opt/modules/hadoop-2.5.0/bin/yarn jar lib/hbase-server-0.98.6-hadoop2.jar importtsv -Dimporttsv.bulk.output=/imp_output -Dimporttsv.columns=HBASE_ROW_KEY,info:name,info:age,info:sex t5 /input/import.tsv
        这里写图片描述
      2. 第二步:运行的只是一个Java类
        查看参数:/opt/modules/hadoop-2.5.0/bin/yarn jar lib/hbase-server-0.98.6-hadoop2.jar completebulkload
        提示:usage: completebulkload /path/to/hfileoutputformat-output tablename
        运行命令:/opt/modules/hadoop-2.5.0/bin/yarn jar lib/hbase-server-0.98.6-hadoop2.jar completebulkload /imp_output student:stu_info
        这里写图片描述

三、hbase的完全分布式及多master的配置

  1. Linux
    -》环境同步
    -》时间同步
    -》本地路由 etc/host
    -》SSH
    -》防火墙/selinux
    -》jdk
  2. hadoop

    1. 删除所有的log和数据

      rm -rf logs/*
      rm -rf data/*
    2. 修改配置
      -》hadoop-env
      -》core-site
      -》hdfs-site
      -》mapred-site
      -》yarn-site
      -》slaves(只有这个需要修改)
      hadoop-senior01.ibeifeng.com
      hadoop-senior02.ibeifeng.com
      hadoop-senior03.ibeifeng.com
      -》yarn-env

    3. 分发到集群
      scp -r hadoop-2.5.0/ hadoop-senior02.ibeifeng.com:/opt/modules/
      scp -r hadoop-2.5.0/ hadoop-senior03.ibeifeng.com:/opt/modules/
    4. 格式化(第一台机器)
      bin/hdfs namenode -format
  3. zookeeper
    1. 删除所有的log和数据
      rm -rf data/*
    2. 修改配置:vim conf/zoo.cfg
      server.1=hadoop-senior01.ibeifeng.com:2888:3888
      server.2=hadoop-senior02.ibeifeng.com:2888:3888
      server.3=hadoop-senior03.ibeifeng.com:2888:3888

      这里写图片描述
    3. 分发
      scp -r zookeeper-3.4.5/ hadoop-senior02.ibeifeng.com:/opt/modules/
      scp -r zookeeper-3.4.5/ hadoop-senior03.ibeifeng.com:/opt/modules/
    4. 创建id:vim data/myid
      第一台写1, 第二台写2, 第三台写3。
    5. 启动
  4. hbase

    1. 删除所有的log和数据
      rm -rf datas/*
      rm -rf logs/*

    2. 修改配置

      1. zookeeper地址: vim conf/hbase-site.xml
        这里写图片描述
      2. regionserver: vim conf/regionservers
        这里写图片描述
    3. 分发
      scp -r hbase-0.98.6-hadoop2 hadoop-senior02.ibeifeng.com:/opt/modules/
      scp -r hbase-0.98.6-hadoop2 hadoop-senior03.ibeifeng.com:/opt/modules/
  5. 启动

    1. 启动hadoop(第一台):sbin/start-dfs.sh
    2. zookeeper(每一台):bin/zkServer.sh status
    3. hbase(第一台):bin/start-hbase.sh
      这里写图片描述
      这里写图片描述
      这里写图片描述
  6. 实现多master

    1. 启动:hbase-daemons.sh master-backup
      这里写图片描述
      其它两台点到启动hbase的HMaster进程后,刷新页面显示Backup Masters
      直接在相应节点上启动进程即可

    如果是较老的版本:
    在conf目录下创建一个masters-backup
    写入主机名,一行一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值