美文网首页
【Hbase】

【Hbase】

作者: Y了个J | 来源:发表于2022-11-29 13:37 被阅读0次
HBase介绍

HBase是Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩、实时读写的分布式数据库。

利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为其分布式协同服务。

从技术上讲,HBase实际上更像是“数据存储”而不是“数据库”,因为它缺少RDBMS中的许多功能,例如字段型列,二级索引,触发器和高级查询语言等。

HBase的特点是:
  • 强大的一致读/写:HBase不是“最终一致”的DataStore。它非常适合高速计数器聚合等任务。
  • 自动分片:HBase表通过region分布在群集上,并且随着数据的增长,region会自动分割和重新分配。
  • 自动的RegionServer故障转移。
  • Hadoop/HDFS集成:HBase支持HDFS作为其分布式文件系统。
  • MapReduce:HBase支持通过MapReduce进行大规模并行处理,将HBase用作源和漏。 HBASE->MR->HDFS HBASE->MR->HBASE HDFS->MR->HBASE
  • Java客户端API:HBase支持易于使用的Java API以进行编程访问。
  • Thrift/REST API:HBase还支持非Java前端的Thrift和REST。
  • 块缓存和布隆过滤器:HBase支持块缓存和布隆过滤器,以实现大容量查询优化。
  • 运维管理:HBase提供内置网页,用于运维监控和JMX指标。
HBase下载地址:https://archive.apache.org/dist/hbase/
安装HBase(独立模式)

在独立模式下,HBase不使用HDFS,它使用本地文件系统,它在同一个JVM中运行所有HBase守护进程和本地ZooKeeper。

(1)将hbase-2.3.1-bin.tar.gz上传到/opt/software目录下
(2)解压hbase-2.3.1-bin.tar.gz到/opt/module/目录下
(3)修改hbase-2.3.1-bin的名称为hbase-single
(4)在conf/hbase-env.sh中设置JAVA_HOME
(5)修改conf/hbase-site.xml

tar -zxf /opt/software/hbase-2.3.1-bin.tar.gz -C /opt/module/
mv /opt/module/hbase-2.3.1-bin /opt/module/hbase-single

# 修改配置
cd /opt/module/hbase/conf
vi hbase-env.sh
export JAVA_HOME=  # 修改java环境地址,保存
export HBASE_MANAGES_ZK=false

修改hbase-site.xml文件vi hbase-site.xml

<configuration>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>false</value>
  </property>

  <property>
    <name>hbase.tmp.dir</name>
    <value>./tmp</value>
  </property>
  
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
  </property>

  <property>
    <name>hbase.rootdir</name>
    <value>file:///opt/module/hbase-single/hbase</value>
  </property>

  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>./zookeeper</value>
  </property>
</configuration>

我们不需要创建任何目录,hbase会创建。如果手动创建了,hbase会做一个迁移,这不是我们想要的。

bin/start-hbase.sh脚本用于启动hbase。启动成功,hbase会在标准输出打印成功启动的信息。使用jps查看进程,会只有一个HMaster进程。这个进程中包含了一个HMaster、一个HRegionServer以及一个zookeeper的daemon,它们在同一个进程中。

连接HBase:

./bin/hbase shell

hbase(main):001:0> create 'test', 'cf'
hbase(main):002:0> list 'test'
hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
hbase(main):003:0> put 'test', 'row1', 'cf:b', 'value2'
hbase(main):003:0> put 'test', 'row1', 'cf:c', 'value3'

hbase(main):016:0> scan 'test'
hbase(main):017:0> get 'test', 'row1'
hbase(main):021:0> drop 'test'
安装HBase(伪分布式模式)
tar -zxf /opt/software/hbase-2.3.1-bin.tar.gz -C /opt/module/
mv /opt/module/hbase-2.3.1-bin /opt/module/hbase

# 修改配置
cd /opt/module/hbase/conf
vi hbase-env.sh
export JAVA_HOME=  # 修改java环境地址,保存
export HBASE_MANAGES_ZK=false # 设置不使用自带zookeeper

修改hbase-site.xml文件,将hbase.cluster.distributed值从false改成true
vi hbase-site.xml

<configuration>
  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>

  <property>
    <name>hbase.tmp.dir</name>
    <value>./tmp</value>
  </property>
  
  <property>
    <name>hbase.rootdir</name>
    <value>hdfs://hadoop102:8020/hbase</value>
  </property>

  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>./zookeeper</value>
  </property>
</configuration>

注意:由于HBase要使用HDFS的客户端,HDFS客户端的配置必须让hbase看到并使用。
有三种方式做到这一点:
i.在hbase-env.sh中,将HADOOP_CONF_DIR添加到HBASE_CLASSPATH环境变量中,HADOOP_CONF_DIR指向HADOOP的etc/hadoop目录。
ii.拷贝hdfs-site.xml到HBASE_HOME/conf,当然,最好是做一个符号链接。
iii.如果HDFS客户端配置很少,可以直接添加到hbase-site.xml中。

bin/start-hbase.sh脚本用于启动hbase。启动成功,hbase会在标准输出打印成功启动的信息。使用jps查看进程,会只有一个HMaster进程。

安装HBase(分布式模式)
tar -zxf /opt/software/hbase-2.3.1-bin.tar.gz -C /opt/module/
mv /opt/module/hbase-2.3.1-bin /opt/module/hbase-cluster

# 修改配置
cd /opt/module/hbase-cluster/conf
vi hbase-env.sh
export JAVA_HOME=  # 修改java环境地址,保存
export HBASE_MANAGES_ZK=false # 设置不使用自带zookeeper

修改hbase-site.xml文件,将hbase.cluster.distributed值从false改成true
vi hbase-site.xml

<configuration>

 <property>
       <name>hbase.rootdir</name>
       <value>hdfs://hadoop102:8020/hbase</value>
 </property>      

  <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
  </property>

  <property>
    <name>hbase.tmp.dir</name>
    <value>./tmp</value>
  </property>

  <property>
        <name>hbase.zookeeper.quorum</name>
        <value>hadoop102,hadoop103,hadoop104</value>
  </property>
</configuration>

1.单点启动

[atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start master
[atguigu@hadoop102 hbase]$ bin/hbase-daemon.sh start regionserver

提示:如果集群之间的节点时间不同步,会导致regionserver无法启动,抛出ClockOutOfSyncException异常。
修复提示:
a、同步时间服务
请参看帮助文档:《尚硅谷大数据技术之Hadoop入门》
b、属性:hbase.master.maxclockskew设置更大的值

<property>
        <name>hbase.master.maxclockskew</name>
        <value>180000</value>
        <description>Time difference of regionserver from master</description>
</property>

2.群启

[atguigu@hadoop102 hbase]$ bin/start-hbase.sh
对应的停止服务:
[atguigu@hadoop102 hbase]$ bin/stop-hbase.sh

相关文章

网友评论

      本文标题:【Hbase】

      本文链接:https://www.haomeiwen.com/subject/ezohfdtx.html