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'
至此,我们的实验就已经结束了
三、实验心得



浙公网安备 33010602011771号