栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Hadoop系列 (八):Hbase搭建

Hadoop系列 (八):Hbase搭建

文章目录
  • Hadoop系列文章
  • Hbase概述
  • Hbase部署
    • 单机模式
    • 集群模式
  • Hbase Shell

Hadoop系列文章

Hadoop系列 (一):在CentOS中搭建hadoop环境(伪分布式)

Hadoop系列 (二):完全分布式搭建(腾讯云服务器+阿里云服务器)

Hadoop系列 (三):HDFS详细介绍

Hadoop系列 (四):Yarn详细介绍

Hadoop系列 (五):MapReduce详细介绍

Hadoop系列 (六):Spark搭建

Hadoop系列 (七):ZooKeeper详细介绍

Hbase概述

Hbase是建立在Hadoop文件系统(HDFS)之上的分布式、面向列的数据库,通过利用Hadoop的文件系统提供容错能力。与Hive不同的时,通过Hbase可以进行实时读写或者随机访问大规模的数据集。

Hbase是可以提供实时计算的分布式数据库,数据被保存在HDFS分布式文件系统上,由HDFS保证期高容错性。

Hbase上的数据是以StoreFile(HFile)二进制流的形式存储在HDFS上block块中;但是HDFS并不知道的Hbase用于存储什么,它只把存储文件认为是二进制文件,也就是说,Hbase的存储数据对于HDFS文件系统是透明的。

HDFSHbase
HDFS适于存储大容量文件的分布式文件系统。Hbase是建立在HDFS之上的数据库。
HDFS不支持快速单独记录查找。Hbase提供在较大的表快速查找
HDFS提供了高延迟批量处理;没有批处理概念。Hbase提供了数十亿条记录低延迟访问单个行记录(随机存取)。
HDFS提供的数据只能顺序访问。Hbase内部使用哈希表和提供随机接入,并且其存储索引,可将在HDFS文件中的数据进行快速查找。
Hbase部署

在部署Hbase部署之前,需要配置好jdk以及zookeeper。详细可以参考我的历史文章,有详细说明。

单机模式

Hbase下载

#下载文件
[hadoop@master software]$ wget https://dlcdn.apache.org/hbase/stable/hbase-2.3.6-bin.tar.gz

#解压到指定目录
[hadoop@master software]$ sudo tar -zxvf hbase-2.3.6-bin.tar.gz -C /opt/hbase --strip-components 1 

#更改文件夹权限为hadoop
[hadoop@master opt]$ sudo chown -R hadoop:hadoop hbase

配置hbase环境变量

# 编辑.bash_profile 在文件末尾添加一下内容

#set hbase env
export Hbase_HOME=/opt/hbase
export PATH=$PATH:$Hbase_HOME/bin

创建data及pids目录

[hadoop@master hbase]$ mkdir data
[hadoop@master hbase]$ mkdir pids

编辑配置文件

在/opt/hbase/conf/hbase-env.sh文件中添加以下内容:

# hbase-env.sh
export JAVA_HOME=/usr/local/java/jdk1.8.0_291
export HADOOP_HOME=/opt/hadoop
export Hbase_HOME=/opt/hbase
export Hbase_CLASSPATH=/opt/hadoop/etc/hadoo
export Hbase_PID_DIR=/opt/hbase/pids
export Hbase_MANAGES_ZK=false #不启动hbase自带的zookeeper集群

/opt/hbase/confhbase-site.xml文件中添加以下内容:

启动

注意:单机版Hbase启动时,要确保zookeeper不在运行,因为Hbase和Zookeeper会运行在同一个JVM里面,如果zookeeper启动后,再启动Hbase,会报错:Could not start ZK at requested port of 2181. ZK was started at port: 2182

集群模式

节点规划

服务/机器masterslave1slave2
NameNodeY
DataNodeYYY
ZookeeperYYY
RegionServerYYY
Hbase MasterY

修改配置文件

在上面单机模式的基础上,修改hbase-site.xml文件:



          hbase.rootdir
          hdfs://master:9000/hbase
  

  
  
          hbase.zookeeper.property.clientport
          2181
          Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.
          
  
    
  
  
	  hbase.master.info.port
	  60010
  

  
  
          zookeeper.session.timeout
          120000
  

  
  
          hbase.zookeeper.property.dataDir
          /opt/zookeeper
  

  

          hbase.zookeeper.quorum
          master,slave1
  

  
  
          hbase.tmp.dir
          /opt/hbase/data
  

  
  
          hbase.cluster.distributed
          true
  

               

修改文件regionservers

[hadoop@master conf]$ pwd
/opt/hbase/conf

# vim regionservers
# 删除里面的localhost,添加以下内容
master
slave1

文件分发

将文件分发到slave1和slave2上

# 打包hbase文件夹,文件有点大,压缩减少分发时间
[hadoop@master opt]$ sudo tar zcvf hbase.tar.zip hbase

#分发到slave1
[hadoop@master opt]$ scp hbase.tar.zip hadoop@slave1:/home/hadoop/software/
hbase.tar.zip                                                                                                                                       100%  260MB 741.8KB/s   05:58

#在slave1上,解压文件到/opt/hbase目录下
[hadoop@slave1 opt]$ sudo tar -zxvf hbase.tar.zip -C /opt/hbase/ --strip-components 1

启动

查看slave1

注:全部进程启动顺序

  1. 启动master服务器上的hadoop,hdfs,yarn等

    [hadoop@master ~]$ start-all.sh
    WARNING: Attempting to start all Apache Hadoop daemons as hadoop in 10 seconds.
    WARNING: This is not a recommended production deployment configuration.
    WARNING: Use CTRL-C to abort.
    Starting namenodes on [master]
    Starting datanodes
    Starting secondary namenodes [slave1]
    Starting resourcemanager
    Starting nodemanagers
    [hadoop@master ~]$ jps
    3216 ResourceManager
    3362 NodeManager
    2690 NameNode
    3715 Jps
    2827 DataNode
    
    
  2. 启动master上的zookeeper

    [hadoop@master bin]$ sh zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /opt/zookeeper/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    [hadoop@master bin]$ jps
    3216 ResourceManager
    3362 NodeManager
    2690 NameNode
    3955 Jps
    3859 QuorumPeerMain
    2827 DataNode
    
    
  3. 启动slave1上的zookeeper

    [hadoop@slave1 bin]$ sh zkServer.sh start
    ZooKeeper JMX enabled by default
    Using config: /opt/zookeeper/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    [hadoop@slave1 bin]$ jps
    1632 Jps
    1446 NodeManager
    1320 SecondaryNameNode
    1230 DataNode
    1583 QuorumPeerMain
    
    
  4. 启动master上hbase

    [hadoop@master bin]$ start-hbase.sh 
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/opt/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/opt/hbase/lib/client-facing-thirdparty/slf4j-log4j12-1.7.30.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 /opt/hbase/logs/hbase-hadoop-master-master.out
    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/opt/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/opt/hbase/lib/client-facing-thirdparty/slf4j-log4j12-1.7.30.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]
    master: running regionserver, logging to /opt/hbase/logs/hbase-hadoop-regionserver-master.out
    slave1: running regionserver, logging to /opt/hbase/logs/hbase-hadoop-regionserver-slave1.out
    [hadoop@master bin]$ jps
    3216 ResourceManager
    4513 HRegionServer
    3362 NodeManager
    2690 NameNode
    3859 QuorumPeerMain
    4282 HMaster
    5035 Jps
    2827 DataNode
    [hadoop@master bin]$ 
    
    

    Hbase WEB UI界面

停止Hbase

# 先停止regionserver
hadoop@master bin]$ hbase-daemons.sh stop regionserver
master: running regionserver, logging to /opt/hbase/logs/hbase-hadoop-regionserver-master.out
slave1: running regionserver, logging to /opt/hbase/logs/hbase-hadoop-regionserver-slave1.out
master: stopping regionserver.
slave1: stopping regionserver.

#再停止stop-hbase.sh
[hadoop@master bin]$ stop-hbase.sh 
[hadoop@master bin]$ jps
3216 ResourceManager
3362 NodeManager
2690 NameNode
12039 QuorumPeerMain
13899 Jps
2827 DataNode
[hadoop@master bin]$ 

# 如果stop时等待时间过长,可以试下
./hbase-daemon.sh stop master
# 再执行 
./stop-hbase.sh
# 愿意是:为保证集群的可靠性,要启动多个HMaster
Hbase Shell
  1. 连接到Hbase

  1. 显示Hbase Shell帮助信息

    键入“help”并按“Enter”,以显示Hbase Shell的一些基本用法信息以及几个示例命令。请注意,表名、行、列都必须用引号字符括起来。

  2. 创建表

    hbase:001:0> create 'test', 'cf'
    0 row(s) in 0.4170 seconds
    
    => Hbase::Table - test
    
    
  3. 列出表信息

    hbase:002:0> list 'test'
    TABLE
    test
    1 row(s) in 0.0180 seconds
    
    => ["test"]
    
  4. 存放数据

    hbase:003:0> put 'test', 'row1', 'cf:a', 'value1'
    0 row(s) in 0.0850 seconds
    
    hbase:004:0> put 'test', 'row2', 'cf:b', 'value2'
    0 row(s) in 0.0110 seconds
    
    hbase:005:0> put 'test', 'row3', 'cf:c', 'value3' 
    0 row(s) in 0.0100 seconds
    
  5. 删除表

    hbase:008:0> disable 'test'
    0 row(s) in 1.1820 seconds
    
    hbase:009:0> enable 'test' 
    0 row(s) in 0.1770 seconds
    
  6. 退出Hbase Shell

​ 要退出Hbase Shell并断开与群集的连接,请使用该“quit”命令。Hbase仍然在后台运行。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/342335.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号