一、实验目的
- 回顾Hadoop和Zookeeper安装与配置
- 掌握HBase安装与配置
- 理解HBase工作原理
- 掌握HBase表的基本操作
二、实验内容
- HBase安装与配置
- 使用HBase shell指令创建表
- 使用HBase shell命令添加/删除数据
- 使用命令删除表
三、实验步骤
(一)HBase安装与配置
HBase安装
HBase
的安装也分为三种,单机版、伪分布式、分布式;我们先来安装单机版。
单机版安装
首先我们去官网下载好HBase
的安装包;
接下来,将压缩包解压缩到你想安装的目录:
1. mkdir /app 2. cd /opt 3. ulimit -f 1000000 4. tar -zxvf hbase-2.1.1-bin.tar.gz -C /app
安装单机版很简单,我们只需要配置JDK
的路径即可,我们将JDK
的路径配置到conf/
下的hbase-env.sh
中。
我们先输入echo $JAVA_HOME
来复制JAVA_HOME
的路径,以方便之后的配置:
接着我们编辑HBase conf
目录下的hbase-env.sh
文件,将其中的JAVA_HOME
指向到你Java
的安装目录,最后保存设置:
vim /app/hbase-2.1.1/conf/hbase-env.sh
然后编辑hbase-site.xml
文件,在<configuration>
标签中添加如下内容:
1. <configuration> 2. <property> 3. <name>hbase.rootdir</name> 4. <value>file:///root/data/hbase/data</value> 5. </property> 6. <property> 7. <name>hbase.zookeeper.property.dataDir</name> 8. <value>/root/data/hbase/zookeeper</value> 9. </property> 10. <property> 11. <name>hbase.unsafe.stream.capability.enforce</name> 12. <value>false</value> 13. </property> 14. </configuration>
以上各参数的解释:
hbase.rootdir
:这个目录是region server
的共享目录,用来持久化Hbase
。URL
需要是'完全正确'的,还要包含文件系统的scheme
。例如,要表示hdfs
中的/hbase
目录,namenode
运行在namenode.example.org
的9090
端口。则需要设置为hdfs://namenode.example.org:9000 /hbase
。默认情况下Hbase
是写到/tmp
的。不改这个配置,数据会在重启的时候丢失;hbase.zookeeper.property.dataDir
:ZooKeeper
的zoo.conf
中的配置。快照的存储位置,默认是:${hbase.tmp.dir}/zookeeper
;hbase.unsafe.stream.capability.enforce
:控制HBase
是否检查流功能(hflush / hsync
),如果您打算在rootdir
表示的LocalFileSystem
上运行,那就禁用此选项。
配置好了之后我们就可以启动HBase
了,在启动之前我们可以将Hbase
的bin
目录配置到/etc/profile
中,这样更方便我们以后操作。 在etc/profile
的文件末尾添加如下内容:
1. # SET HBASE_enviroment 2. HBASE_HOME=/app/hbase-2.1.1 3. export PATH=$PATH:$HBASE_HOME/bin
HBASE_HOME
为你自己本机Hbase
的地址。
不要忘了,source /etc/profile
使刚刚的配置生效。
接下来我们就可以运行HBase
来初步的体验它的功能了:
在命令行输入start-hbase.sh
来启动HBase
,接着输入jps
查看是否启动成功,出现了HMaster
进程即表示启动成功了。
启动成功之后,咱们就可以对Hbase
进行一些基本的操作了。
根据上述步骤安装配置好HBase
数据库,并启动成功。
请注意,HBase
非常消耗资源,所以你在长时间没使用命令行后台会回收资源,如果你想保持环境不被注销,请在弹出延时窗口时点击延时,并且保持操作命令行,这样可以保持你的环境一直持续。
相关代码:
1. 1. #创建 app 目录 2. 2. mkdir /app 3. 3. #进入 /opt 目录下 4. 4. cd /opt 5. 5. #解压 Hbase 压缩包 6. 6. tar -zxvf hbase-2.1.1-bin.tar.gz -C /app 7. 7. #编辑hbase-env.sh配置文件 8. 8. vi /app/hbase-2.1.1/conf/hbase-env.sh 9. 9. 10. 10. #进入后配置配置 11. 11. export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_111 12. 12. 13. 13. #编辑hbase-site.xml配置文件 14. 14. vi /app/hbase-2.1.1/conf/hbase-site.xml 15. 15. 16. 16. <configuration> 17. 17. <property> 18. 18. <name>hbase.rootdir</name> 19. 19. <value>file:///root/data/hbase/data</value> 20. 20. </property> 21. 21. <property> 22. 22. <name>hbase.zookeeper.property.dataDir</name> 23. 23. <value>/root/data/hbase/zookeeper</value> 24. 24. </property> 25. 25. <property> 26. 26. <name>hbase.unsafe.stream.capability.enforce</name> 27. 27. <value>false</value> 28. 28. </property> 29. 29. </configuration> 30. 30. 31. 31. 32. 32. 33. 33. #配置Hbase环境变量 34. 34. vi /etc/profile 35. 35. 36. 36. HBASE_HOME=/app/hbase-2.1.1 37. 37. export PATH=$PATH:$HBASE_HOME/bin 38. 38. 39. 39. #是环境变量生效 40. 40. source /etc/profile 41. 41. 42. 42. #启动HBase(环境变量配置好后) 43. 43. start-hbase.sh
(二)使用HBase shell指令创建表
Hbase shell操作
启动HBase之后,我们输入hbase shell
进入到Hbase shell
命令行窗口:
在这里我们输入hbase shell
会启动一个加入了一些Hbase
特有命令的JRuby JRB
解释器,输入help
然后按回车键可以查看已分组的shell
环境的命令列表。
现在,我们来创建一个简单的表。
要新建一个表,首先必须要给它起个名字,并为其定义模式,一个表的模式包含表的属性和列族的列表。
例如:我们想要新建一个名为test
的表,使其中包含一个名为data
的列,表和列族属性都为默认值,则可以使用如下命令:
创建完毕之后我们可以输入list
来查看表是否创建成功:
编程要求
然后继续在HBase
中创建两张表,表名分别为:dept
,emp
,列都为:data
。
相关代码:
1. 1. # 启动 HBase 2. 2. start-hbase.sh 3. 3. # 进入 hbase shell 4. 4. hbase shell 5. 5. create 'test','data' 6. 6. create 'dept','data' 7. 7. create 'emp','data' 8. 8. 9. 9. 10. 10. # 退出 11. 11. exit
(三)使用HBase shell命令添加/删除数据
添加数据
我们来给上一步创建的test
表的列data
添加一些数据:
从上面例子我们可以看出,使用put
命令可以用来添加数据,使用get
命令可以获取数据。
当然我们肯定还会有一个需求:查看所有的数据。
输入scan
命令就可以查看所有的数据了。
删除数据、删除表
我们经常会添加错数据,想要删除然后重新添加应该怎么做呢?
删除整行数据:
deleteall 'test','row1'
指令:deleteall
表名,行名称
即可删除整行数据。
有时候我们还想将创建好的表删除,怎么做呢?
为了移除test
这个表,首先我们要把它设为禁用,然后在删除:
可以发现删除表需要两个步骤:
- disable 表名
- drop 表名
接着我们ctrl + c
或者 输入exit
退出HBase shell
命令行。
编程要求
在HBase
中创建表mytable
,列为data
,并在列族data
中添加三行数据:
- 行号分别为:
row1
,row2
,row3
; - 列名分别为:
data:1
,data:2
,data:3
; - 值分别为:
zhangsan
,zhangsanfeng
,zhangwuji
。
预期输出:
row1column=data:1,value=zhangsan
row2column=data:2,value=zhangsanfeng
row3column=data:3,value=zhangwuji
3row(s)
row1column=data:1,value=zhangsan
row2column=data:2,value=zhangsanfeng
row3column=data:3,value=zhangwuji
3row(s)
相关代码:
1. 1. # 启动 HBase 2. 2. start-hbase.sh 3. 3. # 进入 hbase shell 4. 4. hbase shell 5. 5. create 'mytable','data' 6. 6. put 'mytable','row1','data:1','zhangsan' 7. 7. put 'mytable','row2','data:2','zhangsanfeng' 8. 8. put 'mytable','row3','data:3','zhangwuji' 9. 9. 10. 10. 11. 11. 12. 12. # 退出 13. exit
四、实验心得
会使用HBase shell指令创建表
会使用HBase shell命令添加/删除数据
会使用命令删除表