简介:

Apache HBase 是一个分布式的、面向列的开源 NoSQL 数据库。具有高性能、高可靠性、可伸缩、面向列、分布式存储的特性。

HBase 的数据文件最终落地在 HDFS 之上,所以在 Hadoop 集群中,DataNode 节点都需安装 HBase Worker Node。

另外,HBase 受 ZooKeeper 管理,还需安装 ZooKeeper 单机或集群。建议 HBase Master 节点不要与集群中其余 Master 节点安装在同一台物理服务器。

HBase Master 处理 HBase 集群环境下的很多核心功能,协调管理 RegionServer、故障转移、重新分配等

  HBase Master  处理 HBase 集群环境下的很多核心功能,协调管理 RegionServer、故障转移、重新分配等

    LoadBalancer     进程分发 Region 到多个 RegionServer
Catalog Janitor 进程检查不可用的 Region、进行垃圾回收
Log Cleaner 进程用于删除陈旧的 WAL 文件 RegionServer 处理数据移动 (get、scan、存储put提交的数据、标记delete数据)、紧缩操作 (小紧缩、主紧缩)、维护 Block Cache、管理 MemStore 和 WAL、接收来自 Master 的新 Region CompactSplitThread 查找需要拆分的 Region (大于 filesize 的 Region)、处理小紧缩
MajoyCompactionChecker 检查是否需要主紧缩
MemStoreFlusher 检查 MemStore 是否满足被刷出到磁盘
LogRoller 用于关闭 WAL 并创建一个新文件

官方地址:http://hbase.apache.org
官方文档:http://hbase.apache.org/book.html
下载地址:http://mirror.bit.edu.cn/apache/hbase/stable/hbase-1.2.6-bin.tar.gz

HBase Shell -> HMaster(HBase Master) -> HRegionServer(HBase RegionServer) -> Region -> HFile(HDFS File)

一、安装 HBase

shell > wget http://mirror.bit.edu.cn/apache/hbase/stable/hbase-1.2.6-bin.tar.gz
shell > tar zxf hbase-1.2.-bin.tar.gz -C /usr/local/ shell > chown -R hadoop.hadoop /usr/local/hbase-1.2.

二、配置 HBase

1、编辑 hbase-env.sh

# cd /usr/local/hbase-1.2.
hadoop shell > vim conf/hbase-env.sh
# 指定 java 目录
export JAVA_HOME=/usr/java/default
# 管理自身 ZooKeeper
export HBASE_MANAGES_ZK=false

2、编辑 hbase-site.xml

hadoop shell > vim conf/hbase-site.xml

<configuration>

    <property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property> <property>
<name>hbase.rootdir</name>
<value>hdfs://master.hadoop:8020/hbase</value>
</property> <property>
<name>hbase.zookeeper.quorum</name>
<value>datanode01.hadoop,datanode02.hadoop,datanode03.hadoop</value>
</property> </configuration> # hbase.cluster.distributed 是否启用集群模式
# hbase.rootdir HBase 数据根目录
# hbase.zookeeper.quorum ZooKeeper 节点

3、编辑 regionservers

hadoop shell > vim conf/regionservers

datanode01.hadoop
datanode02.hadoop
datanode03.hadoop # 指定 regionserver 节点

三、同步目录、设置环境变量

shell > ansible datanode -m synchronize -a 'src=/usr/local/hbase-1.2.6 dest=/usr/local/'

shell > echo 'export PATH=$PATH:/usr/local/hbase-1.2.6/bin' >> /etc/profile && source /etc/profile

shell > ansible datanode -m shell -a 'echo "export PATH=$PATH:/usr/local/hbase-1.2.6/bin" >> /etc/profile && source /etc/profile'

四、启动服务

1、ZooKeeper

shell > ansible datanode -m shell -a '/usr/local/zookeeper-3.4.10/bin/zkServer.sh start'

2、Hadoop

hadoop shell > sh sbin/start-all.sh

3、HBase

hadoop shell > sh bin/start-hbase.sh

# 启动服务后,master.hadoop 主机会启动一个 HMaster 的进程,DataNode 主机会启动一个 HRegionServer 的进程,可用 jps 查看
# HDFS 文件系统上会创建相应的目录,可用 hdfs dfs -ls / 查看,位置即 hbase.rootdir 参数指定
# ZooKeeper 上也会创建相应的 Znode,可用 zkCli.sh -server IP:PORT,IP:PORT,IP:PORT 连接 ZooKeeper Server 通过 ls / 查看
# 并且可以通过 WEB UI 来查看 HMaster、HRegionServer 运行状态、表、Region 数量等
# HMaster:http://HMaster:16010 HRegionServer: http://HRegionServer:16030 注意,0.98.x 版本之前端口为 60010、60030

五、HBase shell

1、获取帮助

hadoop shell > hbase shell

hbase(main)::> help
HBase Shell, version 1.2., rUnknown, Mon May :: CDT
Type 'help "COMMAND"', (e.g. 'help "get"' -- the quotes are necessary) for help on a specific command.
Commands are grouped. Type 'help "COMMAND_GROUP"', (e.g. 'help "general"') for help on a command group. COMMAND GROUPS:
Group name: general
Commands: status, table_help, version, whoami Group name: ddl
Commands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, locate_region, show_filters Group name: namespace
Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables Group name: dml
Commands: append, count, delete, deleteall, get, get_counter, get_splits, incr, put, scan, truncate, truncate_preserve
... # 截取了部分输出
# 输入 help 指令即可打印出帮助信息,有各类的指令 general、ddl、namespace、dml 等 # XShell 连接服务器,HBase Shell 不能回退的问题,、Ctrl+Backspace 组合键解决 、XShell 会话 -> 属性 -> 终端 -> 键盘 -> BACKSPACE 键序列改为 ASCII (Ctrl+?)(I) 即可 hbase(main)::> help 'general'
Command: status
Show cluster status. Can be 'summary', 'simple', 'detailed', or 'replication'. The
default is 'summary'. Examples: hbase> status
hbase> status 'simple'
hbase> status 'summary'
hbase> status 'detailed'
hbase> status 'replication'
hbase> status 'replication', 'source'
hbase> status 'replication', 'sink' Command: table_help
Help for table-reference commands. # 进一步指定 help 'command',可以获取指定命令的帮助信息,如 help 'alter',注意:help 后面的指令要用 '' 包裹

2、namespace 命名空间

hbase(main)::> help 'namespace'  # 获取 namespace 帮助信息( 输出就不截出了,以防文章太长 )

hbase(main)::> list_namespace    # 打印默认的 namespace
NAMESPACE
default
hbase
row(s) in 0.0220 seconds # namespace 类似传统关系型数据库中 Database 的概念,用于表的划分,可以为 namespace 单独修改、回收、授权等操作
# hbase 为系统表的命名空间,用户创建表如果不指定命名空间,将默认创建到 default namespace 中 hbase(main)::> describe_namespace 'hbase' # 查看命令空间结构
DESCRIPTION
{NAME => 'hbase'}
row(s) in 0.0180 seconds # create_namespace 'namespace'、alter_namespace 'namespace'、drop_namespace 'namespace' 创建、修改、删除命令空间

3、table

hbase(main)::> create 't1', {NAME => 'f1'}, {NAME => 'f2'}, {NAME => 'f3'}
row(s) in 4.7550 seconds => Hbase::Table - t1

# default 命名空间下创建一张名为 t1,列族为 f1、f2、f3 的表,简化写法:create 't2', 'f1', 'f2', 'f3'
# HBase 创建表时至少要指定表名跟列族名,单张表至少有一个列族,建议最多不要超过 3 个,列族可以包含无数个列,且创建表时无需事先定义,列族可以单独设置属性,列族名尽量要短

hbase(main)::> desc 't1'
Table t1 is ENABLED
t1
COLUMN FAMILIES DESCRIPTION
{NAME => 'f1', BLOOMFILTER => 'ROW', VERSIONS => '', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FO
REVER', COMPRESSION => 'NONE', MIN_VERSIONS => '', BLOCKCACHE => 'true', BLOCKSIZE => '', REPLICATION_SCOPE => ''}
{NAME => 'f2', BLOOMFILTER => 'ROW', VERSIONS => '', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FO
REVER', COMPRESSION => 'NONE', MIN_VERSIONS => '', BLOCKCACHE => 'true', BLOCKSIZE => '', REPLICATION_SCOPE => ''}
{NAME => 'f3', BLOOMFILTER => 'ROW', VERSIONS => '', IN_MEMORY => 'false', KEEP_DELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FO
REVER', COMPRESSION => 'NONE', MIN_VERSIONS => '', BLOCKCACHE => 'true', BLOCKSIZE => '', REPLICATION_SCOPE => ''}
row(s) in 0.1230 seconds

# 查看 t1 表结构
# BLOOMFILTER 基于行布隆过滤,加快检索速度
# VERSIONS 列族数据保存的版本数
# IN_MEMORY 是否常驻内存
# KEEP_DELETED_CELLS 是否保留删除数据
# TTL 数据超时时间,FOREVER 为永久保存
# MIN_VERSIONS 保留最小版本数
# BLOCKCACHE 启用 BLOCKCACHE
# BLOCKSIZE HBase 列族的 BLOCKSIZE,默认 65536 字节,即 64k 细粒度的块尺寸,能够带来更好的随机读写性能
# REPLICATION_SCOPE 是否开启复制

hbase(main)::> put 't1', 'r001', 'f1', 'hbase data'
row(s) in 0.0060 seconds

# put 指令用于添加、更新数据,put '表名', '行键', '列族', '值', '时间戳 可选'
# RowKey 行键一行一个,设计不适当会引起热点问题,行键不可以修改

hbase(main)::> get 't1', 'r001', 'f1'
COLUMN CELL
f1: timestamp=, value=hbase data
row(s) in 0.0110 seconds

# get 指定用于获取数据,get '表名', '行键', '列族'

hbase(main)::> alter 't1', NAME => 'f1', VERSIONS =>
Updating all regions with the new schema...
/ regions updated.
Done.
row(s) in 3.7170 seconds

# 修改列族 f1 的版本数为 3,保留三个版本

hbase(main)::> scan 't1'
ROW COLUMN+CELL
r001 column=f1:, timestamp=, value=hbase data
row(s) in 0.0120 seconds

# scan 扫描表 t1,目前仅列族 f1 中有一行数据,值为 hbase data

hbase(main)::> put 't1', 'r001', 'f1:name', 'wang'
row(s) in 0.0070 seconds hbase(main)::> put 't1', 'r001', 'f1:name', 'xiao'
row(s) in 0.0080 seconds hbase(main)::> put 't1', 'r001', 'f1:name', 'qiang'
row(s) in 0.0120 seconds hbase(main)::> scan 't1', VERSIONS =>
ROW COLUMN+CELL
r001 column=f1:, timestamp=, value=hbase data
r001 column=f1:name, timestamp=, value=qiang
r001 column=f1:name, timestamp=, value=xiao
r001 column=f1:name, timestamp=, value=wang
row(s) in 0.0180 seconds

# 向表 't1' 中添加一列 name,更新了三个值
# 由于列族 f1 的 VERSIONS 为 3,所以可以保留三个版本的值,多版本是按时间倒叙排列,不指定版本时,默认返回最新的版本
# 可以向列族 f2 中添加列,多次更新某个字段,看保留的版本数

hbase(main)::> alter 't1', NAME => 'f1', TTL =>
Updating all regions with the new schema...
/ regions updated.
Done.
row(s) in 3.2350 seconds

# 将表 't1' 中的列族 'f1' TTL 设为 10 秒,查看数据有什么变化

hbase(main)::> put 't1', 'r001', 'f1:name', 'wangxiaoqiang'

hbase(main)::> get 't1', 'r001'
COLUMN CELL
f1:name timestamp=, value=wangxiaoqiang
f2:img timestamp=, value=http://img.com/qiang.png
row(s) in 0.0090 seconds hbase(main)::> get 't1', 'r001'
COLUMN CELL
f2:img timestamp=, value=http://img.com/qiang.png
row(s) in 0.0070 seconds

# 10秒过后,数据消失,因为该列族的 TTL 为 10秒,且 MIN_VERSIONS 为默认的 0,TTL 过后默认最小保留 0 个版本

hbase(main)::> alter 't1', NAME => 'f1', TTL =>
Updating all regions with the new schema...
/ regions updated.
Done.
row(s) in 3.0490 seconds

# 当列族 TTL 的值设为 2147483647 时,表示数据不过期,等于默认的 FOREVER

hbase(main)::> get 't1', 'r001'
COLUMN CELL
f1:age timestamp=, value=man
f1:name timestamp=, value=wangxiaoqiang
f2:img timestamp=, value=http://img.com/qiang.png
row(s) in 0.0060 seconds hbase(main)::> delete 't1', 'r001', 'f1:age'
row(s) in 0.0100 seconds

# 删除一列数据

hbase(main)::> alter 't1', 'delete' => 'f1'
Updating all regions with the new schema...
/ regions updated.
/ regions updated.
Done.
row(s) in 4.3090 seconds

# 删除列族

hbase(main)::> deleteall 't1', 'r002'
row(s) in 0.0050 seconds

# 删除一行数据

hbase(main)::> disable 't1'
row(s) in 4.4470 seconds hbase(main)::> drop 't1'
row(s) in 2.5450 seconds

# 禁用表,删除表
# 启用表:enable 't1'

hbase(main)::> list
TABLE
row(s) in 0.2200 seconds => []

# 查看当前 namespace 中的表

六、停止 HBase

hadoop shell > cd /usr/local/hbase-1.2.
hadoop shell > sh bin/stop-hbase.sh

# END

Apache HBase 集群安装文档的更多相关文章

  1. Apache Hadoop 集群安装文档

    简介: Apache Hadoop 集群安装文档 软件:jdk-8u111-linux-x64.rpm.hadoop-2.8.0.tar.gz http://www.apache.org/dyn/cl ...

  2. [转] Kubernetes集群安装文档-v1.6版本

    [From] https://www.kubernetes.org.cn/1870.html http://jimmysong.io/kubernetes-handbook

  3. HP DL160 Gen9服务器集群部署文档

    HP DL160 Gen9服务器集群部署文档 硬件配置=======================================================Server        Memo ...

  4. HBase集群安装部署

    0x01 软件环境 OS: CentOS6.5 x64 java: jdk1.8.0_111 hadoop: hadoop-2.5.2 hbase: hbase-0.98.24 0x02 集群概况 I ...

  5. Redis集群部署文档(Ubuntu15.10系统)

    Redis集群部署文档(Ubuntu15.10系统)(要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如 ...

  6. redis多机集群部署文档

    redis多机集群部署文档(centos6.2) (要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下 ...

  7. kafka集群搭建文档

    kafka集群搭建文档 一. 下载解压 从官网下载Kafka,下载地址http://kafka.apache.org/downloads.html 注意这里最好下载scala2.10版本的kafka, ...

  8. hbase单机环境的搭建和完全分布式Hbase集群安装配置

    HBase 是一个开源的非关系(NoSQL)的可伸缩性分布式数据库.它是面向列的,并适合于存储超大型松散数据.HBase适合于实时,随机对Big数据进行读写操作的业务环境. @hbase单机环境的搭建 ...

  9. Hbase集群安装Version1.1.5

    Hbase集群安装,基于版本1.1.5, 使用hbase-1.1.5.tar.gz安装包. 1.安装说明 使用外部Zookeeper集群而非Hbase自带zookeeper, 使用Hadoop文件系统 ...

随机推荐

  1. 获取display:none的元素的宽度和高度

    display为none的元素不能通过offsetWidth和offsetHeight来获取宽高(未参与css渲染), 解决方案:可以通过在display为none的元素使用行内样式style设置宽高 ...

  2. linux下redis的安装及配置启动

    linux下redis的安装及配置启动 标签: redisnosql 2014-10-24 14:04 19732人阅读 评论(0) 收藏 举报  分类: 数据与性能(41)  wget http:/ ...

  3. instancetype 与id

    1 .依照cocoa的命名规则,alloc,init这类方法,如果以id为返回类型,会返回类本身的类型,但类方法的返回类型,LLVM(clang)编译器无法判断,也就是说如果       用id作为返 ...

  4. Win7操作系统安装IE10提示“安装前需要更新与安装程序版本”

    安装IE10浏览器时提示错误的 Internet Explorer安装程序版本 故障现象: Win7操作系统在安装IE10浏览器时会弹出对话框,提示错误的Ieternet Explorer 安装程序版 ...

  5. Beta阶段第1周/共2周 Scrum立会报告+燃尽图 02

    作业要求与 [https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284] 相同 版本控制:https://git.coding.net/li ...

  6. Ubuntu tar方式安装mysql5.7.21 时报错 [ERROR] Can't locate the language directory. 以及 ------ libaio.so.1: cannot open shared object file

    参考帖子: http://blog.csdn.net/ty0415/article/details/22958133 首先,在 MySQL 官方网站上下载安装包, 如图: 然后,执行安装命令 bin/ ...

  7. java - 百钱百鸡小算法

    传送门: 袁咩咩的小小博客 百钱百鸡是一个非常经典的不定方程问题,最早源于我国古代的<算经>,这是古代著名数学家张丘建首次提出的.百钱百鸡问题原文如下: 鸡翁一,值钱五,鸡母一,值钱三,鸡 ...

  8. jenkins配置maven

    # 去官网下载maven # 安装 cd /opt wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.3/binari ...

  9. 常用SQL语句积累

    --批量设置表中某字段为固定值 update dbo.LampList set LampGroupAddress=ISNULL(LampGroupAddress,'')+1 --批量设置表中某字段为N ...

  10. java中读取配置文件

    若是Javaweb项目,项目运行于tomcat或其他容器时,可以使用下面方式来获取文件的输入流 1.当属性文件放在src下面时 InputStream is = Thread.currentThrea ...