Hbase安装部署&Hbase Shell基本操作

大数据技术与应用实验作业

实验名称:

 

 

一、实验目的

1.了解HBase的安装流程

2.了解HBase的工作原理

3.学习HBase Shell基本操作

二、实验过程

1.首先在Linux本地,新建/data/hbase1目录,用于存放所需文件。

mkdir -p /data/hbase1

切换目录到/data/hbase1下,使用wget命令,下载HBase所需安装包hbase-1.0.0-cdh5.4.5.tar.gz。

cd /data/hbase1

wget http://192.168.1.150:60000/allfiles/hbase1/hbase-1.0.0-cdh5.4.5.tar.gz

 

2.将/data/hbase1目录下,HBase的安装包hbase-1.0.0-cdh5.4.5.tar.gz,解压缩到/apps目录下。(这里我开始打错了爆出了下面的错误,后来发现是忘记加了t

tar -xzvf /data/hbase1/hbase-1.0.0-cdh5.4.5.tar.gz  -C  /apps

 

再切换到/apps目录下,将/apps/hbase-1.0.0-cdh5.4.5/,重命名为hbase。

cd /apps

mv /apps/hbase-1.0.0-cdh5.4.5/  /apps/hbase

 

3.添加HBase的环境变量。首先使用vim打开用户环境变量文件。

sudo vim ~/.bashrc

 

在环境变量文件末尾位置,追加HBase的bin目录路径相关配置,并保存退出。即下列内容:

#hbaseexport HBASE_HOME=/apps/hbaseexport PATH=$HBASE_HOME/bin:$PATH

 

执行source命令,使环境变量生效。

source ~/.bashrc

 

此时就可以调用HBase的bin目录下的脚本了。先来查看一下HBase的版本信息。

hbase version

 

4.下面开始配置HBase。切换目录到/apps/hbase/conf目录下,并使用vim编辑hbase-env.sh文件。

cd /apps/hbase/conf

vim hbase-env.sh

追加配置内容到hbase-env.sh中,并保存退出。

export JAVA_HOME=/apps/javaexport HBASE_MANAGES_ZK=trueexport HBASE_CLASSPATH=/apps/hbase/conf

 

很明显:

JAVA_HOME为java程序所在位置;

HBASE_MANAGES_ZK表示是否使用HBase自带的zookeeper环境;

HBASE_CLASSPATH指向hbase配置文件的路径。

5.下面使用vim打开hbase-site.xml文件。

vim hbase-site.xml

在两个<configuration>之间添加如下内容,并保存退出。

 

配置项说明:

hbase.master:HBase主节点地址。

hbase.rootdir:HBase文件所存储的位置。

hbase.cluster.distributed:HBase是否为分布式模式。

hbase.zookeeper.quorum:这里是配置ZooKeeper的服务器的地方。

hbase.zookeeper.property.dataDir:这里表示HBase在ZooKeeper上存储数据的位置。

注意:这里hbase.zookeeper.property.dataDir目录,需要提前创建。

sudo mkdir -p /data/tmp/zookeeper-hbase

 

/data/tmp/zookeeper-hbase目录切换所属用户为zhangyu及用户组为zhangyu。

sudo chown -R zhangyu:zhangyu /data/tmp/zookeeper-hbase

 

6.使用vim编辑/apps/hbase/conf/regionservers文件,此文件存储了HBase集群节点的ip地址,目前只有一台节点,所以只需要填写localhost即可。

vim /apps/hbase/conf/regionservers

修改文件内容为:

localhost

 

7.下面输入jps,查看当前进程,Hadoop进程是否已经启动。(没启动)

jps

 

若未启动,则切换到/apps/hadoop/sbin目录下,启动Hadoop。

cd /apps/hadoop/sbin./start-all.sh

 

Hadoop相关进程启动后,进入HBase的bin目录下,启动HBase服务。

cd /apps/hbase/bin/./start-hbase.sh

 

8.输入jps,查看HBase相关进程是否存在。

jps

 

输出结果为:

 

可以看到HMaster、HRegionServer、HQuorumPeer进程都已启动。

为了进一步测试HBase安装,是否正常,进入HBase Shell接口。

hbase shell

 

输入list的命令,查看当前有哪些HTable表。

list

 

创建一张表tb,表中含有一个列簇mycf。

create 'tb','mycf'

 

再次输入list,列出HBase中的表。

 

到此hbase的安装测试都已完毕!

HBase Shell基本操作

 

1.首先,我们切换到/apps/hadoop/sbin目录下,开启hadoop相关进程

cd /apps/hadoop/sbin./start-all.sh

 

2.然后切换到/apps/hbase/bin目录下,开启hbase相关进程

cd /apps/hbase/bin./start-hbase.sh

 

3.使用JPS查看相关进程

jps

 

4.输入hbase shell进入shell环境

hbase shell

 

 

5.使用version命令查看版本信息

version

 

6.使用status命令查看服务器状态

status

 

7.使用whoami命令可查看当前用户

whoami

 

8.使用list命令来查看一下都有哪些表

list

 

9.我们来创建一张表,表的参数如下:

表名为table_name,列族名为f1(语法:create <table>, {NAME => <family>, VERSIONS => <VERSIONS>})

create 'table_name','f1'

 

 10.使用exists命令查看table_name表是否存在

exists 'table_name'

 

 

11.使用desc命令来查看一下table_name表结构(语法:describe <table>)

desc 'table_name'

 

 

12.修改table_name的表结构,将TTL(生存周期)改为30天,这里要注意,修改表结构前必须先disable使表失效,修改完成后再使用enable命令,使表重新生效(可用is_enabled 'table_name'或is_disabled 'table_name'判断表的状态)

disable 'table_name'

alter 'table_name',{NAME=>'f1',TTL=>'2592000'}

enable 'table_name'

这里2592000为30天的秒数,再次使用desc命令会发现表的TTL已经改为了2592000

 

13.现在我们使用put命令向table_name表中插入一行数据

(语法:put <table>,<rowkey>,<family:column>,<value>,<timestamp>)

put 'table_name','rowkey001','f1:col1','value1'

put 'table_name','rowkey001','f1:col2','value2'

put 'table_name','rowkey002','f1:col1','value1'

 

这其中,'table_name'为表名,'rowkey001'为rowkey,'f1:col1' f1为列族,col1为列,'value1'为值,同一个列族下可以有多个列,同一个rowkey视为同一行。

14.使用get命令来查询一下table_name表,rowkey001中的f1下的col1的值

(语法:get <table>,<rowkey>,[<family:column>,....])

get 'table_name','rowkey001', 'f1:col1'

 

另一种用法:

get 'table_name','rowkey001', {COLUMN=>'f1:col1'}

 

15.查询表table_name,rowkey001中的f1下的所有列值

get 'table_name','rowkey001'

 

16.使用scan命令扫描全表(语法:scan <table>, {COLUMNS => [ <family:column>,.... ], LIMIT => num})

scan 'table_name'

 

也可以限定扫描表的前几行数据,我们扫描前1行数据

scan 'table_name',{LIMIT=>1}

 

由此也可以看出,rowkey相同的数据视为一行数据

17.使用count命令,查看table_name表中的数据行数

(语法:count <table>, {INTERVAL => intervalNum, CACHE => cacheNum})

INTERVAL设置多少行显示一次及对应的rowkey,默认1000;CACHE每次去取的缓存区大小,默认是10,调整该参数可提高查询速度

查询表table_name中的数据行数,每10条显示一次,缓存区为200

count 'table_name', {INTERVAL => 10, CACHE => 200}

 

 

由于我们的数据只有2行,所以查询结果为2

18.使用delete命令删除table_name表中,rowkey001中的f1:col2的数据

(语法:delete <table>, <rowkey>, <family:column> , <timestamp>,必须指定列名)

delete 'table_name','rowkey001','f1:col2'

 

这里需要注意,如果该列保存有多个版本的数据,将一并被删除

19.使用deleteall命令,删除table_name表中rowkey002这行数据

(语法:deleteall <table>, <rowkey>, <family:column> , <timestamp>,可以不指定列名,删除整行数据)

deleteall 'table_name','rowkey002'

 

20.使用truncate命令,删除table_name表中的所有数据

(语法: truncate <table> 其具体过程是:disable table -> drop table -> create table)

truncate 'table_name'

 

 

至此,我们的实验就已经结束了

 

三、实验心得

 

 

  

posted @ 2025-05-06 22:07  艾鑫4646  阅读(56)  评论(0)    收藏  举报