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. 如何理解typedef void (*pfun)(void)

    问题: 在刚接触typedef void (*pfun)(void) 这个结构的时候,存在疑惑,为什么typedef后只有一"块"东西,而不是两"块"东西呢?那 ...

  2. [翻译] ORMLite document -- How to Use Part (二)

    前言 此文档翻译于第一次学习 ORMLite 框架,如果发现当中有什么不对的地方,请指正.若翻译与原文档出现任何的不相符,请以原文档为准.原则上建议学习原英文文档. ----------------- ...

  3. phoneGap蓝牙设备链接打印操作插件

    前台 bluetooth.js /*Copyright 2013  101.key Licensed under the Apache License, Version 2.0 (the " ...

  4. c++单例模式为什么不在析构函数中释放静态的单例对象(转)

    需要清楚一下几点:   1.单例中的 new 的对象需要delete释放.   2.delete释放对象的时候才会调用对象的析构函数.   3.如果在析构函数里调用delete,那么程序结束时,根本进 ...

  5. ViewPager取消左右滑动切换功能

    ViewPager取消左右滑动切换功能 最近做项目要求某种情况下ViewPager不能滑动,那么我们只需要重写这个方法就可以禁止ViewPager滑动 IndexViewPager.java: imp ...

  6. ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力

     Gym 101047M Removing coins in Kem Kadrãn Time Limit:2000MS     Memory Limit:65536KB     64bit IO Fo ...

  7. 使用QQ邮箱发送email(Python)

    实际开发过程中使用到邮箱的概率很高,那么如何借助python使用qq邮箱发送邮件呢? 代码很简单,短短几行代码就可以实现这个功能. 使用到的模块有smtplib和email这个两个模块,关于这两个模块 ...

  8. 【转】php Thread Safe(线程安全)和None Thread Safe(NTS,非 线程安全)之分

    Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍. ...

  9. Mac 终端 Linux 命令总结(简单命令)

    目录操作 命令名 功能描述 使用举例 mkdir 创建一个目录 mkdir dirname rmdir 删除一个目录 rmdir dirname mvdir 移动或重命名一个目录 mvdir dir1 ...

  10. ssh简化后之事务管理

    为了能让大家更好的了解,所以今天跟大家分享整个项目.ps:ssh环境的搭建我就不一一讲解了,请大家参考 http://www.cnblogs.com/zczc1996/p/5842367.html. ...