1.讲解
HBase是一个分布式的、面向列的开源数据库,它是Apache Hadoop项目的子项目。以下是对HBase的详细讲解:
一、HBase的起源与背景
HBase的技术来源于Fay Chang所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。HBase在Hadoop之上提供了类似于Bigtable的能力,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
二、HBase的特点
高可靠性:HBase采用了自动故障检测和恢复技术,可以实现数据的高可靠性。
高性能:HBase采用了基于Memcached的存储引擎,可以实现高速的读写操作。同时,HBase支持高效的随机读写操作,可以在毫秒级别内完成数据访问。
面向列:与一般的关系数据库不同,HBase是基于列的而不是基于行的模式。这意味着在HBase中,数据是按照列族(Column Family)来组织的,而不是按照行来组织的。
可伸缩性:HBase采用了分布式存储和计算技术,可以实现数据的水平扩展。它可以处理PB级别的数据量,适合于存储大规模的数据。
实时性:HBase支持基于数据流的实时数据处理,可以实现数据的实时生成、传输和处理。这使得HBase在实时数据处理和可视化方面具有重要的应用价值。
三、HBase的架构
HBase的架构包括以下几个主要组件:
RegionServer:RegionServer是Region的管理者,主要负责对Region的操作,如分裂(Split)和合并(Compact)等。
Master:Master是所有RegionServer的管理者,主要负责对RegionServer的监控、负载均衡和故障转移等操作。同时,Master还负责维护HBase的元数据。
Zookeeper:Zookeeper为HBase提供了稳定服务和failover机制。它记录了HBase集群的元数据信息,如-ROOT-和.META.表的位置等。客户端在访问HBase数据之前,需要先通过Zookeeper找到相应的元数据信息。
HDFS:HDFS为HBase提供了高可靠性的底层存储支持。HBase利用HDFS来存储实际的数据文件。
四、HBase的数据模型
HBase的数据模型包括以下几个主要概念:
表(Table):HBase中的表是一个有序的key-value存储结构,可以存储大量的数据。
行(Row):HBase中的行是表中的基本单位,每行包含多个列。行是由行键(Row Key)唯一标识的。
列族(Column Family):列族是一组相关列的集合。在HBase中,定义表时只需要声明列族即可,不需要声明具体的列。这意味着往HBase写入数据时,字段可以动态、按需指定。
列(Column):列是由列族和列限定符(Column Qualifier)组成的。例如,“info:name”就是一个列,其中“info”是列族,“name”是列限定符。
版本(Version):HBase中的版本用于记录同一行同一列的不同值。每条数据写入时,如果不指定时间戳(Timestamp),系统会自动为其加上该字段,其值为写入HBase的时间。
五、HBase的访问接口
HBase提供了多种访问接口,方便用户进行数据操作:
Native Java API:这是最常规和高效的访问方式,适合Hadoop MapReduce Job并行批处理HBase表数据。
HBase Shell:HBase的命令行工具,最简单的接口,适合HBase管理使用。
Thrift Gateway:利用Thrift序列化技术,支持C++、PHP、Python等多种语言,适合其他异构系统在线访问HBase表数据。
REST Gateway:支持REST风格的Http API访问HBase,解除了语言限制。
Pig:可以使用Pig Latin流式编程语言来操作HBase中的数据。Pig最终会将操作编译成MapReduce Job来处理HBase表数据。
Hive:Hive提供了类似SQL的查询语言来访问HBase中的数据。但需要注意的是,并不是所有版本的Hive都支持HBase。
六、HBase的使用场景
HBase主要应用于以下场景:
海量数据存储:HBase可以处理PB级别的数据量,适合于存储大规模的数据,如日志数据、监控数据、交易数据等。
低延迟读写:HBase支持高效的随机读写操作,可以在毫秒级别内完成数据访问,适合于需要实时访问和查询数据的场景。
高并发读写:HBase可以支持大量的并发读写操作,可以处理数百万级别的并发访问请求,适合于需要处理高并发访问的场景。
数据分析和挖掘:HBase支持多种过滤器和聚合函数,可以对数据进行精确的过滤和统计分析,适合于需要进行数据分析和挖掘的场景。
实时计算和流处理:HBase可以与Apache的其他组件(如Storm、Spark等)集成,实现实时计算和流处理。
HBase是一个高性能、高可靠性、面向列、可伸缩的分布式存储系统。它在大数据处理、实时监控、实时分析等领域具有广泛的应用前景。
2.安装
我使用的是linux-centos系统 Hbase的版本是2.2.3
上传压缩包至/opt/software/software
解压hbase压缩包:(/opt/software)
tar -zxvf /opt/software/hbase-2.2.3-bin.tar.gz -C /opt/module
改名:(/opt/module)
mv /opt/module/hbase-2.2.3 /opt/module/hbase
3.配置部署
前置要求安装jdk和hadoop
配置环境变量:
vi /etc/profile
export HBASE_HOME=/opt/module/hbase
export PATH=$HBASE_HOME/bin:$PATH
使环境变量生效:
source /etc/profile
修改配置文件:(/opt/module/hbase/conf)
vi /opt/module/hbase/conf/hbase-env.sh
(去掉注释并修改)或者(直接在下面添加)
export JAVA_HOME=/opt/module/jdk
export HBASE_CLASSPATH=/opt/module/hbase/conf
export HBASE_MANAGES_ZK=false
vi /opt/module/hbase/conf/hbase-site.xml
(8020或9000,看hadoop配置的,我这里是8020)
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:8020/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/opt/module/hbase/data/tmp</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/opt/module/hbase/data/zookeeper/</value>
</property>
<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>
vi /opt/module/hbase/conf/regionservers
(去掉localhost,并添加以下内容)
master
slave1
slave2
复制给子节点:(前置:基础环境配置完毕ssh和/etc/host)
scp -r /opt/module/hbase/ slave1:/opt/module/hbase
scp -r /opt/module/hbase/ slave2:/opt/module/hbase
scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile
(记得source /etc/profile)
启动hbase:
start-hbase.sh
查看启动:
jps
slave1:
source /etc/profile
查看进程:
jps
slave2
source /etc/profile
查看进程:
jps
版权归原作者 卡莫纳王牌枪神 所有, 如有侵权,请联系我们删除。