环境前提
1、JDK 1.8
2、Centos7
3、Hadoop 3.2安装
Hbase使用外部(非自带)zookeeper搭建伪分布式环境
1)下载 hbase-2.1.4-bin.tar.gz
2)解压和取别名
tar -zxvf ~/Downloads/hbase-2.1.4-bin.tar.gz -C ~/applications/
3)配置
环境变量
3.1 hbase-env.sh
修改conf/hbase-env.sh中的HBASE_MANAGES_ZK为false
# Tell HBase whether it should manage it's own instance of ZooKeeper or not.
# export HBASE_MANAGES_ZK=true
export HBASE_MANAGES_ZK=false
export HBASE_LOG_DIR=/wls/log/hbase/logs
export JAVA_HOME=/usr/local/java/jdk/
- -如果你是使用hbase自带的zk就是true,如果使用自己的zk就是false
创建sudo mkdir -p /wls/log/hbase/logs
3.2 配置 hbase-site.xml
<property>
<name>hbase.unsafe.stream.capability.enforcename>
<value>falsevalue>
<description>
Controls whether HBase will check for stream capabilities (hflush/hsync).
Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
with the 'file://' scheme, but be mindful of the NOTE below.
WARNING: Setting this to false blinds you to potential data loss and
inconsistent system state in the event of process and/or node failures. If
HBase is complaining of an inability to use hsync or hflush it's most
likely not a false positive.
description>
property>
启动 start-hbase.sh,(启动的hbase的时候要保证hadoop集群已经启动)
报错
解决方案,网上下载htrace-core-3.1.0-incubating.jar/wls/log/hadoop-yarn/apps
cp htrace-core-3.1.0-incubating.jar $HBASE_HOME/lib/
启动的HMaster十几秒后消失
查看hbase-xx-master-master.log
报错信息
hbase.rootdir: hdfs://master:9000/hbase
java.net.ConnectException: Call From localhost/127.0.0.1 to master:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
原因分析:
base.rootdir
- 这个目录是 RegionServer 的共享目录,用来持久化 HBase。URL 需要是 “完全正确” 的,还要包含文件系统的 scheme。 例如 “/hbase” 表示 HBase 在 HDFS 中占用的实际存储位置,HDFS 的 NameNode 运行在主机名为 master 的 8020 端口,则 hbase.rootdir 的设置应为 “hdfs://master5:8020/hbase”。在默认情况下 HBase 是写在 /tmp 中的。
- 不修改这个配置的话,数据会在重启的时候丢失。特别注意的是 hbase.rootdir 里面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 里面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必须一致
- 前面hbase-site.xml配置为hdfs://master:9000/hbase
解决方案:
- hbase-site.xml配置为hdfs://master/hbase,和Hadoop 的 core-site.xml 里面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口一致
新的异常
java.lang.IllegalStateException: The procedure WAL relies on the ability to hsync for proper operation during component failures, but the underlying filesystem does not support doing so. Please check the config value of 'hbase.procedure.store.wal.use.hsync' to set the desired level of robustness and ensure the config value of 'hbase.wal.dir' points to a FileSystem mount that can provide it.
hbase-site.xml增加配置
<description>
Controls whether HBase will check for stream capabilities (hflush/hsync). Disable this if you intend to run on LocalFileSystem, denoted by a rootdir with the 'file://' scheme, but be mindful of the NOTE below. WARNING: Setting this to false blinds you to potential data loss and inconsistent system state in the event of process and/or node failures. If HBase is complaining of an inability to use hsync or hflush it's most likely not a false positive.
description>
验证:
1)hdfs dfs -ls / 可以查看hbase是否在HDFS文件系统创建成功
[xx@master logs]$ hdfs dfs -ls /
Found 3 items
drwxr-xr-x - xx supergroup 0 2019-04-04 16:52 /hbase
drwxr-xr-x - xx supergroup 0 2019-04-04 16:10 /tmp
drwx------ - xx supergroup 0 2019-04-04 16:46 /user
其中hdfs会为每个用户都建一个回收站,用户删除文件时,文件并不是彻底地消失了,而是mv到了/user/用户名/.Trash/这个文件下,在一段时间内,用户可以恢复这些已经删除的文件。如果用户没有主动删除,那么系统会根据用户设置的时间把文件删除掉(某些默认设置是360分钟,用户也可以自己设置这个删除的时间设置),用户也可以手动清空回收站,这样删除的文件就再也找不回来了
2)通过webui验证: http://master:16010
3)使用hbase shell