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. mac linux 删除一个文件下边所有文件和文件夹

    sudo rm -r -f 目录

  2. solr update接口常用方法

    solr索引数据更新接口:http://localhost:8080/solr/update 有以下一些操作可以通过update接口完成,只能使用post的形式提交数据. 1.添加索引 确保field ...

  3. Unity3D 脚本编译器无法关联VisualStudio2012解决办法

    开发环境:Win8 + Unity 4.34f1 +Visual Studio2012 旗舰版 解决办法:   1.创建一个start.bat文件,内容为:[start "" %* ...

  4. 【NEUQACM OJ】1017: 平面切割(特别版)

    1017: 平面切割(特别版) 题目描述 我们要求的是n条闪电型折线分割平面的最大数目.比如,一条闪电型折线可以将平面分成两部分,两条最多可以将平面分成12部分,三条最多可将平面分成31部分,四条最多 ...

  5. 解决svn uuid变更问题

    简介: 今天在snv根目录下重新定位上传的url,更改后出现如下错误 .可以看到,原来Repository创建者的uuid是前者,而现在我操作的是后者的uuid.因此,目前的操作办法是 使用相关命令更 ...

  6. [Leetcode] Contains Duplicate III

    Given an array of integers, find out whether there are two distinct indices i and j in the array suc ...

  7. React-native之Alert

    普通的alert 先看函数原型 alert: (title: string, message?: string, buttons?: AlertButton[], type?: string) =&g ...

  8. AMD&CommonJS

    最近在学习nodejs的KOA框架,在查资料的时候遇见了点问题,顺着信息一步一步找下去,让我了解了一下一直以来不是很明白的什么时候用AMD规范,什么时候用CommonJS规范问题. CommonJS一 ...

  9. Oracle解锁与加锁(HR用户为例)

    SQL*Plus: Release 9.2.0.4.0 - Production on Tue Jul 14 18:12:38 2009   Copyright (c) 1982, 2002, Ora ...

  10. HDu--我要拿走你的蜡烛

    我要拿走你的蜡烛 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...