大数据技术--实验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 =\> \[

相关推荐
侧耳倾听1115 分钟前
使用内存数据库来为mapper层的接口编写单元测试
数据库·单元测试
ifanatic23 分钟前
[每周一更]-(第138期):MySQL 子查询详解:原理、应用及优化方案
数据库·mysql
Yan-英杰28 分钟前
DeepSeek-R1模型现已登录亚马逊云科技
java·大数据·人工智能·科技·机器学习·云计算·deepseek
黄雪超35 分钟前
Flink介绍——实时计算核心论文之Storm论文总结
大数据·论文阅读·storm
TDengine (老段)39 分钟前
TDengine 中的日志系统
java·大数据·数据库·物联网·时序数据库·tdengine·iotdb
kfepiza1 小时前
Debian编译安装mysql8.0.41源码包 笔记250401
数据库·笔记·mysql·debian·database
tjfsuxyy1 小时前
SqlServer整库迁移至Oracle
数据库·oracle·sqlserver
老王笔记2 小时前
MySQL统计信息
数据库·mysql
无名之逆2 小时前
[特殊字符] Hyperlane 框架:高性能、灵活、易用的 Rust 微服务解决方案
运维·服务器·开发语言·数据库·后端·微服务·rust