一、hbase简介

HBase是一个开源的非关系型分布式数据库(NoSQL),它参考了谷歌的BigTable建模,实现的编程语言为 Java。它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为 Hadoop 提供类似于BigTable 规模的服务。因此,它可以容错地存储海量稀疏的数据。
HBase在列上实现了BigTable论文提到的压缩算法、内存操作和布隆过滤器。HBase的表能够作为MapReduce任务的输入和输出,可以通过Java API来存取数据,也可以通过REST、Avro或者Thrift的API来访问。 — 维基百科

参考文档
Apache HBase ™ Reference Guide
HBase 官方文档中文版
列式存储hbase系统架构学习

(slideshare PPT 分享服务在大陆是被墙的,不能科学上网?查看使用shadowsocks服务享受自由网络学习方法)

二、整体环境说明

hbase的存储为 HDFS,所以运行hbase是需要hadoop环境的,hadoop 集群搭建过程参考之前文章http://ixirong.com/2015/05/22/how-to-install-hadoop-cluster/

操作系统: cenos 6.4 ,三台192.168.9.92、192.168.9.93、192.168.9.94
jdk版本: 1.7.0_75
hadoop版本: 2.5.2 (目的与hbase兼容)

hbase 集群3个节点,一主两从,如下:

角色 ip 运行进程
master 192.168.9.92 JobHistoryServer,ResourceManager,NameNode,NodeManager,DataNode,Main,HMaster
slave1 192.168.9.93 NodeManager,DataNode,HRegionServer
slave2 192.168.9.94 NodeManager,DataNode,HRegionServer

hbase 的部署完全支持单机和伪分布式,如果没有机器可以按照这两种方式来部署,详情参考:http://blog.csdn.net/andie_guo/article/details/44086389

三、分布式集群搭建

hbase 集群的搭建如同hadoop一样,并不困难,解压完文件、修改环境变量、修改启动时候的配置文件,启动测试就ok了,下面一步步来说明,最后提供一键安装部署脚本。
hbase 版本的下载参考官网 http://mirrors.cnnic.cn/apache/hbase/ ,本文使用的版本为1.1.0.1/ 22-May-2015 02:20 -

3.1 安装 hbase

将下载下来的文件hbase-1.0.1-bin.tar.gz,解压到 /home/hadoop/目录下面 ,命令如下:

1
2
tar -zxvf hbase-1.0.1-bin.tar.gz -C /home/hadoop
mv hbase-1.0.1 hbase # 重命名

3.2 配置环境变量

第一步操作后会存在/home/hadoop/hbase这个目录,下面需要修改环境变量vim /etc/profile,添加如下:

1
2
3
4
export  PATH=$PATH:/home/hadoop/hbase/bin

# 使本次修改生效
source /etc/profile

3.3 hbase配置文件修改

hbase 相关的配置主要包括hbase-env.shhbase-site.xmlregionservers三个文件,都在 /home/haoop/hbase/conf目录下面:

3.3.1 修改 hbase-env.sh

主要是 JAVA_HOME、HADOOP_HOME、日志等的位置:

1
2
3
4
5
6
7
8
export JAVA_HOME=/opt/jdk1.7.0_75
export HBASE_CLASSPATH=/home/hadoop/hbase/conf
# 此配置信息,设置由hbase自己管理zookeeper,不需要单独的zookeeper。
export HBASE_MANAGES_ZK=true
export HBASE_HOME=/home/hadoop/hbase
export HADOOP_HOME=/home/hadoop/hadoop-2.5.2
#Hbase日志目录
export HBASE_LOG_DIR=/home/hadoop/hbase/logs

3.3.2 修改 hbase-site.xml

xml 包含了几个关键的属性

属性 说明
hbase.rootdir hbase数据存储目录,/tmp/hbase-${user.name},这意味着每次重启系统都会丢失数据。注意:需要和hadoop的core-site.xml中的文件保持一致
hbase.cluster.distributed 是否分布式,单击和伪分布式需要设置为 false
hbase.master 指定master机器
hbase.zookeeper.quorum zk集群机器,多个英文逗号隔开,注意:必须是基数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.master</name>
<value>master:60000</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>
</configuration>

3.3.3 修改regionservers

添加HRegionServer的机器,目前为slave1和slave2两台,如下 vim /home/hadoop/hbase/conf/regionservers

1
2
slave1
slave2

上面这几步,需要在每台机器上面都执行下,执行完毕后,hbase集群就算搭建完了,因为机器一多,执行这些命令很是烦人,所以提供一键安装部署脚本,hbase_tar.zip文件请访问百度网盘,密码为2a4g,脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/bin/bash

# author: xirong 
# date : 2015-05-11 #####
# hbase 的数据存储在hdfs中,所以依赖hadoop的环境,安装配置hbase环境需要搭建好的hadoop环境
#
#### # 解压文件
# unzip hbase.zip -d /home/hadoop/
# 赋予权限
sudo chown -R hadoop:hadoop /home/hadoop/hbase sudo sed -i '$ a # hbase configuration' /etc/profile
sudo sed -i '$ a export PATH=$PATH:/home/hadoop/hbase/bin' /etc/profile source /etc/profile
hbase version
echo 'congratilations ,hbase has been installed on your machine!' echo 'start change hbase-env.sh configuration ……'
echo '# 添加环境变量' >> /home/hadoop/hbase/conf/hbase-env.sh
echo 'export JAVA_HOME=/opt/jdk1.7.0_75' >> /home/hadoop/hbase/conf/hbase-env.sh
echo 'export HBASE_CLASSPATH=/home/hadoop/hbase/conf' >> /home/hadoop/hbase/conf/hbase-env.sh
echo 'export HBASE_MANAGES_ZK=true' >> /home/hadoop/hbase/conf/hbase-env.sh
echo 'export HBASE_HOME=/home/hadoop/hbase' >> /home/hadoop/hbase/conf/hbase-env.sh
echo 'export HADOOP_HOME=/home/hadoop/hadoop-2.5.2' >> /home/hadoop/hbase/conf/hbase-env.sh
echo 'export HBASE_LOG_DIR=/home/hadoop/hbase/logs' >> /home/hadoop/hbase/conf/hbase-env.sh echo 'finish hbase-env.sh and start change hbase-site.xml configuration ……'
\cp -f /home/hadoop/hbase/conf/hbase-site.xml /home/hadoop/hbase/conf/hbase-site.xml.bak sed -i '/<\/configuration>/d' /home/hadoop/hbase/conf/hbase-site.xml sed -i '$ a <property>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <name>hbase.rootdir<\/name>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <value>hdfs:\/\/master:9000\/hbase<\/value>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <\/property>' /home/hadoop/hbase/conf/hbase-site.xml sed -i '$ a <property>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <name>hbase.cluster.distributed<\/name>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <value>true<\/value>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <\/property>' /home/hadoop/hbase/conf/hbase-site.xml sed -i '$ a <property>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <name>hbase.master<\/name>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <value>master:60000<\/value>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <\/property>' /home/hadoop/hbase/conf/hbase-site.xml sed -i '$ a <property>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <name>hbase.zookeeper.quorum<\/name>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <value>master,slave1,slave2<\/value>' /home/hadoop/hbase/conf/hbase-site.xml
sed -i '$ a <\/property>' /home/hadoop/hbase/conf/hbase-site.xml sed -i '$ a <\/configuration>' /home/hadoop/hbase/conf/hbase-site.xml echo 'finish hbase-site.xml configuration and start change regionservers ……'
\cp -f /home/hadoop/hbase/conf/regionservers /home/hadoop/hbase/conf/regionservers.bak
echo 'slave1' >> /home/hadoop/hbase/conf/regionservers
echo 'slave2' >> /home/hadoop/hbase/conf/regionservers echo 'congratilations ,all conf has been changed ! enjoy hbase !'

四、hbase集群测试

集群中所有节点完成上述HBase部署之后,即可启动HBase集群。启动顺序:hadoop-> hbase,如果使用自己安装的zookeeper启动顺序是:hadoop-> zookeeper-> hbase
停止顺序:hbase-> zookeeper-> hadoop。
hadoop 启动方法:$HADOOP_HOME/bin/start_all.sh ,jps 命令后看到hadoop的几个进程说明就是ok的,详情参考
zk 启动方法: sh $ZOOKEEPER_HOME/bin/zkServer.sh start, 启动后可以查看 zk的状态 sh $ZOOKEEPER_HOME/bin/zkServer.sh status ,发现 leader或者Fowler,就说明是ok的,详情参考

hbase启动方法如下,执行jpsJava进程查看命令后,出现下面的情况就证明是ok的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# master上启动,注意:只需要在master机器上面执行 start-hbase.sh就行,会自动启动slave1和slave2
[hadoop@master bin]$ start-hbase.sh
slave1: starting zookeeper, logging to /home/hadoop/hbase/logs/hbase-hadoop-zookeeper-slave1.out
slave2: starting zookeeper, logging to /home/hadoop/hbase/logs/hbase-hadoop-zookeeper-slave2.out
master: starting zookeeper, logging to /home/hadoop/hbase/logs/hbase-hadoop-zookeeper-master.out
starting master, logging to /home/hadoop/hbase/logs/hbase-hadoop-master-master.out
slave2: starting regionserver, logging to /home/hadoop/hbase/logs/hbase-hadoop-regionserver-slave2.out
slave1: starting regionserver, logging to /home/hadoop/hbase/logs/hbase-hadoop-regionserver-slave1.out
localhost: starting regionserver, logging to /home/hadoop/hbase/logs/hbase-hadoop-regionserver-master.out
[hadoop@master bin]$ jps
23598 HQuorumPeer
19655 JobHistoryServer
10397 ResourceManager
17688 DataNode
23651 HMaster
23814 Jps
18141 NodeManager
17597 NameNode # slave1 验证
[hadoop@slave1 ~]$ jps
680 Jps
538 HRegionServer
14727 DataNode
14856 NodeManager # slave2 验证
[hadoop@slave2 ~]$ jps
375 Jps
14555 NodeManager
32664 HRegionServer
14424 DataNode

五、hbase shell 操作

hbase提供的shell脚本就如果MySQL的一样,简单、强大,如下面例子中的几个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[hadoop@master bin]$ hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/hadoop/hbase/lib/slf4j-log4j12-1.7.7.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/hadoop/hadoop-2.5.2/share/hadoop/common/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
2015-05-25 15:53:06,988 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.0.1, r66a93c09df3b12ff7b86c39bc8475c60e15af82d, Fri Apr 17 22:14:06 PDT 2015 hbase(main):002:0> status
2 servers, 0 dead, 1.0000 average load hbase(main):005:0> list
TABLE
0 row(s) in 0.3430 seconds

这部分操作请参考如下文章,个人认为写的通俗易懂,还很全面,适合入门体验
【HBase基础教程】3、HBase Shell DDL操作
【HBase基础教程】4、HBase Shell DML操作
HBase shell的基本用法

六、hbase 实践优化

分布式实时日志系统(四) 环境搭建之centos 6.4下hbase 1.0.1 分布式集群搭建的更多相关文章

  1. 分布式实时日志系统(一)环境搭建之 Jstorm 集群搭建过程/Jstorm集群一键安装部署

    最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式 ...

  2. linux环境下redis安装(redis伪集群搭建)

    redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...

  3. Redis(二)CentOS7安装Redis4.0.10与集群搭建

    一 Redis单机安装 1 Redis下载安装 1.1 检查依赖环境(Redis是C语言开发,编译依赖gcc环境) [root@node21 redis-]$ gcc -v -bash: gcc: c ...

  4. 基于Hadoop 2.2.0的高可用性集群搭建步骤(64位)

    内容概要: CentSO_64bit集群搭建, hadoop2.2(64位)编译,安装,配置以及测试步骤 新版亮点: 基于yarn计算框架和高可用性DFS的第一个稳定版本. 注1:官网只提供32位re ...

  5. VituralBox从零搭建基于CentOS 7(64位)的Kubernetes+docker集群

    1. 下载CentOS 7官方minimal镜像 2. 安装VituralBox(Windows 10 64位) 3. 安装Git for windows(Windows 10 64位) 4. 安装V ...

  6. 分布式实时日志系统(二) 环境搭建之 flume 集群搭建/flume ng资料

    最近公司业务数据量越来越大,以前的基于消息队列的日志系统越来越难以满足目前的业务量,表现为消息积压,日志延迟,日志存储日期过短,所以,我们开始着手要重新设计这块,业界已经有了比较成熟的流程,即基于流式 ...

  7. 同主机下Docker+nginx+tomcat负载均衡集群搭建

    想用Docker模拟一下nginx+tomcat集群部署,今天折腾了一天,遇坑无数,终于在午夜即将到来之际将整个流程走通,借本文希望给同样遇到类似问题的小伙伴们留点线索. 主机环境是CentOS 7, ...

  8. hbase分布式集群搭建

    hbase和hadoop一样也分为单机版.伪分布式版和完全分布式集群版本,这篇文件介绍如何搭建完全分布式集群环境搭建. hbase依赖于hadoop环境,搭建habase之前首先需要搭建好hadoop ...

  9. Hadoop3集群搭建之——安装hadoop,配置环境

    接上篇:Hadoop3集群搭建之——虚拟机安装 下篇:Hadoop3集群搭建之——配置ntp服务 Hadoop3集群搭建之——hive安装 Hadoop3集群搭建之——hbase安装及简单操作 上篇已 ...

随机推荐

  1. Linux中./configure、make、make install详解

     ./configure && make && make install详解 2010-08-03 23:30:05 标签:休闲 ./configure &&a ...

  2. WAS6.1连接SQL Server2008数据库连接池配置

    原文链接:http://www.cnblogs.com/lyr2012/archive/2012/06/13/2547804.html 说明:该步骤只适用与websphere 6.1.0.15之前的版 ...

  3. html固定宽度下拉框内容显示不全问题解决方法

    不少时候在页面中为了布局的需要,下拉列表<select>的宽度需要设成比较小的值,这时如果恰巧它包含的选择项<option>的内容比较长,那么超出select宽度的部分将会被截 ...

  4. php foreach 传值还是传引用

    From: http://my.oschina.net/guomingliang/blog/215457 php 中遍历一个array时可以使用for或foreach,foreach的语法为:fore ...

  5. Spring Cloud 微服务的那点事

    什么是微服务 微服务的概念源于2014年3月Martin Fowler所写的一篇文章“Microservices”. 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调 ...

  6. highcharts学习1----Line charts

    今天开始将之前使用的highcharts控件的经验进行总结和整理,一方面方便自己以后使用查询,同时也为正在学习的人们做一些指引,算是资源分享吧. 官网链接: http://www.highcharts ...

  7. org.apache.http 源代码下载

    http://hc.apache.org/downloads.cgi httpClient 的源码和 httpCore的源代码

  8. MTK 隐藏上方的状态栏

    步骤一: 源码/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.ja ...

  9. 【转载】springboot + swagger

    注:本文参考自 http://www.jianshu.com/p/0465a2b837d2 https://www.cnblogs.com/java-zhao/p/5348113.html swagg ...

  10. logback -- 配置详解 -- 三 -- <encoder>

    附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appen ...