HBASE安装
HBASE简介
1.什么是HBASE:
HBASE是一个数据库----可以提供数据的实时随机读写
HBASE与mysql、oralce、db2、sqlserver等关系型数据库不同,它是一个NoSQL数据库(非关系型数据库)
Hbase的表模型与关系型数据库的表模型不同:
Hbase的表没有固定的字段定义;
Hbase的表中每行存储的都是一些key-value对
Hbase的表中有列族的划分,用户可以指定将哪些kv插入哪个列族
Hbase的表在物理存储上,是按照列族来分割的,不同列族的数据一定存储在不同的文件中
Hbase的表中的每一行都固定有一个行键,而且每一行的行键在表中不能重复
Hbase中的数据,包含行键,包含key,包含value,都是byte[ ]类型,hbase不负责为用户维护数据类型
HBASE对事务的支持很差
2.Hbase特性:
2.1 数据的最终持久化存储是基于--HDFS-->存储容量可以随时在线扩容
2.2 HBASE的数据增删改查模块是:分布式系统-->HBASE是一个分布式数据库系统
2.3 nosql
3.Hbase表结构:
4.Hbase工作机制:
HBASE安装
HBASE是一个分布式数据库
其中有一个管理角色: HMaster(一般2台,一台active,一台backup)
其他的数据节点角色: HRegionServer(很多台,看数据容量)
上传压缩包、解压、删除 docs(可删可不删)
1.vim hbase-env.sh
export JAVA_HOME=/usr/local/software/jdk1.8.0_11
export HBASE_MANAGES_ZK=false
2.vim hbase-site.xml
<configuration>
<!-- 指定hbase在HDFS上存储的路径 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://pengyy22:9000/hbase</value>
</property>
<!-- 指定hbase是分布式的 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<!-- 指定zk的地址,多个用“,”分割 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>pengyy42:2181,pengyy43:2181,pengyy44:2181</value>
</property>
</configuration>
3.启动
./start-hbase.sh
报错-1
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/software/hadoop-2.8.1/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/software/hbase-2.1.2/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.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]
解决方案:
1.这个方法修改后hadoop启动总是会告警(最好不要用此方法)
cd /usr/local/software/hadoop-2.8.1/share/hadoop/common/lib/
mv slf4j-log4j12-1.7.10.jar slf4j-log4j12-1.7.10.jar.copy
2.修改hbase项目下//conf/hbase-env.sh这个文件.添加下面这行
看key名字就应该能明白:Hbase禁用查找Hadoop的Classs=True
export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true
报错-2
2018-08-01 23:30:33,794 ERROR [main] master.HMasterCommandLine: Master exiting
java.lang.RuntimeException: Failed construction of Master: class org.apache.hadoop.hbase.master.HMaster.
解决方案:
cp $HBASE_HOME/lib/client-facing-thirdparty/htrace-core-3.1.0-incubating.jar $HBASE_HOME/lib/
可能是 hbase-2.1.2编译的问题
报错-3
Unhandled: org.apache.hadoop.hbase.ClockOutOfSyncException: Server pengyy42,16020,1564065239869 has been rejected; Reported time is too far out of sync with master. Time difference of 28800450ms > max allowed of 30000ms
解决方案:
date -s "2019-07-25 22:42:40"
hwclock -w
服务器时间不一致,手动设置成一样
4.检验
jps 命令查看
http://pengyy22:16010/
5.启动备用master
在集群中找任意一台机器启动一个备用的master
bin/hbase-daemon.sh start master
新启的这个master会处于backup状态
6.hbase命令行客户端
bin/hbase shell
Hbase> list // 查看表
Hbase> status // 查看集群状态
Hbase> version // 查看集群版本
原文:https://www.cnblogs.com/pengyy/p/11318264.html