大数据生态系统基础: HBASE(一):HBASE 介绍及安装、配置

一、介绍

       Apache HBase是Hadoop数据库,一个分布式的、可伸缩的大型数据存储。

       当您需要随机的、实时的读/写访问您的大数据时,请使用Apache HBase。这个项目的目标是承载非常大的表——数十亿行X百万列的列——运行在在商用硬件的集群上。Apache HBase是一个开源的、分布式的、版本化的、非关系数据库,以谷歌的Bigtable为模型:一个结构化的分布式存储系统,由Chang 等l提供。就像Bigtable利用谷歌文件系统提供的分布式数据存储一样,Apache HBase在Hadoop和HDFS上提供了类似于Bigtable的功能。

     可以直接下载国内网站的 Hbase:hbase-1.3.1-src.tar.gz

    特征:

  • 线性和模块化的可伸缩性。
  • 严格一致的读和写。
  • 表的自动和可配置分片
  • 区域服务器之间的自动故障转移支持。
  • 使用Apache HBase表支持Hadoop MapReduce作业的方便的基类。
  • 易于使用Java API用于客户端访问。
  • 块缓存和Bloom过滤器用于实时查询。
  • 查询谓词通过服务器端过滤器向下推
  • 节约网关和一种支持XML、原buf和二进制数据编码选项的rest式Web服务
  • 可扩展jruby-based(JIRB)壳
  • 支持通过Hadoop度量子系统向文件或Ganglia导出指标;或通过JMX    

二、安装
      1、解压
           在 HOME 目录下:
         wget http://mirror.bit.edu.cn/apache/hbase/1.3.1/hbase-1.3.1-bin.tar.gz
          tar zxvf  hbase-1.3.1-bin.tar.gz
         mv hbase-1.3.1-bin hbase
   2、修改环境变量
          在.bash_profile 或者/etc/profile
           50 ###setup HBASE
           51 export HBASE_HOME=$HOME/hbase
          52 export PATH=$HBASE_HOME/bin:$PATH
          53 export HBASE_CLASSPATH=$HBASE_HOME/lib/*
        保存后, 使用 source .bash_profile   或者 source /etc/profile 使之生效
   3、修改配置
         进入 HBASE_HOME 目录下:
         1)修改 conf/hbase-env.sh
             export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_77.jdk/Contents/Home 配置 java home
             export HBASE_LOG_DIR="${HBASE_LOG_DIR:-/usr/local/var/log/hbase}" 配置 log 目录
              export HBASE_MANAGES_ZK=false, 配置 HBASE 不要管理 zookeeper
        2)修改 conf/hbase-site.xml
        
<configuration>

<property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
 </property>
<property>
     <name>hbase.rootdir</name>
     <value>hdfs://mymac:9000/hbase</value>  主目录
 </property>
<property>
     <name>hbase.zookeeper.quorum</name>
     <value>mymac,master,slave1,slave2</value> 配置 zookeeper
 </property>

<property>
	<name>hbase.zookeeper.sission.timeout</name>
	<value>60000</value>
</property>

 <property>
	 <name>hbase.zookeeper.property.clientPort</name>
	 <value>2181</value>     zookeeper 地址
 </property>

  <property>
	  <name>hbase.master</name>
	  <value>mymac</value>       指定主服务器
  </property>

   <property>
	   <name>hbase.regionserver.lease.period</name>
	   <value>60000</value>
   </property>

<property>
	   <name>hbase.rpc.timeout</name>
	   <value>60000</value>
   </property>


</configuration>

1,hbase.rootdir:hbase所使用的文件系统为HDFS,根目录为hdfs://192.168.1.127:9000/hbase,该目录应该由HBase自动创建,只需要指定到正确的HDFS NameNode上即可。

2,hbase.hregion.max.filesize:设置HStoreFile的大小,当 大于这个数时,就会split 成两个文件

3,hbase.hregion.memstore.flush.size:设置memstore的大小,当大于这个值时,写入磁盘

4,hbase.cluster.distributed:指定hbase为分布式模式

5,hbase.zookeeper.property.clientPort:指定zk的连接端口

6,zookeeper.session.timeout:RegionServer与Zookeeper间的连接超时时间。当超时时间到后,ReigonServer会被Zookeeper从RS集群清单中移除,HMaster收到移除通知后,会对这台server负责的regions重新balance,让其他存活的RegionServer接管.

7,hbase.zookeeper.property.tickTime:

8,hbase.zookeeper.quorum:默认值是 localhost,列出zookeepr的master,slave1,slave2

9,hbase.tmp.dir:指定HBase将元数据存放路径

3、修改 conf/regionservers

            将启动的 slave 服务器的主机名称加入其中即可。

            mymac 

            master 

            slave1

            slave2

             
四、启动
             wangxinnian@mymac:~/hbase/conf$ start-hbase.sh
starting master, logging to /usr/local/var/log/hbase/hbase-wangxinnian-master-mymac.out
mymac: starting regionserver, logging to /usr/local/var/log/hbase/hbase-wangxinnian-regionserver-mymac.out
   
          wangxinnian@mymac:~/hbase/conf$ jps
18816 ResourceManager
64624 HMaster
18626 DataNode
42148 RunJar
63813 RunJar
64728 HRegionServer
18714 SecondaryNameNode
18555 NameNode
62635 Launcher
18893 NodeManager
64765 Jps

        进程中有 HMaster 和 HRegionServer 即可表示启动成功。必须注意,尽管设置 Hbase 不需要 管理 zookeeper,但是hbase 还是依赖 zookeeper 的运行的。所以在此之前必须先安装 zookeeper。大家可以参考 zookeeper 的安装。export HBASE_MANAGES_ZK=true,这样启动的时候可以一起启动 zookeeper。使用 jps 可以看到 HQuorumPeer进程。

        建议先启动 zookeeper,再启动 hbase


五、拷贝到集群中其它的服务器上

              1、拷贝.bash_profile 或者 /etc/profile 到集群其它服务器上。

                  如: scp ~/.bash_profile wangxinnian@master:~

               2、拷贝 hbase 目录到集群其它的服务器上。

                如: scp  -r ~/hbase wangxinnian@master:~/

           其它集群服务器同理启动即可。

六、验证Hbase

     1、web 查看 

     输入地址: http://mymac: 16010 。出现 web 页面表示正常。

   

                     

      2、一个简单的操作

wangxinnian@mymac:~/hbase$ hbase shell
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/wangxinnian/hbase/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/wangxinnian/hadoop/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]
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017
//创建一个名为 small的表,这个表只有一个 column family 为 cf。可以列出所有的表来检查创建情况,然后插入些值。
hbase(main):001:0> create 'small','cf'
0 row(s) in 1.4160 seconds

=> Hbase::Table - small
hbase(main):002:0> list
TABLE
small
1 row(s) in 0.0200 seconds

=> ["small"]
hbase(main):003:0> put 'small','row1','cf:a','value'
0 row(s) in 0.1110 seconds

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

hbase(main):005:0>  put 'small', 'row3', 'cf:c', 'value3'
0 row(s) in 0.0130 seconds
//检查插入情况.Scan这个表
hbase(main):006:0> scan 'small'
ROW                                       COLUMN+CELL
 row1                                     column=cf:a, timestamp=1503310610537, value=value
 row2                                     column=cf:b, timestamp=1503310632539, value=value2
 row3                                     column=cf:c, timestamp=1503310644605, value=value3
3 row(s) in 0.0240 seconds
//Get一行,操作如下
hbase(main):007:0> get 'small', 'row1'
COLUMN                                    CELL
 cf:a                                     timestamp=1503310610537, value=value
1 row(s) in 0.0240 seconds
//disable 再 drop 这张表,可以清除你刚刚的操作
hbase(main):008:0> disable 'small'
0 row(s) in 2.2720 seconds

hbase(main):009:0> drop 'small'
0 row(s) in 1.2610 seconds

hbase(main):010:0> quit
导出与导入,注意再重复上述的步骤,但是不要 drop,否则 small 被删除不存在了。

$hbase org.apache.hadoop.hbase.mapreduce.Driver export small small

导出的表,在hadoop文件系统的当前用户目录下,small文件夹中。例如,导出后在hadoop文件系统中的目录结构:

wangxinnian@mymac:~/hbase$ hadoop fs -ls /user/wangxinnian/small
Found 2 items
-rw-r--r--   1 wangxinnian supergroup          0 2017-08-21 18:25 /user/wangxinnian/small/_SUCCESS
-rw-r--r--   1 wangxinnian supergroup        273 2017-08-21 18:25 /user/wangxinnian/small/part-m-00000


七、启动备份 Master 和 Regionserver
1、启动和停止备份 Master
HMaster服务器控制HBase集群。您可以启动多达9个备份HMaster服务器,包括主服务器就有10个备份主服务器。
要启动备份HMaster,请使用本地主备份。对于您想要启动的每个备份主机,添加一个代表该主机的端口偏移量的参数。
每个HMaster都使用三个端口(16010、16020和16030)。端口偏移被添加到这些端口,所以使用2的偏移量,备份HMaster将使用端口16012、16022和16032。
下面的命令启动了3个备份服务器,使用端口16012/16022/16032,16013/16023/16033,以及16015/16025/16035。
$ ./bin/local-master-backup.sh 2 3 5
 
  
 
  

杀掉一个备份master ,找到PID. PID存储在 /tmp/hbase-USER-X-master.pid这样的文件中. 文件内容就只有 PID. 所以可以使用kill -9命令杀掉 PID. 一个命令如下:

$ cat /tmp/hbase-testuser-1-master.pid |xargs kill -9
比如:wangxinnian@mymac:/tmp$ cat hbase-wangxinnian-2-master.pid | xargs kill -9
查看 pid 的值,wangxinnian@mymac:/tmp$ cat hbase-wangxinnian-3-master.pid
68597
 2、启动和停止备份 RegionServer
HRegionServer按照HMaster的指示管理其存储库中的数据。通常,一个HRegionServer在集群中的每个节点上运行。在相同的系统上运行多个HRegionServer对于在伪分布模式下进行测试是很有用的。local-regionservers.sh命令允许您运行多个HRegionServer。它以类似于local-master-backup.sh命令,您所提供的每个参数代表一个实例的端口偏移量。每个 HRegionServer都需要两个端口,默认端口是16020和16030。但是,额外的 HRegionServer的基础端口不是默认端口,因为HMaster使用默认端口,它也是自HBase 1.0.0以来的 HRegionServer。基本端口是16200和16300。您可以在服务器上运行99个额外的 HRegionServer,而不是HMaster或备份HMaster。下面的命令将启动4个附加的 HRegionServer,从1620/16302(基本端口16200/16300+2)开始运行。
$ .bin/local-regionservers.sh start 2 3 4 5

 
  

手动停止一个 RegionServer也是用 local-regionservers.sh命令,带 stop参数和服务器的数值。

$ .bin/local-regionservers.sh stop 3
直接 stop-abase.sh停止集群服务。
 
 
发布了52 篇原创文章 · 获赞 4 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/caridle/article/details/77451130