hbase 部署

 HBase 是一个分布式的, 面向列的, 能存储并处理海量数据存储的非关系型开源nosql 数据库, 物理结构存储结构(k-v)

Hbase 强读写一致, 但是不是 最终一致性的数据存储, 这使得它非常适合高速的计算聚合,能够对大型数据提供随机,实时的读写访问

HBase适应场景: 对象存储, 时序数据, 推荐画像, 时空数据, 在线报表查询, 消息/订单, 朋友圈等

HBase 体系架构

1个多个master 服务器(主备)

多个regionserver服务器

zookeeper服务器

master服务器负责

1. 集群管理节点, 负责维护表结构(DDL  create drop  alter) ,不负责存储数据

2. 控制regionserver的故障转移, 监控regionserver状态, 负责分配regions 到 regionserver

3. 如果所有的master 都宕机, 仍然可以查询,存储 删除数据,但是不能新建表

reginserver 服务器:

1. 数据存储节点, 数据存储在HDFS中

2.负责响应用户I/O请求(get, put, delete), 实时向master 报告数据存储信息

3. 管理region的切分与合并

hbase 分为 HMaster 与 HRegionServer 

230.121     namenode1   HMaster    resourcemanager  zkfc

230.122     namenode2  HMaster    resourcemanager   zkfc

230.123     datanode1     HRegionServer     zk      nodemanager   journalnode

230.124     datanode2     HRegionServer     zk      nodemanager   journalnode

230.125     datanode3    HRegionServer      zk      nodemanager   journalnode

下载:

 wget https://mirrors.bfsu.edu.cn/apache/hbase/2.2.6/hbase-2.2.6-bin.tar.gz

解压

[hadoop@namenode1 tools ]$ tar -zxvf hbase-2.2.6-bin.tar.gz
[hadoop@namenode1 tools ]$ mv hbase
-2.2.6 ../
[hadoop@namenode1 tools ]$ cd /data/
[hadoop@namenode1 data  ]$ ln -s hbase-2.2.6 hbase

需要修改配置文件

hbase-env.sh
hbase-site.xml
regionservers
backup-masters 默认不存在,手动创建

hbase-env.sh

#注释掉,使用G1
#export HBASE_OPTS="$HBASE_OPTS -XX:+UseConcMarkSweepGC"

export JAVA_HOME=/data/jdk
#关闭自带的zk
export HBASE_MANAGES_ZK=false
export HADOOP_home=/data/hadoop

export HBASE_MASTER_OPTS="-server -Xms1G -Xmx1G -Xmn400m -Xss228k -XX:+UseG1GC -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/hadoop -XX:ErrorFile=/data/logs/hadoop/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/data/logs/hadoop/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m ${HBASE_MASTER_OPTS}"
export HBASE_REGIONSERVER_OPTS="-server -Xms1G -Xmx1G -Xmn400m -Xss228k -XX:+UseG1GC -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/hadoop -XX:ErrorFile=/data/logs/hadoop/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/data/logs/hadoop/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m ${HBASE_REGIONSERVER_OPTS}"
export HBASE_SHELL_OPTS="-server -Xms1G -Xmx1G -Xmn400m -Xss228k -XX:+UseG1GC -XX:G1ReservePercent=25 -XX:InitiatingHeapOccupancyPercent=30 -XX:+DisableExplicitGC -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/logs/hadoop -XX:ErrorFile=/data/logs/hadoop/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:/data/logs/hadoop/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m ${HBASE_SHELL_OPTS}"

hbase-site.xml
<configuration>
<!--这个目录是region服务器共享的目录,用来持久化存储hbase的数据-->
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://Abcns/hbase</value>
        <!--- 指定hadoop master服务器的写法,hbse监听hdfs的端口是900   
<value>hdfs://namenode1:9000/hbase</value> --> </property> <!--指定hbase集群为分布式集群--> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>datanode:2181,datanode2:2181,datanode3:2181</value> </property> <!-- zookeeper 元数据快照的存储目录 --> <property> <name>hbase.zookeeper.property.dataDir</name> <value>/data/zookeeper/data</value> </property> <property> <name>hbase.replication</name> <value>3</value> </property>
<!-- 指定hbase master web访问端口, 默认16010 --> <property> <name>hbase.master.info.port</name> <value>16010</value> </property>
<!--指定hbase regionserver web访问端口 默认16030 --> <property> <name>hbase.regionserver.info.port</name> <value>16030</value> </property> <!--解决启动hmaster 无法初始化wal问题--> <property> <name>hbase.unsafe.stream.capability.enforce</name> <value>false</value> </property> </configuration>

regionservers  配置文件

vim /data/hbase/conf/regionservers

datanode1
datanode2
datanode3

添加备份master

vim /data/hbase/conf/backup-masters

namenode2

拷贝/data/hbase 到各个节点

for i in {122..125}; do
  scp -r /data/hbase  172.16.230.$i:/data/
done
启动停止
集群整体启动
172.16
.230.121 start-hbase.sh stop-hbase.sh 单独hmaster启动 hbase-daemon.sh start master hbase-daemons.h stop master 单独启停 regionserver hbase-daemon.sh start regionserver hbase-daemons.h stop regionserver
hbase使用
hdfs  dfs -ls  /

hbase shell

status

页面:

HMaster 页面:
172.16.230.121:16010
172.16.230.121:16010

regionserver页面:
172.16.230.121:16030
172.16.230.121:16030

 hbase 分布式集群扩容与收缩

要先扩 hadoop  datanode节点, 然后才能扩 hbase的对应节点

172.16.230.121 主节点

# 添加新节点
vim  /data/hadoop/conf/regionservers
datanode1
datanode2
datanode3
datanode4  ###新加节点

 拷贝/data/hbase 目录到 datanode4

 启动进程

单独启停 regionserver
hbase-daemon.sh start regionserver

 vim /data/hbase/conf/hbase-env.sh

原文地址:https://www.cnblogs.com/fengjian2016/p/14657235.html