Hadoop系列文章
Hadoop系列 (一):在CentOS中搭建hadoop环境(伪分布式)
Hadoop系列 (二):完全分布式搭建(腾讯云服务器+阿里云服务器)
Hadoop系列 (三):HDFS详细介绍
Hadoop系列 (四):Yarn详细介绍
Hadoop系列 (五):MapReduce详细介绍
Hadoop系列 (六):Spark搭建
Hadoop系列 (七):ZooKeeper详细介绍
Hbase概述
HBase是建立在Hadoop文件系统(HDFS)之上的分布式、面向列的数据库,通过利用Hadoop的文件系统提供容错能力。与Hive不同的时,通过Hbase可以进行实时读写或者随机访问大规模的数据集。
HBase是可以提供实时计算的分布式数据库,数据被保存在HDFS分布式文件系统上,由HDFS保证期高容错性。
HBase上的数据是以StoreFile(HFile)二进制流的形式存储在HDFS上block块中;但是HDFS并不知道的HBase用于存储什么,它只把存储文件认为是二进制文件,也就是说,HBase的存储数据对于HDFS文件系统是透明的。
HDFS | HBase |
---|
HDFS适于存储大容量文件的分布式文件系统。 | HBase是建立在HDFS之上的数据库。 | HDFS不支持快速单独记录查找。 | HBase提供在较大的表快速查找 | HDFS提供了高延迟批量处理;没有批处理概念。 | HBase提供了数十亿条记录低延迟访问单个行记录(随机存取)。 | HDFS提供的数据只能顺序访问。 | HBase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。 |
Hbase部署
在部署Hbase部署之前,需要配置好jdk以及zookeeper。详细可以参考我的历史文章,有详细说明。
单机模式
Hbase下载
[hadoop@master software]$ wget https://dlcdn.apache.org/hbase/stable/hbase-2.3.6-bin.tar.gz
[hadoop@master software]$ sudo tar -zxvf hbase-2.3.6-bin.tar.gz -C /opt/hbase --strip-components 1
[hadoop@master opt]$ sudo chown -R hadoop:hadoop hbase
配置hbase环境变量
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin
创建data及pids目录
[hadoop@master hbase]$ mkdir data
[hadoop@master hbase]$ mkdir pids
编辑配置文件
在/opt/hbase/conf/hbase-env.sh 文件中添加以下内容:
export JAVA_HOME=/usr/local/java/jdk1.8.0_291
export HADOOP_HOME=/opt/hadoop
export HBASE_HOME=/opt/hbase
export HBASE_CLASSPATH=/opt/hadoop/etc/hadoo
export HBASE_PID_DIR=/opt/hbase/pids
export HBASE_MANAGES_ZK=false
/opt/hbase/confhbase-site.xml 文件中添加以下内容:
启动
注意:单机版Hbase启动时,要确保zookeeper不在运行,因为Hbase和Zookeeper会运行在同一个JVM里面,如果zookeeper启动后,再启动Hbase,会报错:Could not start ZK at requested port of 2181. ZK was started at port: 2182
集群模式
节点规划
服务/机器 | master | slave1 | slave2 |
---|
NameNode | Y | | | DataNode | Y | Y | Y | Zookeeper | Y | Y | Y | RegionServer | Y | Y | Y | HBase Master | Y | | |
修改配置文件
在上面单机模式的基础上,修改hbase-site.xml 文件:
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.clientport</name>
<value>2181</value>
<description>Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.
</description>
</property>
<property>
<name>hbase.master.info.port</name>
<value>60010</value>
</property>
<property>
<name>zookeeper.session.timeout</name>
<value>120000</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/zookeeper</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/hbase/data</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
</configuration>
修改文件regionservers
[hadoop@master conf]$ pwd
/opt/hbase/conf
master
slave1
文件分发
将文件分发到slave1和slave2上
[hadoop@master opt]$ sudo tar zcvf hbase.tar.zip hbase
[hadoop@master opt]$ scp hbase.tar.zip hadoop@slave1:/home/hadoop/software/
hbase.tar.zip 100% 260MB 741.8KB/s 05:58
[hadoop@slave1 opt]$ sudo tar -zxvf hbase.tar.zip -C /opt/hbase/ --strip-components 1
启动
查看slave1
注:全部进程启动顺序
-
启动master服务器上的hadoop,hdfs,yarn等 [hadoop@master ~]$ start-all.sh
WARNING: Attempting to start all Apache Hadoop daemons as hadoop in 10 seconds.
WARNING: This is not a recommended production deployment configuration.
WARNING: Use CTRL-C to abort.
Starting namenodes on [master]
Starting datanodes
Starting secondary namenodes [slave1]
Starting resourcemanager
Starting nodemanagers
[hadoop@master ~]$ jps
3216 ResourceManager
3362 NodeManager
2690 NameNode
3715 Jps
2827 DataNode
-
启动master上的zookeeper [hadoop@master bin]$ sh zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@master bin]$ jps
3216 ResourceManager
3362 NodeManager
2690 NameNode
3955 Jps
3859 QuorumPeerMain
2827 DataNode
-
启动slave1上的zookeeper [hadoop@slave1 bin]$ sh zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /opt/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[hadoop@slave1 bin]$ jps
1632 Jps
1446 NodeManager
1320 SecondaryNameNode
1230 DataNode
1583 QuorumPeerMain
-
启动master上hbase [hadoop@master bin]$ start-hbase.sh
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hbase/lib/client-facing-thirdparty/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
running master, logging to /opt/hbase/logs/hbase-hadoop-master-master.out
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hbase/lib/client-facing-thirdparty/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
master: running regionserver, logging to /opt/hbase/logs/hbase-hadoop-regionserver-master.out
slave1: running regionserver, logging to /opt/hbase/logs/hbase-hadoop-regionserver-slave1.out
[hadoop@master bin]$ jps
3216 ResourceManager
4513 HRegionServer
3362 NodeManager
2690 NameNode
3859 QuorumPeerMain
4282 HMaster
5035 Jps
2827 DataNode
[hadoop@master bin]$
Hbase WEB UI界面
停止Hbase
hadoop@master bin]$ hbase-daemons.sh stop regionserver
master: running regionserver, logging to /opt/hbase/logs/hbase-hadoop-regionserver-master.out
slave1: running regionserver, logging to /opt/hbase/logs/hbase-hadoop-regionserver-slave1.out
master: stopping regionserver.
slave1: stopping regionserver.
[hadoop@master bin]$ stop-hbase.sh
[hadoop@master bin]$ jps
3216 ResourceManager
3362 NodeManager
2690 NameNode
12039 QuorumPeerMain
13899 Jps
2827 DataNode
[hadoop@master bin]$
./hbase-daemon.sh stop master
./stop-hbase.sh
HBase Shell
- 连接到HBase
-
显示Hbase Shell帮助信息 键入“help”并按“Enter”,以显示HBase Shell的一些基本用法信息以及几个示例命令。请注意,表名、行、列都必须用引号字符括起来。 -
创建表 hbase:001:0> create 'test', 'cf'
0 row(s) in 0.4170 seconds
=> Hbase::Table - test
-
列出表信息 hbase:002:0> list 'test'
TABLE
test
1 row(s) in 0.0180 seconds
=> ["test"]
-
存放数据 hbase:003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0850 seconds
hbase:004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0110 seconds
hbase:005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0100 seconds
-
删除表 hbase:008:0> disable 'test'
0 row(s) in 1.1820 seconds
hbase:009:0> enable 'test'
0 row(s) in 0.1770 seconds
-
退出Hbase Shell
? 要退出HBase Shell并断开与群集的连接,请使用该“quit”命令。HBase仍然在后台运行。
|