HBase(简介&Hadoop HBase版本匹配问题(含Hadoop2.10)&本地安装&集群安装&命令)

Hbase

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
与FUJITSU Cliq等商用大数据产品不同,HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。 [1]
上图描述Hadoop EcoSystem中的各层系统。其中,HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,Hadoop MapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。

此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。 Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。

版本适配

HaBase对jdk和hadoop有很强的兼容性要求

jdk版本兼容
√ 为兼容
× 为不兼容

在这里插入图片描述

HaDoop版本兼容
√ 为兼容
× 为不兼容
!为未测试

在这里插入图片描述

本地安装

  1. 解压
  2. 配置环境变量
export HBASE_HOME=/usr/local/LinuxApp/hbase2.2.3
export PATH=$PATH:$JAVA_HOME/bin::$HBASE_HOME/bin
export PATH JAVA_HOME  HBASE_HOME
#保存退出
source /etc/profile
  1. 编辑conf / hbase-env.sh文件
    并取消注释以#export JAVA_HOME =开头的行,然后将其设置为Java安装路径。
  2. 编辑conf / hbase-site.xml,这是主要的HBase配置文件。
    这时,您需要在本地文件系统上指定HBase和ZooKeeper写入数据的目录并确认一些风险。默认情况 下,在/ tmp下创建一个新目录。许多服务器配置为在重新引导时删除/ tmp的内容,因此您应该将数据 存储在其他位置。以下配置会将HBase的数据存储在名为的用户的主目录中的hbase目录中testuser。
    将< property >标签粘贴在标签下面< configuration >,在新的HBase安装中应为空。
<configuration>

<!--HBase数据的保存目录,可以不事先创建data目录,系统会自动创建-->
  <property>
    <name>hbase.rootdir</name>
    <value>file:///home/testuser/hbase</value>
  </property>
  
  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/home/testuser/zookeeper</value>
  </property>
  
  <property>
    <name>hbase.unsafe.stream.capability.enforce</name>
    <value>false</value>
    <description>
      Controls whether HBase will check for stream capabilities (hflush/hsync).

      Disable this if you intend to run on LocalFileSystem, denoted by a rootdir
      with the 'file://' scheme, but be mindful of the NOTE below.

      WARNING: Setting this to false blinds you to potential data loss and
      inconsistent system state in the event of process and/or node failures. If
      HBase is complaining of an inability to use hsync or hflush it's most
      likely not a false positive.
    </description>
  </property>
  
</configuration>
测试
start-hbase.sh 

启动可能会警告:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/LinuxApp/hadoop2.10/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/LinuxApp/hbase2.2.3/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
running master, logging to /usr/local/LinuxApp/hbase2.2.3/logs/hbase-root-master-node1.out
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/LinuxApp/hadoop2.10/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/LinuxApp/hbase2.2.3/lib/client-facing-thirdparty/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

解决:

  1. 删除hadoop目录下
    /share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar
  2. 重新启动…

jps查看进程:出现HMaster进程

81698 HMaster

启动客户端

hbase shell

创建表

create ‘test1’,‘info’

查看

list

出现新建的表测试成功…

集群安装

集群规划
在这里插入图片描述

  1. 解压
  2. 配置环境变量
  3. 修改hbase-env.sh
export JAVA_HOME=/usr/local/jdk8
# 使用独立的zookeeper
export HBASE_MANAGES_ZK=false
  1. 修改hbase-site.xml
<property>
       <name>hbase.rootdir</name>
       <value>hdfs://LightseaBlue/hbase</value>
   </property>
   <!-- 开启集群运行方式 -->
   <property>
       <name>hbase.cluster.distributed</name>
       <value>true</value>
   </property>
<property>
	<name>hbase.zookeeper.property.dataDir</name>  
	<value>/opt/zookeeper</value>
	</property>
   <property>
      <name>hbase.tmp.dir</name>
       <value>/usr/local/LinuxApp/hbase2.2.3/tmp</value>
   </property>
   <property>
       <name>hbase.zookeeper.quorum</name>
       <value>node1,node2,node3</value>
   </property>
  1. 设置regionservers
	node2
	node3
	node4
  1. 设置备份 conf/backup-masters
    没有此文件需自己创建
node2
  1. 在hadoop:hdfs-site.xml添加
<property>
  <name>dfs.datanode.max.transfer.threads</name>
  <value>4096</value>
</property>
  1. HDFS客户端配置
    第一种: 将Hadoop配置文件的位置信息添加到hbase-env.sh的HBASE_CLASSPATH 属性

    export HBASE_CLASSPATH=/usr/local/hadoop276/etc/hadoop
    

    第二种:将Hadoop的hdfs-site.xml或hadoop-site.xml 拷贝到 ${HBASE_HOME}/conf目录下,或者通过符号链接的方式。如果采用这种方式的话,建议将两者都拷贝或建立符号链接

       	# 拷贝
    cp core-site.xml hdfs-site.xml /usr/local/hbase219/conf/
    # 使用符号链接
    ln -s   /usr/local/hadoop276/etc/hadoop/core-site.xml   /usr/local/hbase219/conf
    ln -s   /usr/local/hadoop276/etc/hadoop/hdfs-site.xml  /usr/local/hbase219/conf
    

    第三种 :如果你只有少量更改,那么直接配置到hbase-site.xml中即可。

  2. 同步

scp -r hbase219/  node2:/usr/local/
scp -r hbase219/  node3:/usr/local/
scp -r hbase219/  node4:/usr/local/ 
  1. 启动
    1. 启动zk
    2. 启动hadoop集群(确保有一台namenode是运行的)
    3. 启动hbase
      start-hbase.sh
      
  2. 验证(去web端查看信息也可以使用jps查看进程)
    http://node1:16010/master-status
    http://node2:16010/master-status

命令

创建:

create 表名,列簇,…,

create 'test','info'
插入&更新:

put 表名,rowid,‘列簇:列名’,'值’

put 'test1','1','info:sex','nan'
put 'test1','2','id','32'
查询操作

scan '表名’

scan 'test1'
获取行或单元(cell)的值

get ‘表名’, ‘行键’
get ‘表名’, ‘行键’, '列簇名’

get 'test1','1'
get 'test1','1','info'
查看表
list
统计表数据行数

count '表名‘

count 'test1'
查看表结构describe

describe '表名’

describe 'test1'
变更表信息

将 info 列族中的数据存放 3 个版本:

 alter 'test1',{NAME=>'info',VERSIONS=>3}
get 'test1','1001',{COLUMN=>'info:name',VERSIONS=>3}
删除
  1. 删除某 rowkey 的全部数据:
deleteall 'test','1001'
  1. 删除某 rowkey 的某一列数据
delete 'test','1002','info:name'
清空表数据
truncate 'test1'
删除表
  1. 首先需要先让该表为 disable 状态:disable 'test1'
  2. 然后才能 drop 这个表:drop 'test1'
退出
exit
关闭Hbase
stop-hbase.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值