虽然安装成功了,但已经出现很多问题了,大概不久就会遇到。网易云课堂应该把大数据基础的“基础”两个字去掉,换成“自学”,课程跟实验没啥关系,老师对实验上各种工具配置安装的作用几乎为0,又没有给出专门的安装配置调试教程,全靠自己摸索。既然这样倒是把版本设定的新一些啊,旧版连官网都没资料了。这钱赚的也太容易了好吗。
0、运行环境
操作系统:Linux raspberrypi 4.1.7+
安装位置:/mnt/study
Hadoop版本:1.0.4
JDK版本:1.7
JDK安装位置:/usr/lib/jvm/jdk-7-oracle-armhf
1、安装Hbase-0.95.2
cd /mnt/study/
sudo sudo wget http://archive.apache.org/dist/hbase/hbase-0.95.2/hbase-0.95.2-hadoop1-bin.tar.gz
sudo tar -vxzf hbase-0.95.2-hadoop1-bin.tar.gz -C /mnt/study
sudo mv hbase-0.95.2-hadoop1 hbase
配置系统变量
sudo nano /hbase/conf/hbase-env.sh
修改其中的JAVA_HOME,去掉注释
export JAVA_HOME=/usr/lib/jvm/jdk-7-oracle-armhf
启动Hbase
cd /mnt/study/hbase/bin
sudo bash start-hbase.sh
bash hbase shell
2、在Hbase上操作数据
2.1创建表格
create 'test', 'cf'
2.2插入数据
put 'test', 'row1', 'cf:a', 'value1'
put 'test', 'row2', 'cf:b', 'value2'
put 'test', 'row3', 'cf:c', 'value3'
2.3读取数据
scan 'test'
get 'test', 'row1'
2.4批量插入数据
使用HBase的API中的Put方法; 使用HBase 的bulk load 工具;使用定制的MapReduce Job方式。
2.5删除表格
drop 'test'
四、实验结果
1、Hbase安装结果
pi@raspberrypi /mnt/study/hbase/bin $ bash hbase shell
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 0.95.2-hadoop1, rUnknown, Thu Aug 15 13:07:52 PDT 2013
hbase(main):001:0>
2、在Hbase上操作数据
创建test表
hbase(main):001:0> create 'test', 'cf'
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/mnt/study/hbase/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/mnt/study/hadoop/lib/slf4j-log4j12-1.4.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
=> Hbase::Table - test
查看test表
hbase(main):002:0> list 'test'
TABLE
test
1 row(s) in 0.3450 seconds
=> #<#<Class:0xddc7ac>:0x1507edd>
插入数据
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.6230 seconds
hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0400 seconds
hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0540 seconds
读取test表内容
hbase(main):006:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1451734395206, value=value1
row2 column=cf:b, timestamp=1451734430289, value=value2
row3 column=cf:c, timestamp=1451734438721, value=value3
3 row(s) in 0.4460 seconds
读取单行
hbase(main):007:0> get 'test', 'row1'
COLUMN CELL
cf:a timestamp=1451734395206, value=value1
1 row(s) in 0.1490 seconds
禁用表
hbase(main):008:0> disable 'test'
0 row(s) in 4.4650 seconds
hbase(main):009:0> get 'test', 'row1'
COLUMN CELL
ERROR: org.apache.hadoop.hbase.DoNotRetryIOException: test is disabled.
启用表
hbase(main):010:0> enable 'test'
0 row(s) in 1.7030 seconds
hbase(main):011:0> get 'test', 'row1'
COLUMN CELL
cf:a timestamp=1451734395206, value=value1
1 row(s) in 0.6670 seconds
删除表
hbase(main):013:0> drop 'test'
0 row(s) in 1.0720 seconds
hbase(main):014:0> list 'test'
TABLE
0 row(s) in 0.0910 seconds
=> #<#<Class:0xddc7ac>:0x15edbdf>
五、总结反思
对Hbase的结构和用法有了初步的了解。对test表的结构及插入结果如下图,并且value们附带一个时间戳。
test | cf:a | cf:b | cf:c |
row1 | value1 |
|
|
row2 |
| value2 |
|
row3 |
|
| value3 |
由于版本过旧,Apache官网目前已经没有对实验版本Hbase和Hadoop版本的对照列表,但在参考文献1里找到了。
批量导入不成功,可能和之前Hadoop和Hive配置不完全有关。
参考文献:
Apache HBase ™ Reference Guide
HBaseIntegration-ColumnMapping
slf4j提示Class path contains multiple SLF4J bindings
数据导入HBase最常用的三种方式及实践分析
查看原文:http://dsouth.all123.net:9527/wordpress/archives/192.html