本文所使用的Linux发行版本为:CentOS Linux release 7.4.1708 (Core)
准备工作
创建用户
useradd -m hadoop
passwd hadoop
下载安装包
1.jdk
到官方下载页面http://www.oracle.com/technetwork/java/javase/downloads/index.html,下载jdk,我下载的版本为jdk-8u151-linux-x64.tar.gz。
2.hbase安装包
到hadoop官网下载hadoop的二进制包,我使用的版本为:hbase-1.2.6-bin.tar.gz。
将jdk和hbase的包上传到linux上,路径为:/home/hadoop。
hbase安装及配置
安装
以hadoop用户登录,分别解压jdk和hadoop的包。
tar -zxvf jdk-8u151-linux-x64.tar.gz
tar -zxvf hbase-1.2.6-bin.tar.gz
重命名hadoop的目录
mv hbase-1.2.6/ hbase/
hadoop运行环境配置
下面所有文件和文件夹的路径,都是相对于hadoop用户的用户目录/home/hadoop
设置jdk路径
vi hbase/conf/hbase-env.sh
设置jdk的路径
# The java implementation to use. Java 1.7+ required.
export JAVA_HOME=/home/hadoop/jdk1.8.0_151
创建数据目录
mkdir -p data/hbase
mkdir -p data/zookeeper
设置数据目录
vi hbase/conf/hbase-site.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>file:///home/hadoop/data/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/data/zookeeper</value>
</property>
</configuration>
hbase启动和连接
启动
hbase/bin/start-hbase.sh
查看hbase状态
在浏览器中输入http://IP:16010,可以查看hdfs的状态。如果50070端口没有打开,以root用户输入下面命令打开16010端口。
iptables -I INPUT -p tcp --dport 16010 -j ACCEPT
连接hbase
hbase/bin/hbase shell
出现如下界面,表示连接成功,可以输入hbase的命令。
hbase(main):001:0>
hbase基本操作
说明
将下面的学生基本信息数据,使用hbase进行存储,并进行相关的操作。
id | name | sex | age |
---|---|---|---|
2018001 | zhangsan | male | 23 |
2018002 | lisi | female | 22 |
2018003 | wangwu | male | 24 |
创建表student
hbase(main):004:0> create 'student', 'f1'
0 row(s) in 1.3200 seconds
=> Hbase::Table - student
查看有哪些表
hbase(main):006:0> list
TABLE
student 1 row(s) in 0.0490 seconds
=> ["student"]
添加数据
分别输入下面语句,将三个学生的信息添加到hbase中。
put 'student', '2018001','f1:name','zhangsan'
put 'student', '2018001','f1:sex','male'
put 'student', '2018001','f1:age','23'
put 'student', '2018002','f1:name','lisi'
put 'student', '2018002','f1:sex','female'
put 'student', '2018002','f1:age','22'
put 'student', '2018003','f1:name','wanwu'
put 'student', '2018003','f1:sex','male'
put 'student', '2018003','f1:age','24'
显示表的所有记录
hbase(main):022:0> scan 'student'
ROW COLUMN+CELL
2018001 column=f1:age, timestamp=1514122123963, value=23
2018001 column=f1:name, timestamp=1514122123729, value=zhangsan
2018001 column=f1:sex, timestamp=1514122123843, value=male
2018002 column=f1:age, timestamp=1514122124178, value=22
2018002 column=f1:name, timestamp=1514122124062, value=lisi
2018002 column=f1:sex, timestamp=1514122124129, value=female
2018003 column=f1:age, timestamp=1514122127361, value=24
2018003 column=f1:name, timestamp=1514122124292, value=wanwu
2018003 column=f1:sex, timestamp=1514122124394, value=male
3 row(s) in 0.1050 seconds
根据行键id为查看某一条记录
显示行键id为2018001的学生信息
get 'student','2018001'
COLUMN CELL
f1:age timestamp=1514122123963, value=23
f1:name timestamp=1514122123729, value=zhangsan
f1:sex timestamp=1514122123843, value=male
3 row(s) in 0.0200 seconds
修改一条记录
将id为2018003的学生age改为25
put 'student', '2018003','f1:age','25'
0 row(s) in 0.0190 seconds
删除某一条记录
删除id为2018002的学生信息
deleteall 'student','2018002'
0 row(s) in 0.0500 seconds