Hadoop Part 8 - 部署 HBase 和 HBase 常用操作(选做)

文章导航

«返回课程汇总页面

【版本】

当前版本号v20210601

版本修改说明
v20210601修正文件夹拷贝的命令错误和一些标点符号的错误
v20210520初始化版本

实验8.1 - 部署 HBase 完全分布式

【实验名称】

实验8.1 - 部署 HBase 完全分布式

【实验目的】

【实验环境】

【实验资源】

下载链接:https://pan.baidu.com/s/1ghde86wcK6pwg1fdSSWg0w
提取码:v3wv

【实验步骤】

  1. 在NodeA、NodeB、NodeC三个节点分别运行以下语句,创建 HBase 的安装目录。
sudo mkdir /opt/hbase
sudo chown hadoop:wheel /opt/hbase
  1. 使用 hadoop 登录NodeA节点。
su hadoop
  1. 上传 HBase 安装包hbase-1.6.0-bin.tar.gz 到 NodeA 节点 /home/hadoop 目录。

  2. 解压hbase-1.6.0-bin.tar.gz/home/hadoop 目录。

tar -xvf hbase-1.6.0-bin.tar.gz
  1. 把解压以后的目录移到安装目录
sudo mv ~/hbase-1.6.0/* /opt/hbase
  1. 提升 root 用户权限执行以下语句,加入 HBase 环境变量。
su
echo "export HBASE_HOME=/opt/hbase
export PATH=\$HBASE_HOME/bin:\$PATH:." >>/etc/profile
  1. 切换会 hadoop 用户
su hadoop
  1. 使环境变量生效。
source /etc/profile
  1. 编辑 HBase 的环境配置脚本。
cd $HBASE_HOME/conf
vim hbase-env.sh
  1. 在第1行加入
export JAVA_HOME=/opt/jdk8
  1. 在约128行,设置启用Zookeeper
export HBASE_MANAGES_ZK=true
  1. 保存 hbase-env.sh。

  2. 备份并编辑 HBase 配置文件 hbase-site.xml

cd $HBASE_HOME/conf
cp hbase-site.xml{,.bak}
vim hbase-site.xml
  1. 输入以下内容,注意替换你的学号后4位。
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <!--HBase 的数据保存在 HDFS 对应目录 -->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://nodea你的学号后4位:8020/hbase</value>
    </property>
    <!-- 是否是分布式环境 -->
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <!-- 配置 ZK 的地址 ,3 个节点都启用 ZooKeeper-->
    <property>
        <name>hbase.zookeeper.quorum</name>
		<value>nodea你的学号后4位,nodeb你的学号后4位,nodec你的学号后4位</value>
    </property>
    <!-- 冗余度 -->
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <!-- 主节点和从节点允许的最大时间误差 -->
    <property>
        <name>hbase.master.maxclockskew</name>
        <value>180000</value>
    </property>
    <!--zookeeper 数据目录 -->
    <property>
        <name>hbase.zookeeper.property.dataDir</name>
        <value>/opt/hbase/zookeeper</value>
    </property>
</configuration>
  1. 编辑Region Server的配置文件regionservers
cd $HBASE_HOME/conf
vi regionservers
  1. 清空文件内容,加入以下内容并保存。注意替换你的学号后4位。
nodea你的学号后4位
nodeb你的学号后4位
nodec你的学号后4位
  1. 同步 HBase 安装目录内容到 NodeB 和 NodeC。注意替换为你的学号后4位。
rsync -r /opt/hbase nodeb你的学号后4位:/opt
rsync -r /opt/hbase nodec你的学号后4位:/opt

rsync 是文件同步命令,可以用于本机和远程之间的文件同步 如果没有安装,可以使用 yum install rsync 安装

  1. 启动 HDFS 和 HBase。
start-dfs.sh
start-hbase.sh

【实验验证步骤】

  1. 在 NodeA、NodeB 和 NodeC 3个节点分别输入jps。
jps
  1. 查看其中1个节点是否存在以下进程
HRegionServer
HQuorumPeer
HMaster
  1. 另外2个节点存在以下进程。
HQuorumPeer
HRegionServer

实验8.2 通过 HBase Shell 访问HBase

【实验名称】

实验8.2 通过 HBase Shell 访问HBase

【实验目的】

掌握 HBase Shell 常用指令的使用。

【实验环境】

【实验资源】

【实验步骤】

  1. 启动 HBase
start-dfs.sh
start-hbase.sh
  1. 启动 HBase Shell。
hbase shell
  1. 执行命令前,请大家注意在hbase shell 下删除字符需要同时按下 ctrl+Backspace

  2. 查询服务器状态。

status
  1. 查询 HBase 版本。
version
  1. 查看所有表。
list
  1. 增、删、改 注意:为了避免冲突,下面的表名命名规则为 member + 学号,比如学号 +学号,表名为 member+学号。
create 'member+学号后4位','member_id','address','info'
describe 'member+学号后4位'
alter 'member+学号后4位', 'id'
describe 'member+学号后4位'
put 'member+学号后4位', 'debugo','id','11'
put 'member+学号后4位', 'debugo','info:age','27'
put 'member+学号后4位', 'debugo','info:birthday','1991-04-04'
put 'member+学号后4位', 'debugo','info:industry', 'it'
put 'member+学号后4位', 'debugo','address:city','Shanghai'
put 'member+学号后4位', 'debugo','address:country','China'
put 'member+学号后4位', 'Sariel', 'id', '21'
put 'member+学号后4位', 'Sariel','info:age', '26'
put 'member+学号后4位', 'Sariel','info:birthday', '1992-05-09'
put 'member+学号后4位', 'Sariel','info:industry', 'it'
put 'member+学号后4位', 'Sariel','address:city', 'Beijing'
put 'member+学号后4位', 'Sariel','address:country', 'China'
put 'member+学号后4位', 'Elvis', 'id', '22'
put 'member+学号后4位', 'Elvis','info:age', '26'
put 'member+学号后4位', 'Elvis','info:birthday', '1992-09-14'
put 'member+学号后4位', 'Elvis','info:industry', 'it'
put 'member+学号后4位', 'Elvis','address:city', 'Beijing'
put 'member+学号后4位', 'Elvis','address:country', 'china'
scan 'member+学号后4位'
alter 'member+学号后4位', {NAME => 'member_id', METHOD => 'delete' }
delete 'member+学号后4位','debugo','info:age'
get 'member+学号后4位','debugo','info:age'
deleteall 'member+学号后4位','debugo'
get 'member+学号后4位','debugo'
is_enabled 'member+学号后4位'
is_disabled 'member+学号后4位'
exists 'member+学号后4位'
disable 'member+学号后4位'
drop 'member+学号后4位'
  1. 查询
count 'member+学号后4位'
get 'member+学号后4位', 'Sariel'
get 'member+学号后4位', 'Sariel', 'info'
scan 'member+学号后4位'
scan 'member+学号后4位', {COLUMN=>'info'}
scan 'member+学号后4位', {COLUMNS=> 'info:birthday'}
scan 'member+学号后4位', { STARTROW => 'Sariel', LIMIT=>1, VERSIONS=>1}
scan 'member+学号后4位', FILTER=>"ValueFilter(=,'binary:26')"
scan 'member+学号后4位', FILTER=>"ValueFilter(=,'substring:6')"
scan 'member+学号后4位', FILTER=>"ColumnPrefixFilter('birth') "
scan 'member+学号后4位', FILTER=>"ColumnPrefixFilter('birth') AND ValueFilter(=,'substring:1988')"
scan 'member+学号后4位', FILTER=>"PrefixFilter('E')"