hbase安装
官方文档
Apache HBase® Reference Guide
https://hbase.apache.org/book.html#quickstart
安装模式
独立HBase
一个独立的实例拥有所有HBase守护进程-Master、RegionServers和ZooKeeper -在一个JVM中运行,并持久化到本地文件系统。(可快速入门部署,体验 hbase shell ,但是不能够通过程序链接到hbase,因为 ZooKeeper 在 jvm 上运行,外部程序无法访问虚拟机内的 zk 端口)
JDK版本要求
HBase运行在Java虚拟机上,因此所有HBase部署都需要JVM,并且在每个节点上设置 JAVA_HOME
Apache HBase® Reference Guide
https://hbase.apache.org/book.html#java
开始使用HBase
步骤:下载、配置并在独立模式下启动HBase
1. 从Apache下载镜像列表中选择一个下载站点。点击建议的顶部链接。这将带您到HBase版本的镜像。单击名为stable的文件夹,然后将以. tar.gz结尾的二进制文件下载到本地文件系统。暂时不要下载以 src.tar.gz 结尾的文件。
2. 当前稳定版本链接 https://dlcdn.apache.org/hbase/2.5.11/hbase-2.5.11-bin.tar.gz
3. 解压缩下载的文件到新创建的目录。
tar xzvf hbase-2.5.11-bin.tar.gz -C /usr/local/hbase
并进入到解压目录下
cd /usr/local/hbase/hbase-2.5.11-bin
4. 您必须在启动 HBase 之前设置 JAVA_HOME 环境变量。为了使这更容易,HBase允许您在 conf/hbase-env.sh 文件中设置它。您必须找到Java在计算机上的安装位置,找到它的一种方法是使用 whereis java 命令。找到位置后,编辑 conf/hbase-env.sh 文件并取消注释以
#export JAVA_HOME= 开头的行,然后将其设置为Java安装路径。
export JAVA_HOME=/usr/jdk64/jdk1.8.0_112
5. bin/start-hbase.sh 脚本是作为启动HBase的一种方便方法提供的。发出命令,如果一切正常,标准输出中会记录一条消息,表明HBase启动成功。您可以使用 jps 命令来验证是否有一个名为 HMaster 的进程正在运行。在独立模式下,HBase运行这个JVM中的所有守护进程,即HMaster,单个HRegionServer和ZooKeeper守护进程。转到 http://localhost:16010 查看HBase Web UI。
1. 连接到HBase。
使用hbase shell命令连接到正在运行的HBase实例,该命令位于HBase安装的bin/目录中。
./bin/hbase shell
hbase(main):001:0>
2. 显示 HBase 帮助文本。
键入help并按Enter键,以显示HBase Shell 的一些基本用法信息,以及几个示例命令。请注意,表名、行、列都必须用引号引起来。
3. 创建表格。
使用create命令创建一个新表。必须指定表名和ColumnFamily名称。
hbase(main):001:0> create 'test', 'cf'
0 row(s) in 0.4170 seconds
=> Hbase::Table - test
4. 列出有关表的信息
使用list命令确认表存在
hbase(main):002:0> list 'test'
TABLE
test
1 row(s) in 0.0180 seconds
=> ["test"]
现在使用describe命令查看详细信息,包括配置默认值
hbase(main):003:0> describe 'test'
Table test is ENABLED
test
COLUMN FAMILIES DESCRIPTION
{NAME => 'cf', VERSIONS => '1', EVICT_BLOCKS_ON_CLOSE => 'false', NEW_VERSION_BEHAVIOR => 'false', KEEP_DELETED_CELLS => 'FALSE', CACHE_DATA_ON_WRITE =>
'false', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', MIN_VERSIONS => '0', REPLICATION_SCOPE => '0', BLOOMFILTER => 'ROW', CACHE_INDEX_ON_WRITE => 'f
alse', IN_MEMORY => 'false', CACHE_BLOOMS_ON_WRITE => 'false', PREFETCH_BLOCKS_ON_OPEN => 'false', COMPRESSION => 'NONE', BLOCKCACHE => 'true', BLOCKSIZE
=> '65536'}
1 row(s)
Took 0.9998 seconds
5. 将数据放入表中。
要将数据放入表中,请使用put命令。
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.0850 seconds
hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0110 seconds
hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0100 seconds
在这里,我们插入三个值,一次一个。第一个插入位于row1,列cf:a,值为value1。HBase中的列由一个列族前缀(在本例中为cf)、一个冒号和一个列限定符后缀(在本例中为a)组成。
6. 一次扫描表中的所有数据。
从HBase获取数据的方法之一是扫描。使用scan命令扫描表中的数据。您可以限制扫描,但目前已获取所有数据。
hbase(main):006:0> scan 'test'
ROW COLUMN+CELL
row1 column=cf:a, timestamp=1421762485768, value=value1
row2 column=cf:b, timestamp=1421762491785, value=value2
row3 column=cf:c, timestamp=1421762496210, value=value3
3 row(s) in 0.0230 seconds
7. 获取单行数据。
要一次获取一行数据,请使用get命令。
hbase(main):007:0> get 'test', 'row1'
COLUMN CELL
cf:a timestamp=1421762485768, value=value1
1 row(s) in 0.0350 seconds
8. 禁用表。
如果您想删除一个表或更改其设置,以及在其他一些情况下,您需要先禁用该表,使用disable命令。您可以使用enable命令重新启用它。
hbase(main):008:0> disable 'test'
0 row(s) in 1.1820 seconds
hbase(main):009:0> enable 'test'
0 row(s) in 0.1770 seconds
9. 要删除表,请使用drop命令。
hbase(main):011:0> drop 'test'
0 row(s) in 0.1370 seconds
10. 退出 HBase Shell。
要退出HBase Shell并断开与集群的连接,请使用 quit 命令。HBase仍在后台运行。
quit
提供 bin/start-hbase.sh 脚本以方便地启动所有HBase守护进程的方式相同,bin/stop-hbase.sh 剧本阻止了他们。
./bin/stop-hbase.sh
stopping hbase....................
发出命令后,进程可能需要几分钟才能关闭。使用jps确保HMaster和HRegionServer进程已关闭。
局部测试的伪分布
伪分布式模式意味着HBase仍然完全在单个主机上运行,但每个HBase守护进程(HMaster,HRegionServer和ZooKeeper)作为单独的进程运行:在独立模式下,所有守护进程都在一个JVM进程/实例中运行。(测试练手推荐)
1. 如果HBase正在运行,请停止它。
如果你刚刚完成快速入门,而HBase仍在运行,请停止它。
2. 配置HBase。
编辑 hbase-site.xml 配置。首先,添加以下属性,该属性指示HBase以分布式模式运行,每个守护进程一个JVM实例。即代表使用独立的 zookeeper
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定外部ZooKeeper集群的主机列表 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>host-ip</value>
</property>
<!-- 设置外部ZooKeeper的客户端端口(默认2181) -->
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property>
-
hbase.cluster.distributed
必须设为true,否则HBase将以单机模式运行,无法连接任何ZooKeeper。 -
hbase.zookeeper.quorum
填写外部ZooKeeper集群的主机名或IP地址,多个地址用逗号分隔。 -
hbase.zookeeper.property.clientPort
确保与外部ZooKeeper的服务端口一致(默认2181)。
3. 设置虚拟机 host
修改主机名为 hbase
vim /etc/hostname
改主机名原因: 因为hbase启动时会找zookeepers配置的master里面配置的hostname,默认为localhost,这个时修改不了的,导致IDEA访问的 localhost:16000时错误地址,所以我们改hostname 为 hbase ,然后在 win 修改 hosts 将其映射到虚拟机IP ,这样zookeeper寻找的master 地址就变为 hbase 了,IDEA访问的就是虚拟机IP加端口了,就不是原来的localhost:16000
修改主机映射
vim /etc/hosts
# 示例
192.168.137.130 hbase
修改后重启虚拟机
修改 win 的 host 文件,C:\WINDOWS\system32\drivers\etc\hosts 添加映射
# hbase
192.168.137.130 hbase
4. 开放端口
zookeeper 端口 2181
hbase webui 端口 16010
hbase client 通信端口 16000、16020
常见报错
Connection refused: no further information: localhost/127.0.0.1:16000
修改虚拟机 hostname, hosts 修改 win hosts 文件,具体见上文
把linux的 /etc/hosts 里的 ip 映射 ,比如 192.168.80.128 linuxname 和 win 的 hosts文件一致即可
org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
原因:Master正在初始化
解决:HDFS 中和 Zookeeper 中的 HBase 没有删除,所以这里需要将其进行删除
注意:删除Zookeeper中的 /hbase 目录,需要保证zookeeper已经开启,否则无法连接上。
方案:1. 删除zookeeper中的所有的/hbase目录
# 切换到安装 zookeeper的bin目录下,执行 ./zkCli.sh 命令
[XXhadoop102 bin]$ ./zkCli.sh
# 输入 ls / 命令行查看所有的内容
[zk: localhost:2181(CONNECTED) 0] ls /
[hbase, kafka, servers, spark, zookeeper]
# 使用 rmr /hbase 或者 deleteall /hbase 删除zookeeper中的所有 hbase的目录
[zk: localhost:2181(CONNECTED) 3] deleteall /hbase
Node does not exist: /hbase
# 此时,可以看到Zookeeper中已经没有HBase了
[zk: localhost:2181(CONNECTED) 5] ls /
[kafka, servers, spark, zookeeper]
2.删除HDFS下的所有HBase目录
# 词命令行运行是在Hadoop的根目录下
[XX@hadoop102 hadoop]$ hdfs dfs -du -rm -r /hbase
代码调试
stormlong/springboot-hbase
https://gitee.com/stormlong/springboot-hbase
7274

被折叠的 条评论
为什么被折叠?



