指导手册06:HBase安装部署

配置环境

1.参考文件:

https://www.cnblogs.com/lzxlfly/p/7221890.html

https://www.cnblogs.com/sixiweb/archive/2013/02/20/2919305.html

2.操作系统:centos

3.四台虚拟机:master :10.0.2.4, slave1:10.0.2.5,slave2:10.0.2.6,slave3:10.0.2.7

4.Hadoop系统己安装完成。

5.Java环境己配置,输入命令,source /etc/profile 使配置生效

分别输入命令,java 、 javac 、 java -version,查看jdk环境变量是否配置成功

Part 1:安装HBase

1. HBase下载

网址:http://hbase.apache.org/downloads.html建议下载稳定版本hbase-1.2.6.1-bin.tar.gz

稳定版下载地址:http://archive.apache.org/dist/hbase/stable/

2.Hbase安装步骤:

(1)安装Hadoop:

tar –zxf /opt/hbase-1.2.6.1-bin.tar.gz -C /opt

[root@master local]mv hbase-1.2.6.1 hbase-1.2.6

(2)在Hadoop配置的基础上,配置环境变量HBASE_HOME、hbase-env.sh

编辑 vim /etc/profile 加入

export HBASE_HOME=/opt/hbase-1.2.6

export PATH=$HBASE_HOME/bin:$PATH

编辑vim /opt/hbase-1.2.6/conf/hbase-env.sh 加入

export JAVA_HOME=/usr/java/jdk1.7.0_80(jdk安装路径)

去掉注释 # export HBASE_MANAGES_ZK=true,使用hbase自带zookeeper。

(3) 配置hbase-site.xml文件

<configuration>

<property>

<name>hbase.rootdir</name> <!-- hbase存放数据目录 -->

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

<!-- 端口要和Hadoop的fs.defaultFS端口一致–>

</property>

<property>

<name>hbase.cluster.distributed</name> <!-- 是否分布式部署
–>

<value>true</value>

</property>

<property>

<name>hbase.zookeeper.quorum</name> <!-- list of zookooper
–>

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

</property>

<property><!–zookooper配置、日志等的存储位置 -->

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

<value>/opt/hbase/zookeeper</value>

<!—如果目录不存在,需创建并给权限 -->

</property>

</configuration>

(4) 配置regionservers

编辑 vim /opt/hbase-1.2.6/conf/regionservers 去掉默认的localhost,

加入slave1、slave2,slave3保存退出 (因为用name出错,我改用了IP地址)。

然后把在master上配置好的hbase,通过远程复制命令

scp -r /opt/hbase-1.2.6 10.0.2.5/7:/opt/hbase-1.2.6

复制到slave1、slave2、slave3的位置

(5) 各节点关闭防火墙

Service iptables stop

(6) 启动与停止Hbase

(6.1)在Hadoop已经启动成功的基础上,输入start-hbase.sh

输入jps命令查看进程是否启动成功,若 master上出现HMaster、HQuormPeer,

slave上出现HRegionServer、HQuorumPeer,就是启动成功了。

(6.2)输入hbase shell 命令 进入hbase命令模式

输入status命令可以看到如下内容,1个master,2 servers,3机器全部成功启动。

1 active master, 0 backup masters, 2 servers, 0 dead, 2.0000 average load

如果报slf4j-log4j12-1.7.5冲突错误,请删除/hbase-1.2.6.1/lib目录下的slf4j-log4j12-1.7.5包。原因:该包和hadoop下面的包冲突了。删掉一个即可。

(6.3)修改配置本地hosts。

编辑 etc\hosts文件,加入

127.0.0.1 localhost (需添加)

10.0.2.4 master master.centos.com

10.0.2.5 slave1 slave1.centos.com

10.0.2.6 slave2 slave2.centos.com

10.0.2.7 slave3 slave3.centos.com

在浏览器中输入http://master:16010就可以在界面上看到hbase的配置了

(6.4)当要停止hbase时输入stop-hbase.sh,过几秒后hbase就会被停止了。

注意:如果在操作HBase的过程中发生错误,可以通过{HBASE_HOME}目录(/usr/local/hbase)下的logs子目录中的日志文件查看错误原因。

这里启动关闭Hadoop和HBase的顺序一定是:

启动Hadoop—>启动HBase—>关闭HBase—>关闭Hadoop

3.调试

  1. /bin/java 没有那个文件或目录 hbase

(2)启动hadoop时候报错:localhost: ssh: Could not resolve hostname localhost:
Temporary failure in name resolution”

(3)出错时日志查看:hbase/logs

(4) HBase集群部署,创建表错误(Master is initializing),

http://blog.sina.com.cn/s/blog_af5a109b01018ezy.html

(5) 关于从节点的HRegionServer启动不起来的解决办法

启动时间同步

(6) hbase数据库错误——ERROR: Can’t get master address from ZooKeeper; znode data
== null

https://blog.csdn.net/u010022051/article/details/44176931

需新建一个zookeeper目录

Part 2: Hbase Shell操作

1.HBase中创建表

HBase中用create命令创建表,具体如下:

create ‘student’,‘name’,‘sex’,‘age’,‘dept’,‘course’

命令执行截图如下:

此时,即创建了一个“student”表,属性有:name,sex,age,dept,course。因为HBase的表中会有一个系统默认的属性作为行键,无需自行创建,默认为put命令操作中表名后第一个数据。创建完“student”表后,可通过describe命令查看“student”表的基本信息。命令执行截图如下:

2.HBase数据库基本操作

练习HBase的增、删、改、查操作。在添加数据时,HBase会自动为添加的数据添加一个时间戳,故在需要修改数据时,只需直接添加数据,HBase即会生成一个新的版本,从而完成“改”操作,旧的版本依旧保留,系统会定时回收垃圾数据,只留下最新的几个版本,保存的版本数可以在创建表的时候指定。

  1. 添加数据

HBase中用put命令添加数据,注意:一次只能为一个表的一行数据的一个列,也就是一个单元格添加一个数据,所以直接用shell命令插入数据效率很低,在实际应用中,一般都是利用编程操作数据。

当运行命令:put
‘student’,’18001’,’name’,’zhangsan’时,即为student表添加了学号为18001,名字为zhangsan的一行数据,其行键为18001。shell命令为:

put ‘student’,‘18001’,‘name’,'zhangsan

命令执行截图如下,即为student表添加了学号为18001,名字为zhangsan的一行数据,其行键为18001。

Shell命令:

put ‘student’,‘18001’,‘course:math’,‘80’

即为18001行下的course列族的math列添加了一个数据。截图如下:

继续添加数据:

put ‘student’,‘18001’,‘dept’,'software’

put ‘student’, ‘18001’,‘age’,‘18’

put ‘student’, ‘18001’,‘sex’,‘male’

  1. 查看数据

HBase中有两个用于查看数据的命令:

  • get命令,用于查看表的某一行数据;

  • scan命令用于查看某个表的全部数据

(2.1). get命令

get ‘student’,‘18001’

命令执行截图如下, 返回的是‘student’表‘18001’行的数据。

(2.2). scan命令

scan ‘student’

命令执行截图如下, 返回的是‘student’表的全部数据。

  1. 删除数据

在HBase中用delete以及deleteall命令进行删除数据操作,它们的区别是:1.
delete用于删除一个数据,是put的反向操作;2. delete all操作用于删除一行数据。

3.1. delete命令

delete ‘student’,‘18001’,‘sex’

命令执行截图如下, 即删除了student表中95001行下的sex列的所有数据。

3.2. deleteall命令

deleteall ‘student’,‘18001’

命令执行截图如下,即删除了student表中的18001行的全部数据。

3.3. 删除表

删除表有两步,第一步先让该表不可用,第二步删除表。删除表之前,可以使用list命令查看所有表。命令:

list

disable ‘student’

drop ‘student’

命令执行截图如下:

  1. 查询表历史数据

查询表的历史版本,需要两步。

(4.1)在创建表的时候,指定保存的版本数(假设指定为5)

create ‘teacher’,{NAME=>‘username’,VERSIONS=>5}

(4.2)插入数据然后更新数据,使其产生历史版本数据,注意:这里插入数据和更新数据都是用put命令

put ‘teacher’,‘81001’,‘username’,‘zhangsan’

put ‘teacher’,‘81001’,‘username’,‘lisi’

put ‘teacher’,‘81001’,‘username’,‘wangwu’

put ‘teacher’,‘81001’,‘username’,‘zhaoliu’

put ‘teacher’,‘81001’,‘username’,‘xiaoming’

put ‘teacher’,‘81001’,‘username’,‘xiaoli’

  1. 查询时,指定查询的历史版本数。默认会查询出最新的数据。(有效取值为1到5)

get ‘teacher’,‘81001’,{COLUMN=>‘username’,VERSIONS=>5}

查询结果截图如下:

  1. 退出HBase数据库操作

最后退出数据库操作,输入exit命令即可退出,注意:这里退出HBase数据库是退出对数据库表的操作,而不是停止启动HBase数据库后台运行。

Shell 命令:exit

10-05 10:28