专业的编程技术博客社区

网站首页 > 博客文章 正文

Hbase安装(HBase安装章鱼大数据)

baijin 2024-09-03 10:02:12 博客文章 5 ℃ 0 评论

hadoop和hbase兼容表

一、HBase集群

1、组件

ZK

1、通过选举,保证任何时候,集群中只有一个master,Master与RegionServers 启动时会向ZooKeeper注册

2、存贮所有Region的寻址入口

3、实时监控Region server的上线和下线信息。并实时通知给Master

4、存储HBase的schema和table元数据

5、默认情况下,HBase 管理ZooKeeper 实例,比如, 启动或者停止ZooKeeper

6、Zookeeper的引入使得Master不再是单点故障

HMaster

1、为Region server分配region

2、负责Region server的负载均衡

3、发现失效的Region server并重新分配其上的region

4、管理用户对table的增删改查操作

HRegionServer

1、Regionserver维护region,处理对这些region的IO请求

2、Regionserver负责切分在运行过程中变得过大的region

寻找RegionServer ZooKeeper--> -ROOT-(单Region)--> .META.--> 用户表 -ROOT

1)、表包含.META.表所在的region列表,该表只会有一个Region;

2)、Zookeeper中记录了-ROOT-表的location。

.META.

1)表包含所有的用户空间region列表,以及RegionServer的服务器地址。

Region

HBase自动把表水平划分成多个区域(region),每个region会保存一个表 里面某段连续的数据;每个表一开始只有一个region,随着数据不断插 入表, region不断增大,当增大到一个阀值的时候,region就会等分会 两个新的region(裂变); 当table中的行不断增多,就会有越来越多的region。这样一张完整的表 被保存在多个Regionserver上

2、配置文件

下载安装包:http://archive.apache.org/dist/hbase/2.2.7/

上传hbase包并解压:

[hadoop@localhost ~]$ tar -zxvf hbase-2.2.7-bin.tar.gz 

1)、hbase-env.sh

export JAVA_HOME=/home/hadoop/jdk8/ JDK路径

export HBASE_MANAGES_ZK=false 是否启动ZK集群。设置为true时,hbase启动是回去启动ZK集群,如果设置为false则不启动,使用正在启 动的集群

2)、hbase-site.xml

 <configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://ns1/hbase</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>host-10-1-198-133:2181,host-10-1-198-152:2181,host-10-1-198-155:2181</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.unsafe.stream.capability.enforce</name>
        <value>true</value>
    </property>
</configuration>

hbase.rootdir:指定hbase在hdfs的路径,如果hdfs是热备模式(hdfs://ns1/),则需要将core-site.xml,hdfs-site.xml配置文件放入hbase的 conf目录下

hbase.cluster.distributed:是否为集群部署

hbase.zookeeper.quorum:zk集群

hbase.unsafe.stream.capability.enforce这个属性的设置,是为了避免出现启动错误。也就是说,如果没有设置hbase.unsafe.stream.capability.enforce为false,那么,在启动HBase以后,会出现无法找到HMaster进程的错误,启动后查看系统启动日志(/usr/local/hbase/logs/hbase-hadoop-master-ubuntu.log),会发现如下错误:

2020-01-25 15:04:56,916 ERROR [master/localhost:16000:becomeActiveMaster] master.HMaster: Failed to become active master
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.

3)、hadoop为ha模式

需要将Hadoop目录下的hdfs-site.xml和core-site.xml复制到HBase目录的conf目录下,重新启动

3)、regionservers(子节点集合)

host-10-1-198-152

host-10-1-198-133

host-10-1-198-155

3、命令

启动: bin/start-hbase.sh 停止: bin/stop-hbase.sh 客户端: bin/hbase shell

二、HBase基础

1、hbase相关定义

表空间:

1、介绍

在HBase中,namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database,方便对表在业务上划分。HBase全局管理员可以创建、 修改和回收namespace的授权。

2、namespace

HBase系统默认定义了两个缺省的namespace

hbase:系统内建表,包括namespace和meta表

default:用户建表时未指定namespace的表都创建在此

创建的表信息,一个表默认归属一个表空间,未指定则属于default

行键 row key

值唯一,按照asscii码的大小排列数据的顺序。一行一个行键,快速定位数据。

比如: 001 002 003 0035 004

– 决定一行数据的唯一标识 – RowKey是按照字典顺序排序的。

– Row key最多只能存储64k的字节数据。

表中的一行数据,包含一个行键,多个列族,多个key

-value 列族 column-family 一个列族包含多个key-value值

key-value 具体的值,归属于具体的列族

2、hbase表操作 表空间增删改查 表:创建,修改,删除 表数据:添加,修改,删除,查询 https://www.cnblogs.com/charlist/p/7120377.html

  • 3、java操作hbase api
  • 1)、获取所有表名称
  • 2)、遍历表数据
  • 3)、解析数据行

4、hbase web端访问端口 16010 http://10.1.198.152:16010

5、Hbase存放路径查看 http://10.1.198.133:50070

/hbase/data/ 存放所有的表空间

/hbase/data/default/表空间下存储所有的表

表下边存放数据存放的编号

编号目录下保存列族信息(bbb)

问题:

1.创建表失败:

hbase(main):002:0> create 'aaa','bbb'

ERROR: org.apache.hadoop.hbase.PleaseHoldException: Master is initializing
        at org.apache.hadoop.hbase.master.HMaster.checkInitialized(HMaster.java:2824)
        at org.apache.hadoop.hbase.master.HMaster.createTable(HMaster.java:2030)
        at org.apache.hadoop.hbase.master.MasterRpcServices.createTable(MasterRpcServices.java:659)
        at org.apache.hadoop.hbase.shaded.protobuf.generated.MasterProtos$MasterService$2.callBlockingMethod(MasterProtos.java)
        at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:418)
        at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:133)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:338)
        at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:318)

解决方法:

  1. 在hbase-env.sh文件中添加如下命令:

export HBASE_DISABLE_HADOOP_CLASSPATH_LOOKUP=true

  1. 删除HDFS中存在的Hbase,hdfs dfs -rm -r /hbase
[hadoop@localhost ~]$ hdfs dfs -rm -r /hbase
Deleted /hbase
[hadoop@localhost ~]$ 
  1. 删除zookeeper中存在的Hbase,deleteall /hbase
[zk: localhost:2181(CONNECTED) 7] deleteall /hbase
[zk: localhost:2181(CONNECTED) 8] ls /
[hadoop-ha, product, rmstore, yarn-leader-election, zookeeper]
  1. 重启Hbase 再进行建表命令
hbase(main):002:0> create 'aaa','bbb'
Created table aaa
Took 2.5149 seconds                                                                                                                                                                                           
=> Hbase::Table - aaa
hbase(main):003:0> list
TABLE                                                                                                                                                                                                         
aaa                                                                                                                                                                                                           
1 row(s)
Took 0.0186 seconds                                                                                                                                                                                           
=> ["aaa"]

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表