文档章节

HBase单机模式和伪分布式模式安装和配置

JackieYeah
 JackieYeah
发布于 2016/07/14 21:24
字数 2070
阅读 4.8K
收藏 5

##前期准备

操作系统

Ubuntu 14.04.1 LTS (GNU/Linux 4.2.0-41-generic x86_64)

软件列表

软件 版本
JDK 1.7.0_80
Hadoop 2.6.4
ZooKeeper 3.4.8
HBase 1.2.2

下载安装

####下载 可以从 官方下载地址 下载 HBase 最新 stable 版本 hbase-1.2.2-bin.tar.gz.注意, 需要确保下载的 HBase 版本与 Hadoop 版本兼容(Hadoop兼容列表).

####安装 关于 JDK、Hadoop 以及 ZooKeeper 的安装, 可以参考博客的相关文章, 下面简单说明一下 HBase 的安装.将下载的 hbase-1.2.2-bin.tar.gz 文件解压安装到 /opt 目录下:

sudo tar -zxvf hbase-1.2.2-bin.tar.gz #解压缩
sudo mv hbase-1.2.2 hbase #文件夹重命名
sudo chown -R hadoop:hadoop hbase #修改 hbase 目录所属的用户和用户组

####环境变量 编辑 /etc/profile

sudo vim /etc/profile

在文件末尾增加以下环境变量配置

# HBase Env
export HBASE_HOME=/opt/hbase
export PATH=$PATH:$HBASE_HOME/bin

使环境变量生效

source /etc/profile

验证是否安装成功

hadoop[@master](http://my.oschina.net/u/48054):~$ hbase version
HBase 1.2.2
Source code repository git://asf-dev/home/busbey/projects/hbase revision=3f671c1ead70d249ea4598f1bbcc5151322b3a13
Compiled by busbey on Fri Jul  1 08:28:55 CDT 2016
From source with checksum 7ac43c3d2f62f134b2a6aa1a05ad66ac

从上面输出的信息可以看出 HBase 已经安装成功, 接下来将分别进行 HBase 单机模式和集群模式的配置. ##单机模式 ###conf/hbase-env.sh 编辑 hbase-env.sh 配置文件:

export JAVA_HOME=/opt/java/jdk1.7.0_80/  #JDK安装目录
export HBASE_MANAGES_ZK=true #配置hbase自己管理zookeeper

###conf/hbase-site.xml

编辑 HBase 核心配置文件 hbase-site.xml, 指定本地文件系统上存储 HBase 和 ZooKeeper 数据的目录. 默认 HBase 数据会存储在 /tmp/hbase-${user.name} 目录下. 很多服务器在重启之后会删除 /tmp 目录, 所以应该将数据存储在其它目录下. 配置如下:

<configuration>
<property>
    <name>hbase.rootdir</name>
    <value>file:///opt/hbase/data</value>
  </property>
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/opt/hbase/data/zookeeper</value>
  </property>
</configuration>

hbase.rootdir 用于指定 HBase 数据存储目录, hbase.zookeeper.property.dataDir 用于指定 ZooKeeper 数据存储目录. 需要注意的是, HBase 数据存储目录不需要我们自己创建, HBase 会自动创建。如果你创建了这个目录, HBase 将会尝试做数据迁移.

###启动HBase bin/start-hbase.sh 可以很方便的启动 HBase.

start-hbase

可以看到 HBase 已经成功启动, 使用 jps 命令可以看到启动了一个称为 HMaster 的进程. 在单机模式中, HBase 在这单个 JVM 中运行所有的守护进程, 比如 HMaster, 单个 HRegionServer, 以及 ZooKeeper 守护进程.

###HBase简单操作 ####连接HBase 使用 "hbase shell" 命令可以连接到正在运行的 HBase 实例. hbase-shell

####查看HBase Shell中的帮助文档

在 HBase Shell 中输入 help 并按下回车键, 将会显示一些基本的使用信息以及命令示例. 需要注意的是: 表名, 行, 列都必须使用引号括起来.

hbase(main):008:0> help
HBase Shell, version 1.2.2, r3f671c1ead70d249ea4598f1bbcc5151322b3a13, Fri Jul  1 08:28:55 CDT 2016
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

  Group name: tools
  Commands: assign, balance_switch, balancer, balancer_enabled, catalogjanitor_enabled, catalogjanitor_run, catalogjanitor_switch, close_region, compact, compact_rs, flush, major_compact, merge_region, move, normalize, normalizer_enabled, normalizer_switch, split, trace, unassign, wal_roll, zk_dump

  Group name: replication
  Commands: add_peer, append_peer_tableCFs, disable_peer, disable_table_replication, enable_peer, enable_table_replication, list_peers, list_replicated_tables, remove_peer, remove_peer_tableCFs, set_peer_tableCFs, show_peer_tableCFs

  Group name: snapshots
  Commands: clone_snapshot, delete_all_snapshot, delete_snapshot, list_snapshots, restore_snapshot, snapshot

  Group name: configuration
  Commands: update_all_config, update_config

  Group name: quotas
  Commands: list_quotas, set_quota

  Group name: security
  Commands: grant, list_security_capabilities, revoke, user_permission

  Group name: procedures
  Commands: abort_procedure, list_procedures

  Group name: visibility labels
  Commands: add_labels, clear_auths, get_auths, list_labels, set_auths, set_visibility

SHELL USAGE:
Quote all names in HBase Shell such as table and column names.  Commas delimit
command parameters.  Type <RETURN> after entering a command to run it.
Dictionaries of configuration used in the creation and alteration of tables are
Ruby Hashes. They look like this:

  {'key1' => 'value1', 'key2' => 'value2', ...}

and are opened and closed with curley-braces.  Key/values are delimited by the
'=>' character combination.  Usually keys are predefined constants such as
NAME, VERSIONS, COMPRESSION, etc.  Constants do not need to be quoted.  Type
'Object.constants' to see a (messy) list of all constants in the environment.

If you are using binary keys or values and need to enter them in the shell, use
double-quote'd hexadecimal representation. For example:

  hbase> get 't1', "key\x03\x3f\xcd"
  hbase> get 't1', "key\003\023\011"
  hbase> put 't1', "test\xef\xff", 'f1:', "\x01\x33\x40"

The HBase shell is the (J)Ruby IRB with the above HBase-specific commands added.
For more on the HBase Shell, see http://hbase.apache.org/book.html

####创建表

使用 create 命令可以创建一个新表, 必须要指定表明和列族名.

hbase(main):001:0> create 'test', 'cf'
0 row(s) in 1.7990 seconds

=> Hbase::Table - test

####列出表的信息

可以使用 list 命令列出 test 表的信息

hbase(main):002:0> list 'test'
TABLE
test
1 row(s) in 0.0530 seconds

=> ["test"]

####往表中插入数据

可以使用 put 命令往表中插入数据.

hbase(main):003:0> put 'test', 'row1', 'cf:a', 'value1'
0 row(s) in 0.9960 seconds

hbase(main):004:0> put 'test', 'row2', 'cf:b', 'value2'
0 row(s) in 0.0160 seconds

hbase(main):005:0> put 'test', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0170 seconds

我们插入了三行数据, 第一行的row key 是 row1, 列是 cf:a, 其值是 value1.HBase 中的列是由列族前缀, 冒号以及列名后缀组成.

####一次扫描表中所有数据

可以使用 scan 命令一次扫描 HBase 表中的所有数据.

hbase(main):006:0> scan 'test'
ROW                   COLUMN+CELL                                                  
 row1                 column=cf:a, timestamp=1468473020394, value=value1           
 row2                 column=cf:b, timestamp=1468473053641, value=value2           
 row3                 column=cf:c, timestamp=1468473079601, value=value3           
3 row(s) in 0.0770 seconds

####获取单行数据

可以使用 get 命令一次获取一行数据.

hbase(main):007:0> get 'test', 'row1'
COLUMN                CELL                                                         
 cf:a                 timestamp=1468473020394, value=value1                        
1 row(s) in 0.0770 seconds

####禁用表

在某些情况下如果你想要删除表或是改变其设置, 需要先禁用表.可以使用 disable 命令禁用表, 稍后可以使用 enable 命令重新启用表.

hbase(main):008:0> disable 'test'
0 row(s) in 2.3740 seconds

hbase(main):009:0> enable 'test'
0 row(s) in 1.3380 seconds

####删除表 在测试了 enable 命令之后再次禁用表, 接着使用 drop 命令删除表:

hbase(main):010:0> disable 'test'
0 row(s) in 2.3220 seconds

hbase(main):011:0> drop 'test'
0 row(s) in 1.3210 seconds

可以再次使用 list 命令查看表是否已经被删除.

hbase(main):012:0> list
TABLE                                                                              
0 row(s) in 0.0310 seconds

=> []

####退出HBase Shell

使用 quit 命令 HBase Shell, 但是 HBase 实例仍然在后台运行.

###停止HBase

bin/start-hbase.sh 脚本可以很方便的启动所有 HBase 守护进程, 同样的, bin/stop-hbase.sh 脚本可以很方便的停止所有 HBase 守护进程.

$ stop-hbase.sh
stopping hbase....................

使用 jps 命令来确保 HMaster 和 HRegionServer 进程都已经关闭.

hadoop[[[[[@master](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054):~$ jps
15730 Jps

##伪分布式模式 ###conf/hbase-site.xml 编辑 hbase-site.xml 配置文件.首先, 增加以下配置:

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

hbase.cluster.distributed 属性值设置为 true, 指定 HBase 运行于分布式模式, 即一个 JVM 运行一个守护进程.

接着, 将 hbase.rootdir 属性值由本地文件系统路径改成 HDFS 实例的地址, 使用 hdfs://// 这种 URI 语法。在本例中, HDFS运行于本机的 9000 端口.

<property>
  <name>hbase.rootdir</name>
  <value>hdfs://master:9000/hbase</value>
</property>

注意: 不需要在 HDFS 中创建这个目录。HBase 会自动帮我们创建.如果你创建了这个目录, HBase 将会尝试做数据迁移. ###启动HBase ####启动HDFS 在启动 HBase 之前, 先使用 start-dfs.sh 启动 HDFS.

start-dfs

####启动HBase 使用 start-hbase.sh 启动 HBase.

start-hbase-pd

使用 jps 命令可以看到 HMaster, HRegionServer 以及 HQuorumPeer 进程正在运行.

###在HDFS中检查HBase目录 如果一切正常, HBase 将在 HDFS 中创建配置文件中指定的目录 /hbase/. 可以使用 hdfs dfs 命令列出这个目录.

hdfs-hbase

###HBase Shell ####创建表

hbase(main):006:0> create 'test', 'cf'
0 row(s) in 1.4440 seconds

=> Hbase::Table - test
hbase(main):007:0> list
TABLE                                                                           
test                                                                            
1 row(s) in 0.0170 seconds

=> ["test"]

####查看HDFS路径

hadoop[[[[[@master](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054)](http://my.oschina.net/u/48054):~$ hdfs dfs -ls /hbase/data/default
Found 1 items
drwxr-xr-x   - hadoop supergroup          0 2016-07-14 21:00 /hbase/data/default/test

/hbase/data/default/test 文件夹即为 test 表在 HDFS 上的存储路径.

##参考资料 http://hbase.apache.org/book.html#quickstart

© 著作权归作者所有

JackieYeah
粉丝 45
博文 70
码字总数 90004
作品 0
武汉
程序员
私信 提问
加载中

评论(0)

【HBase】 - 单机模式、伪分布式、完全分布式配置

Hbase 简介 Hbase: Hadoop Database Hbase是非关系型数据库,随着现在互联网的数据量越来越多,需求更加多元化,传统的关系型数据库无法满足实际的业务需求,NoSql类型数据库孕育而生。 传统...

ZeroneLove
2019/02/25
55
0
搭建HBase的本地模式、伪分布式、全分布式和HA模式

一、安装HBase: 我这里选择的是hbase-1.3.1-bin.tar.gz版本解压HBase: tar -zxvf hbase-1.3.1-bin.tar.gz -C ~/training 配置HBase的环境变量: export HBASE_HOME=/root/training/hbase-1.......

李金泽
2018/07/05
0
0
一文让您全面了解清楚HBase数据库的所有知识点,值得收藏!

欢迎关注大数据和人工智能技术文章发布的微信公众号:清研学堂,在这里你可以学到夜白(作者笔名)精心整理的笔记,让我们每天进步一点点,让优秀成为一种习惯! 一、HBase基本概念:列式数据...

李金泽
2018/03/04
0
0
Windows HBase2.2.0安装部署踩坑

下载安装 hbase下载 解压之后根目录,没有什么要修改的。 配置文件目录,主要修改hbase-env.cmd和hbase-site.xml hbase-env.cmd HBASEMANAGESZK值为false表示zookeeper外装,HBASEMANAGESZK的...

trayvon
2019/06/25
211
0
hbase——安装配置hbase

1.下载hbase的压缩包,解压出来。 2.检查hbase包和hadoop包版本是否一致,替换成hadoop核心jar包。将hadoop集群的hadoop-1.2.1-core.jar替换hbase的lib目录下的hadoop核心包,主要目的是防止...

cjun1990
2015/04/15
118
0

没有更多内容

加载失败,请刷新页面

加载更多

response.getWriter().write()与 response.getWriter().print()、以及PritWriter对象和out对象的区别

一、response.getWriter().write()和 response.getWriter().print()的区别 response.getWriter()返回的是PrintWriter,这是一个打印输出流。 response.getWriter().write()和 response.g......

code-ortaerc
12分钟前
12
0
Zsh记录

zsh 使用记录 主题 ZSH_THEME="ys" 插件 自动补全插件 编辑 .zshrc 文件 找到plugins=(git)这一行,如果没有添加。更改为如下 plugins=(git zsh-autosuggestions)...

机械猿
12分钟前
42
0
图解kubernetes Pod生命周期事件生成器

PLEG(PodLifecycleEventGenerator)主要是用于周期性检测Pod的运行状态,从而对比Pod前后状态生成事件从而触发kubelet进行Pod容器状态的校证,让我们一起来初探下其内部实现机制 1. 图解设计 ...

8小时
39分钟前
46
0
JVM解毒——JVM与Java体系结构

你是否也遇到过这些问题? 运行线上系统突然卡死,系统无法访问,甚至直接OOM 想解决线上JVM GC问题,但却无从下手 新项目上线,对各种JVM参数设置一脸懵逼,直接默认,然后就JJ了 每次面试都...

大猿帅
今天
82
0
数据结构与算法系列二(复杂度分析)

1.引子 1.1.为什么要学习数据结构与算法? 有人说,数据结构与算法,计算机网络,与操作系统都一样,脱离日常开发,除了面试这辈子可能都用不到呀! 有人说,我是做业务开发的,只要熟练API...

yhhitall
今天
50
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部