IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop系列 (八):Hbase搭建 -> 正文阅读

[大数据]Hadoop系列 (八):Hbase搭建

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文件:

<configuration>
<property>
          <name>hbase.rootdir</name>
          <value>hdfs://master:9000/hbase</value>
  </property>

  <!--hbase端口-->
  <property>
          <name>hbase.zookeeper.property.clientport</name>
          <value>2181</value>
          <description>Property from ZooKeeper'sconfig zoo.cfg. The port at which the clients will connect.
          </description>
  </property>
    
  <!--配置WEB UI界面-->
  <property>
	  <name>hbase.master.info.port</name>
	  <value>60010</value>
  </property>

  <!--超时时间-->
  <property>
          <name>zookeeper.session.timeout</name>
          <value>120000</value>
  </property>

  <!--zookeeper地址-->
  <property>
          <name>hbase.zookeeper.property.dataDir</name>
          <value>/opt/zookeeper</value>
  </property>

  <!--zookeeper集群配置,如果是集群,则添加其他主机地址-->
<property>
          <name>hbase.zookeeper.quorum</name>
          <value>master,slave1</value>
  </property>

  <!--hbase数据存放目录,tmp并不是临时文件目录-->
  <property>
          <name>hbase.tmp.dir</name>
          <value>/opt/hbase/data</value>
  </property>

  <!--集群或者单机模式,false是单机模式,true是分布式-->
  <property>
          <name>hbase.cluster.distributed</name>
          <value>true</value>
  </property>

</configuration>               

修改文件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仍然在后台运行。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-10-22 11:00:15  更:2021-10-22 11:00:22 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:39:29-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码