飞鸟博客

导航

指导手册06:HBase安装部署

指导手册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

今天在启动HBase时发现如下错误:/bin/java: No such file or directory6/bin/../bin/hbase: line 412: /usr/local/jdk1.8.0_152/bin/java,而在我的hbase-env.sh中又JAVA_HOME,路径也是正确的,可为什么还会报这个错误呢?后来我才发现是因为我使用的hbase-env.sh文件是我自己创建的,而不是hbase目录中本身存在的那个配置文件,hbase不认可这种自己创建的配置文件因此才报错。

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

在hosts文件中添加

127.0.0.1 localhost

(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'

(2)查看数据

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

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

(2.1). get命令

  get 'student','18001' 

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

 

(2.2)   scan命令

  scan 'student'

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

 

(3)删除数据

在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行的全部数据。

 

(4)删除表

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

list

disable 'student' 

drop 'student'

命令执行截图如下:

(5)查询表历史数据

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

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

 

  create 'teacher',{NAME=>'username',VERSIONS=>5}

 

(5.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'

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

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

查询结果截图如下:

 

 

(6)退出HBase数据库操作

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

Shell 命令:exit

 

 

posted on 2018-10-05 18:27  飞鸟博客  阅读(245)  评论(0编辑  收藏  举报