@evilking
2018-05-15T22:46:44.000000Z
字数 3667
阅读 1267
大数据平台篇
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文"Bigtable:一个结构化数据的分布式存储系统"。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
HBase清华源下载地址为: http://mirrors.tuna.tsinghua.edu.cn/apache/hbase/
里面有HBase的各个版本,我们演示使用的是hbase-1.2.5版本
如hive压缩包一样,我们通过SecureFX工具将下载好的hbase压缩包传到虚拟机上,比如/home/evilking/Document/目录下,然后解压并移动到/opt/下,命令如下:
[evilking@master Documents]$ tar -xvf hbase-1.2.5-bin.tar.gz
[evilking@master Documents]$ sudo mv hbase-1.2.5 /opt/hbase
[evilking@master hbase]$ sudo vim /etc/profile
其中:
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin
然后使用 source /etc/profile
命令使环境变量修改生效
切换到 $HBASE_HOME/conf/目录下:
[evilking@master hbase]$ cd $HBASE_HOME/conf
[evilking@master conf]$
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://192.168.56.102:9000/hbase</value>
</property>
<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>192.168.56.102:6000</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>hdfs://192.168.56.102:9000/hbase_property_dataDir</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>192.168.56.102</value>
</property>
</configuration>
其中在hdfs上利用到了两个目录/hbase和/hbase_property_dataDir,所以要在hadoop上创建这两个目录:
[evilking@master hbase]$ hadoop fs -mkdir /hbase
[evilking@master hbase]$ hadoop fs -mkdir /hbase_property_dataDir
[evilking@master conf]$ vim hbase-env.sh
其中,设置JAVA_HOME
[evilking@master conf]$ vim regionservers
因为我们搭建的是伪分布式,所以regionservers文件中只需要添加 master 节点就可以了
伪分布式的配置就算完成了,下面我们启动HBase,同hive一样,hbase的数据都是放在hdfs上,所以我们一样要先通过 start-all.sh
脚本来启动hadoop
然后通过 start-hbase.sh
来启动hbase,可以通过 jps
命令查看启动了哪些集群组件:
#启动hbase之前
[evilking@master hbase]$ jps
14690 Jps
12126 RESTServer
8840 SecondaryNameNode
8667 DataNode
8530 NameNode
#启动hbase
[evilking@master hbase]$ bin/start-hbase.sh
192.168.56.102: starting zookeeper, logging to /opt/hbase/bin/../logs/hbase-evilking-zookeeper-master.out
starting master, logging to /opt/hbase/logs/hbase-evilking-master-master.out
master: starting regionserver, logging to /opt/hbase/bin/../logs/hbase-evilking-regionserver-master.out
#查看启动hbase之后的组件
[evilking@master hbase]$ jps
15159 HRegionServer
15022 HMaster
14949 HQuorumPeer
12126 RESTServer
8840 SecondaryNameNode
8667 DataNode
8530 NameNode
15499 Jps
[evilking@master hbase]$
可以看到,HRegionServer进程和 HMaster进程已经启动起来了
下面启动 RESTServer进程:
#启动RESTServer进程
[evilking@master hbase]$ bin/hbase-daemon.sh start rest
starting rest, logging to /opt/hbase/logs/hbase-evilking-rest-master.out
[evilking@master hbase]$ jps
15159 HRegionServer
15022 HMaster
15792 Jps
14949 HQuorumPeer
8840 SecondaryNameNode
8667 DataNode
8530 NameNode
15686 RESTServer
[evilking@master hbase]$
通过 jps
命令看到该 RESTServer服务在后台已经启动。
#启动hbase shell,可以运行hbase命令
[evilking@master hbase]$ bin/hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hbase/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.2.5, rd7b05f79dee10e0ada614765bb354b93d615a157, Wed Mar 1 00:34:48 CST 2017
#运行hbase命令,查看当前数据库中有哪些表
hbase(main):001:0> list
TABLE
0 row(s) in 0.3810 seconds
=> []
hbase(main):002:0>
可以看到hbase命令正常运行,则说明到这里 HBase 伪分布式就算部署完成了