大数据技术--实验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.3和hadoop-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文件,内容如下: \ \ \hbase.cluster.distributed\ \true\ \ \ \hbase.rootdir\ \hdfs://master/hbase\ \ \ \hbase.master\ \master\ \ \ \hbase.zookeeper.quorum\ \master,slave1,slave2\ \ \ \hbase.zookeeper.property.dataDir\ \/home/hadoop/local/var/zookeeper\ \ \ 注意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服务之间通信的端口,而3888是zookeeper与其他应用程序通信的端口。 在目录/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。(后两者在slave1和slave2中操作)。 把zookeeper分别远程拷贝slave1,slave2,使用如下命令(先cd至zookeeper-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安装目录下使用命令(先cd至zookeeper-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复制至slave1和slave2。 启动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,若使用Hbase的zookeeper,则关闭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.\(RpcServer.java:524)* *at org.apache.hadoop.hbase.ipc.RpcServer.\(RpcServer.java:1899)* *at org.apache.hadoop.hbase.regionserver.RSRpcServices.\(RSRpcServices.java:792)* *at org.apache.hadoop.hbase.regionserver.HRegionServer.createRpcServices(HRegionServer.java:575)* *at org.apache.hadoop.hbase.regionserver.HRegionServer.\(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。**表示端口号偏移一个值。** 关闭使用类似的命令。 **重点是保持HBase** **和RegionServer** **端口不相同就行。** ## **3. Hbase Shell** **命令** 1)进入HBase Shell。 \[hadoop@master \~\]# $HBASE_HOME/bin/hbase shell HBase Shell; enter 'help\' for list of supported commands. Type "exit\" 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 =\> \[

相关推荐
Channing Lewis1 小时前
如果科技足够发达,是否还需要维持自然系统(例如生物多样性)中那种‘冗余’和‘多样性’,还是可以只保留最优解?
大数据·人工智能·科技
禺垣1 小时前
区块链技术概述
大数据·人工智能·分布式·物联网·去中心化·区块链
Channing Lewis1 小时前
sql server如何创建表导入excel的数据
数据库·oracle·excel
秃头摸鱼侠1 小时前
MySQL安装与配置
数据库·mysql·adb
UGOTNOSHOT1 小时前
每日八股文6.3
数据库·sql
行云流水行云流水2 小时前
数据库、数据仓库、数据中台、数据湖相关概念
数据库·数据仓库
John Song2 小时前
Redis 集群批量删除key报错 CROSSSLOT Keys in request don‘t hash to the same slot
数据库·redis·哈希算法
IvanCodes2 小时前
七、Sqoop Job:简化与自动化数据迁移任务及免密执行
大数据·数据库·hadoop·sqoop
tonexuan2 小时前
MySQL 8.0 绿色版安装和配置过程
数据库·mysql