大数据技术--实验03-HBase的安装与使用【实测可行】

1. 配置Vmware虚拟机

参考第2章的配置,配置好虚拟机。

虚拟机配置好后,配置Hbase参考下表的服务分配来配置HBase。

机器名

主节点

ZooKeeper

RegionServer

master

slave1

备份

slave2

2. 下载并配置HBase

在HBase的官网http://mirrors.cnnic.cn/apache/hbase/ 下载HBase,其文件为:hbase-1.0.1.1 -bin.tar.gz。下载后解压到master机器。

在master机器进行配置即可,然后可以通过把配置文件拷贝的方式,下载到slave1和slave2,这样可以减少工作量。

注:书上是将hbase安装在root用户下,实测时存在一些问题,主要是权限交叉造成的。我们假设本实验的hbase-1.0.3hadoop-2.6.0等组件都是装在/home/hadoop/local/opt下,后续都建立在Hadoop用户下(除用户组以上的配置用root用户修改,其他配置及目录全部使用Hadoop用户,保持用户权限的一致性,避免出现不必要的错误)。

[hadoop@master Hbase]$ tar -zxvf hbase-1.0.3-bin.tar.gz -C ~/local/opt

[hadoop@master ~]$ vim ~/.bashrc

hbase添加到环境变量中

export HBASE_HOME=$HOME/local/opt/hbase-1.0.3

export HBASE_CONF_DIR=$HBASE_HOME/conf

并修改环境变量:

export PATH=$PATH:$HADOOP_PREFIX/bin:$HADOOP_PREFIX/sbin:$HBASE_HOME/bin

[hadoop@master conf]# vim hbase-site.xml

配置文件在$HBASE_HOME/conf文件夹里面。修改文件hbase-site.xml文件,内容如下:

<configuration>

         <property>

                <name>hbase.cluster.distributed</name>

                 <value>true</value>

             </property>

             <property>

                     <name>hbase.rootdir</name>

                          <value>hdfs://master/hbase</value>

             </property>

    <property>

        <name>hbase.master</name>

        <value>master</value>

    </property>

             <property>

                    <name>hbase.zookeeper.quorum</name>

                          <value>master,slave1,slave2</value>

             </property>

             <property>

                        <name>hbase.zookeeper.property.dataDir</name>

                     <value>/home/hadoop/local/var/zookeeper</value>

             </property>

</configuration>

注意hbase.rootdir必须和你的namenode里面的hdfs的主机名和端口一样。

注:如果运行hbase(zookeeper)的用户无法写入zookeeper文件,导致znode data为空,那么在hbase-site.xml指定一个运行hbase的用户有写入文件权限的目录作为zookeeper数据目录,如/home/hadoop/local/var/zookeeper

[hadoop@master conf]# vim hbase-env.sh

修改hbase-env.sh文件,添加JDK的配置。内容如下:

export JAVA_HOME=/usr/lib/jvm/java

export HBASE_MANAGES_ZK=true

第一个参数指定了JDK路径;第二个参数设置使用 hbase 默认自带的 Zookeeper

――――――――――[独立安装zookeeper情况]―――――――――――――――

注:如果独立安装zookeeper,则使用变量export  HBASE_MANAGES_ZK=false 来禁用hbase自带的zookeeper,独立安装zookeeper方法如下:

master机器下,配置zookeeper,先解压安装包,使用命令:

[hadoop@master ~]tar -zxvf zookeeper-3.4.5.tar.gz -C /home/hadoop/local/opt

进入zookeeper的配置目录,首先把zoo_sample.cfg重命名一下,可以重新复制一遍,使用命令:

[hadoop@master ~]cp zoo_sample.cfg zoo.cfg

[hadoop@master ~]vim zoo.cfg

添加如下内容:

dataDir=/home/hadoop/local/var/zookeeper

server.0=192.168.164.5:2888:3888

server.1=192.168.164.6:2888:3888

server.2=192.168.164.7:2888:3888

其中,2888端口号是zookeeper服务之间通信的端口,而3888zookeeper与其他应用程序通信的端口。

在目录/home/hadoop/local/var/zookeeper下创建文件,命名为“myid

[hadoop@master ~]mkdir /home/hadoop/local/var/zookeeper

[hadoop@master ~]/home/hadoop/local/var/zookeeper

[hadoop@master ~]vim myid

在对应的IP的机器上输入对应的编号。

如在192.168.164.5上,“myid”文件内容就是0,在192.168.164.6上,内容就是1,在192.168.164.7上,内容就是2。(后两者在slave1slave2中操作)。

zookeeper分别远程拷贝slave1slave2,使用如下命令(cdzookeeper-3.4.5目录)

scp –r zookeeper-3.4.5  hadoop@slave1:local/opt 

scp –r zookeeper-3.4.5  hadoop@slave2:local/opt

开启zookeeper服务,在三台机器的zookeeper安装目录下使用命令(先cdzookeeper-3.4.5目录):

bin/zkServer.sh start

3台服务器均启动后,如果过程正确的话zookeeper应该已经自动选好leader,进入每台服务器的zookeeper-3.4.5目录,执行以下操作查看zookeeper启动状态:

bin/zkServer.sh status

如果出现以下代码表示安装成功了。

―――――――――――――[独立安装zookeeper情况]――――――――――――――

[hadoop@master conf]# vim regionservers

修改regionservers ,内容如下:

slave1

slave2

[hadoop@master conf]# vim backup-masters

新建backup-masters文件,内容如下:

slave1

[hadoop@master opt]$ scp -r hbase-1.0.3 hadoop@slave1:local/opt/

[hadoop@master opt]$ scp -r hbase-1.0.3 hadoop@slave2:local/opt/

将配置好的hbase-1.0.3复制至slave1slave2

启动hbase时要确保hdfs已经启动。

[root@master ~]# su – hadoop

[hadoop@master ~]$ start-all.sh

(如果是独立安装zookeeper,则启动hdfs后,分别在三台机器上启动zookeeper,独立启动和查看zookeeper方法如上所述。如果是使用Hbase自带的zookeeper,那么不需要独立启动zookeeper,会在下面的start-hbase.sh中自动启动)

[hadoop@master ~]$ start-hbase.sh

slave2: starting zookeeper, logging to /home/hadoop/local/opt/hbase-1.0.3/logs/hbase-hadoop-zookeeper-slave2.out

slave1: starting zookeeper, logging to /home/hadoop/local/opt/hbase-1.0.3/logs/hbase-hadoop-zookeeper-slave1.out

master: starting zookeeper, logging to /home/hadoop/local/opt/hbase-1.0.3/logs/hbase-hadoop-zookeeper-master.out

starting master, logging to /home/hadoop/local/opt/hbase-1.0.3/logs/hbase-hadoop-master-master.out

slave1: starting regionserver, logging to /home/hadoop/local/opt/hbase-1.0.3/logs/hbase-hadoop-regionserver-slave1.out

slave2: starting regionserver, logging to /home/hadoop/local/opt/hbase-1.0.3/logs/hbase-hadoop-regionserver-slave2.out

slave1: starting master, logging to /home/hadoop/local/opt/hbase-1.0.3/logs/hbase-hadoop-master-slave1.out

[hadoop@master ~]$ jps

3811 SecondaryNameNode

5897 HMaster

5832 HQuorumPeer

3957 ResourceManager

6057 Jps

3653 NameNode

[hadoop@master ~]$ ssh slave1

Last login: Sat Apr 22 20:07:06 2017 from master

[hadoop@slave1 ~]$ jps

3766 HQuorumPeer

3869 HRegionServer

2871 DataNode

4085 Jps

2941 NodeManager

3942 HMaster

[hadoop@slave1 ~]$ ssh slave2

Last login: Sat Apr 22 20:10:54 2017 from slave1

[hadoop@slave2 ~]$ jps

2913 NodeManager

3657 HRegionServer

3554 HQuorumPeer

2843 DataNode

3890 Jps

同时在浏览器访问:http://master:16010/master-status 即可看到HBase的状态。http://192.168.164.6:16030/ http://192.168.164.7:16030/可以用于查看RegionServer

关闭HBase,在master机器上执行下面的命令:

[hadoop@master bin]# ./stop-hbase.sh

关闭zookeeper,若使用Hbasezookeeper,则关闭Hbase时自动关闭。若独立安装zookeeper,则分别在三台机器上使用bin/zkServer.sh stop关闭。

关闭hdfs,在master机器上执行下面的命令:

[hadoop@master bin]# ./stop-all.sh

注意启动顺序为:HDFS->Zookeeper->HBase,关闭顺序为:HBase->(Zookeeper)->HDFS

注意:如果发现slave1上面的RegionServer启动不了,可以在$HBASE_HOME/log下面查看RegionServer对应的日志,如果出现下面的错误:

Caused by: java.net.BindException: Problem binding to master.example.com/192.168.222.131:16020 : Address already in use

         at org.apache.hadoop.hbase.ipc.RpcServer.bind(RpcServer.java:2371)

         at org.apache.hadoop.hbase.ipc.RpcServer$Listener.<init>(RpcServer.java:524)

         at org.apache.hadoop.hbase.ipc.RpcServer.<init>(RpcServer.java:1899)

         at org.apache.hadoop.hbase.regionserver.RSRpcServices.<init>(RSRpcServices.java:792)

         at org.apache.hadoop.hbase.regionserver.HRegionServer.createRpcServices(HRegionServer.java:575)

         at org.apache.hadoop.hbase.regionserver.HRegionServer.<init>(HRegionServer.java:492)

         ... 10 more

Caused by: java.net.BindException: Address already in use

那就说明HBase和RegionServer端口相同,需要使用下面的方式启动RegionServer

[hadoop@slave1 bin]#./local-regionservers.sh start 1

关闭命令为:[hadoop@slave1 bin]#./local-regionservers.sh stop 1

其中1,2,3标识各个RegionServer。表示端口号偏移一个值。

备份Hmaster如果启动不了,一般也是这个原因。

使用本地命令进行启动:

[hadoop@slave bin]$ ./local-master-backup.sh start 1

其中1,2,3标识各个HMaster表示端口号偏移一个值。

关闭使用类似的命令。

重点是保持HBaseRegionServer端口不相同就行。

3. Hbase Shell命令

1)进入HBase Shell。

[hadoop@master ~]# $HBASE_HOME/bin/hbase shell

HBase Shell; enter 'help<RETURN>' for list of supported commands.

Type "exit<RETURN>" to leave the HBase Shell

Version 1.0.1.1, re1dbf4df30d214fca14908df71d038081577ea46, Sun May 17 12:34:26 PDT 2015

2)新建user表。

hbase(main):001:0> create 'user','info'

0 row(s) in 1.2520 seconds

=> Hbase::Table – user

3)导入user表中的数据。

hbase(main):002:0> put 'user','001','info:name','Tom'

0 row(s) in 0.1370 seconds

hbase(main):003:0> put 'user','001','info:age','22'

0 row(s) in 0.0240 seconds

hbase(main):004:0> put 'user','002','info:name','Kate'

0 row(s) in 0.0230 seconds

hbase(main):005:0> put 'user','002','info:age','30'

0 row(s) in 0.0140 seconds

hbase(main):006:0> put 'user','003','info:name','Jack'

0 row(s) in 0.0120 seconds

hbase(main):007:0> put 'user','003','info:age','36'

0 row(s) in 0.0280 seconds

4)查看user表中的数据。

hbase(main):008:0> scan 'user'

ROW                    COLUMN+CELL                                                 

 001                   column=info:age, timestamp=1439433026307, value=22          

 001                   column=info:name, timestamp=1439433017825, value=Tom        

 002                   column=info:age, timestamp=1439433043987, value=30          

 002                   column=info:name, timestamp=1439433037118, value=Kate       

 003                   column=info:age, timestamp=1439433057189, value=36          

 003                   column=info:name, timestamp=1439433050416, value=Jack       

3 row(s) in 0.0740 seconds

5)查看user表的描述。

hbase(main):009:0> describe 'user'

Table user is ENABLED                                                              

user                                                                               

COLUMN FAMILIES DESCRIPTION                                                         

{NAME => 'info', BLOOMFILTER => 'ROW', VERSIONS => '1', IN_MEMORY => 'false', KEEP_D

ELETED_CELLS => 'FALSE', DATA_BLOCK_ENCODING => 'NONE', TTL => 'FOREVER', COMPRESSIO

N => 'NONE', MIN_VERSIONS => '0', BLOCKCACHE => 'true', BLOCKSIZE => '65536', REPLIC

ATION_SCOPE => '0'}                                                                

1 row(s) in 0.0550 seconds

6)删除user表。

hbase(main):010:0> disable 'user'

0 row(s) in 1.2820 seconds

hbase(main):011:0> drop 'user'

0 row(s) in 0.1940 seconds

hbase(main):012:0> list

TABLE                                                                              

0 row(s) in 0.0250 seconds

=> []

  • 29
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值