hbase是基于hadoop的hdfs框架做的分布式表格存储系统,所谓表格系统就是在k/v系统的基础上,对value部分支持column family和column,并支持多版本读写。

hbase的工作原理是保证系统中key全局有序存储,每个regionserver负责的某一个key range,并在regionserver中数据量过大的时候由master负责通知其分列成2个key range,并将其中一个key range交给其他regionserver维护,通过修改meta表生效从而达到了自动迁移,负载均衡。

一个核心的认识在于,任何一个key range的数据自身的可靠性依靠hdfs自身的多副本得到保证,对于hbase来说只需要关心一个key range当前由哪个regionserver读写,而key range的分裂实际上只是将1个存储文件分裂到hdfs上的2个文件,并通知其他的regionserver从hdfs上加载即可完成迁移。而regionserver的健康状况以及meta表存储在哪个regionserver均在zookeeper中记录,hbase发布版本自带了zookeeper,除非你想与其他服务共用zookeeper,否则不需要单独部署zk。

对于搭建hbase而言,首先必须保证hadoop分布式集群已经搭建成功,然后你也下载了hadoop兼容的hbase的二进制发布版本,这里我的hadoop是2.2版本,我选择了较稳定的hbase0.96版本,为了部署hbase你需要做下面的工作:

1,下载hbase二进制发布包,解压到hadoop的namenode节点上。

2,修改conf/hbase-site.xml:指定hbase连接到什么hdfs地址,指定hbase的数据存储目录tmp,指定hbase是分布式部署,指定内置zookeeper节点分别是什么,启动脚本会到对应机器上拉起zk,你应该了解zookeeper应该部署奇数个用于内部一致性选举,指定zookeeper的数据存储目录。

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://m1-reader-q1preonline07.m1.baidu.com:8010/hbase</value>
<description>The directory shared by RegionServers.
</description>
</property>
<property>
<name>hbase.tmpdir</name>
<value>/home/liangdong/hadoop/hbase/tmp</value>
<description></description>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
<description>The mode the cluster will be in. Possible values are
false: standalone and pseudo-distributed setups with managed Zookeeper
true: fully-distributed with unmanaged Zookeeper Quorum (see hbase-env.sh)
</description>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>m1-reader-q1preonline07.m1.baidu.com,m1-reader-q1preonline08.m1.baidu.com,m1-reader-q1preonline09.m1.baidu.com</value>
<description>Comma separated list of servers in the ZooKeeper Quorum.
For example, "host1.mydomain.com,host2.mydomain.com,host3.mydomain.com".
By default this is set to localhost for local and pseudo-distributed modes
of operation. For a fully-distributed setup, this should be set to a full
list of ZooKeeper quorum servers. If HBASE_MANAGES_ZK is set in hbase-env.sh
this is the list of servers which we will start/stop ZooKeeper on.
</description>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/liangdong/hadoop/hbase/zookeeper</value>
<description>Property from ZooKeeper's config zoo.cfg.
The directory where the snapshot is stored.
</description>
</property>
</configuration>

3,修改conf/regionservers:也就是指定hbase集群在哪些节点上启动,节点个数可以随时扩容,hbase会自动分裂一些regionserver上的key range并由空闲节点加载参与服务,这里我把我hadoop的3个datanode的地址填进去了:

m1-reader-q1preonline08.m1.baidu.com
m1-reader-q1preonline09.m1.baidu.com
m1-reader-q1preonline10.m1.baidu.com

4,把整个hbase目录scp到regionservers里指定的节点上的相同路径下去,在此之前我搭建hadoop时应该已经建立了好信任关系。

5,为了hbase的进程能够跑起来,必须让java能找到hbase的jar包,所以我在所有部署hbase(包括regionserver和master)的节点上修改了.bashrc,令CLASSPATH包含了hbase的所有jar包,像这样:

HBASE_HOME=/home/liangdong/hadoop/hbase

CLASSPATH=${CLASSPATH}":"`find ${HBASE_HOME}/lib/*.jar | awk '{path=path":"$0}END{print path}'`

6,在master节点上调用bin/start-hbase.sh就可以启动所有的regionserver了,同时zookeeper和master进程均被拉起,你应该可以通过jps看到HMaster进程,它负责全局负载均衡,管理数据分裂与迁移,而HQuorumPeer就是内置的zk进程,HRegionServer就是管理实际的数据读写节点了。

7,部署成功后,你可以执行bin/hbase shell启动hbase命令行,输入status确认节点个数是否符合预期,之后就可以创建表格,读写数据了。

8,我没有在conf里指定各进程的服务地址,如果你需要做指定以及对hbase进行参数优化,可以参考官网的document,有一篇中文的里面有详细的调优指南等。

9,为了保障集群可用性,HMaster进程可以部署在多机上,同一时刻只有1个进程抢到Zookeeper注册并进行服务,其他节点均会观察ZK中的锁,一旦当前HMaster进程崩溃释放ZK锁,另外一个HMaster进程就会注册到ZK开始管理整个集群。 部署多个HMaster进程,只需要在hbase-site.xml里配置hbase.master这个选项,将机器HOST填写到其中即可,比如你希望B机器充当HMaster的一个冗余节点,那么你去B机器上把hbase-site.xml里添加上hbase.master,并将值写为B机器的Host,然后调用一下bin/habase master start就启动起来了,这个肯定是不能从主控机start-hbase.sh来弄的。

10,有任何搭建问题,可以在下面留言,谢谢。

【hbase0.96】基于hadoop搭建hbase的心得的更多相关文章

  1. 【大数据】基于Hadoop的HBase的安装(转)

    https://note.youdao.com/share/?id=c27485373a08517f7ad2e7ec901cd8d5&type=note#/ 安装前先确认HBse和Hadoop ...

  2. hbase0.96与hive0.12整合高可靠文档及问题总结

    本文链接:http://www.aboutyun.com/thread-7881-1-1.html 问题导读:1.hive安装是否需要安装mysql?2.hive是否分为客户端和服务器端?3.hive ...

  3. 基于HBase0.98.13搭建HBase HA分布式集群

    在hadoop2.6.0分布式集群上搭建hbase ha分布式集群.搭建hadoop2.6.0分布式集群,请参考“基于hadoop2.6.0搭建5个节点的分布式集群”.下面我们开始啦 1.规划 1.主 ...

  4. 基于centos6.5 hbase 集群搭建

    注意本章内容是在上一篇文章“基于centos6.5 hadoop 集群搭建”基础上创建的 1.上传hbase安装包 hbase-0.96.2-hadoop2 我的目录存放在/usr/hadoop/hb ...

  5. Centos搭建mysql/Hadoop/Hive/Hbase/Sqoop/Pig

    目录: 准备工作 Centos安装 mysql Centos安装Hadoop Centos安装hive JDBC远程连接Hive Hbase和hive整合 Centos安装Hbase 准备工作: 配置 ...

  6. 大数据环境完全分布式搭建hbase-0.96.2-hadoop2

    1.上传hbase安装包 2.解压 3.配置hbase集群,要修改3个文件 (首先zookeeper集群已经安装好了 并且启动 hadoop启动) 注意:要把hadoop的hdfs-site.xml和 ...

  7. hadoop(八) - hbase集群环境搭建

    1. 上传hbase安装包hbase-0.96.2-hadoop2-bin.tar.gz 2. 解压 tar -zxvf hbase-0.96.2-hadoop2-bin.tar.gz -C /clo ...

  8. 基于Hadoop生态SparkStreaming的大数据实时流处理平台的搭建

    随着公司业务发展,对大数据的获取和实时处理的要求就会越来越高,日志处理.用户行为分析.场景业务分析等等,传统的写日志方式根本满足不了业务的实时处理需求,所以本人准备开始着手改造原系统中的数据处理方式, ...

  9. 基于Eclipse搭建Hadoop源码环境

    Hadoop使用ant+ivy组织工程,无法直接导入Eclipse中.本文将介绍如何基于Eclipse搭建Hadoop源码环境. 准备工作 本文使用的操作系统为CentOS.需要的软件版本:hadoo ...

随机推荐

  1. [转]ORACLE中Like与Instr模糊查询性能大比拼

    instr(title,'手册')>0  相当于  title like '%手册%' instr(title,'手册')=1  相当于  title like '手册%' instr(titl ...

  2. C++常用特性原理解析

    在我的早期印象中,C++这门语言是软件工程发展过程中,出于对面向对象语言级支持不可或缺的情况下,一群曾经信誓旦旦想要用C统治宇宙的极客们妥协出来的一个高性能怪咖. 它驳杂万分,但引人入胜,出于多(mi ...

  3. 2_MVC+EF+Autofac(dbfirst)轻型项目框架_用户权限验证

    前言 接上面两篇 0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架 与 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例) .在第一篇中介 ...

  4. [题解+总结]NOIP2010-2015后四题汇总

    1.前言 正式开始的第一周的任务--把NOIP2010至NOIP2015的所有D1/2的T2/3写出暴力.共22题. 暴力顾名思义,用简单粗暴的方式解题,不以正常的思路思考.能够较好的保证正确性,但是 ...

  5. Oracle Flashback 闪回

    Oracle 的闪回技术是一种数据恢复技术,仅能对用户逻辑错误进行恢复, 闪回针对的是提交commit的事务,没有提交的事务,使用rollback 1.闪回版本查询 Flashback Version ...

  6. jsp 中 有没有类似java if else语句

    <c:when test=""></c:when> <c:otherwise></c:otherwise> 有if else的功能 ...

  7. winform下如何实现右下角弹窗效果

    [DllImport("user32")] private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, in ...

  8. MVC框架

    MVC (Modal View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用 ...

  9. <十二>JDBC_批量处理

    import java.sql.Connection;import java.sql.PreparedStatement;import org.junit.Test;import com.kk.jdb ...

  10. 谢欣伦 - OpenDev原创例程 - 网络摄像机WebCamera

    Win7没有预装摄像头软件,打开摄像头通常需要第三方软件来完成.第三方软件,好的要收费,免费的又没几款,其中功能完整的寥寥可数.正好我在做一个数字摄像头视频捕获的功能,经过两周的整理优化,我做了一个简 ...