列式存儲的分布式資料庫——HBase(環境部署)

大數據老司機 發佈 2022-08-15T01:48:43.928930+00:00

列式存儲的最大好處就是,其數據在表中是按照某列存儲的,這樣在查詢只需要少數幾個欄位時,能大大減少讀取的數據量。

一、概述

Hbase 是一個面向列式存儲的分布式資料庫,其設計思想來源於 Google 的 BigTable 論文。HBase 底層存儲基於 hdfs 實現,集群的管理基於 Zookeeper 實現。HBase 良好的分布式架構設計為海量數據的快速存儲、隨機訪問提供了可能,基於數據副本機制和分區機制可以輕鬆實現在線擴容、縮容和數據容災,是大數據領域中 Key-Value 數據結構存儲最常用的資料庫方案。

官方文檔:https://hbase.apache.org/book.html
GitHub地址:https://github.com/apache/hbase

HBase特點:

  • 易擴展:Hbase 的擴展性主要體現在兩個方面,一個是基於運算能力(RegionServer) 的擴展,通過增加 RegionSever 節點的數量,提升 Hbase 上層的處理能力;另一個是基於存儲能力的擴展(HDFS),通過增加 DataNode 節點數量對存儲層的進行擴容,提升 HBase 的數據存儲能力。
  • 海量存儲:HBase 作為一個開源的分布式 Key-Value 資料庫,其主要作用是面向 PB 級別數據的實時入庫和快速隨機訪問。這主要源於上述易擴展的特點,使得 HBase 通過擴展來存儲海量的數據。
  • 列式存儲:Hbase 是根據列族來存儲數據的。列族下面可以有非常多的列。列式存儲的最大好處就是,其數據在表中是按照某列存儲的,這樣在查詢只需要少數幾個欄位時,能大大減少讀取的數據量。
  • 高可靠性:WAL 機制保證了數據寫入時不會因集群異常而導致寫入數據丟失,Replication 機制保證了在集群出現嚴重的問題時,數據不會發生丟失或損壞。而且 Hbase 底層使用 HDFS,HDFS 本身也有備份。
  • 稀疏性:在 HBase 的列族中,可以指定任意多的列,為空的列不占用存儲空間,表可以設計得非常稀疏。

二、Hbase的優缺點

1)Hbase優點

  • 列的可以動態增加,並且列為空就不存儲數據,節省存儲空間.
  • Hbase自動切分數據,使得數據存儲自動具有水平scalability.
  • Hbase可以提供高並發讀寫操作的支持

2)Hbase缺點

  • 不能支持條件查詢,只支持按照Row key來查詢.
  • 暫時不能支持Master server的故障切換,當Master宕機後,整個存儲系統就會掛掉.

三、HBase數據模型

HBase是運行在Hadoop集群上的一個資料庫,與傳統的資料庫有嚴格的ACID(原子性、一致性、隔離性、持久性)要求不一樣,HBase降低了這些要求從而獲得更好的擴展性,它更適合存儲一些非結構化和半結構化的數據。

1)邏輯模型

  • 表命名空間(Namespace):表命名空間不是強制的,當想把多個表分到一個組去統一管理的時候才會用到表命名空間;
  • 表(Table):Hbase採用表來組織數據;一個表由一個或多個列族組成。數據屬性,比如超時時間(TTL)、壓縮算法(COMPRESSION)等,都在列族的定義中定義。
  • 行(Row):一個行包含多個列,這些列通過列族來分類。行中數據所屬列族只能只能從該表所定義的列族選擇,否則會得到一個NoSuchColumnFamilyException。由於HBase是一個列式資料庫,所以一個行中的數據可以分布在不同的RegionServer上。
  • 列標識(Column Qualifier):多個列組成一個行。列族和列經常用Column
  • 列族(Column Family):一個table有許多個列族,列族是列的集合,屬於表結構,也是表的基本訪問控制單元。
  • Column Family:Column Qualifier形式標識;
  • 時間戳(Timestamp):用來區分數據的不同版本;
  • 單元格(Cell):通過行、列族、列、時間戳可以確定一個單元格,存儲的數據沒有數據類型,是字節數組byte[]。

以上幾個概念以及它們之間的關係可以用下圖表示:

2)物理模型

實際存儲方式:每個Region由多個Store構成,每個Store保存一個column family。

  • 邏輯數據模型中空白cell在物理上是不存儲的,因此若一個請求為要獲取t8時間的contents:html,他的結果就是空。相似的,若請求為獲取t9時間的anchor:my.look.ca,結果也是空。但是,如果不指明時間,將會返回最新時間的行,每個最新的都會返回。
  • 在一個HBase中,存儲了很多HBase表,當表中包含的行數量非常龐大,無法在一台機器上存儲時,需要分布存儲到多台機器上,需要根據行鍵的值對表中進行分區,每個行分區被稱為「Region」
  • Master主伺服器把不同的Region分配到不同的Region伺服器上,同一個Region不會拆分到多個Region伺服器上,每個Region伺服器負責管理一個Region集合,通常每個Region伺服器上會放置10~1000個Region。

四、HBase 架構與原理

1)HBase讀流程

2)HBase寫流程

數據flush過程

  • 當MemStore數據達到閾值(默認是128M,老版本是64M),將數據刷到硬碟,將內存中的數據刪除,同時刪除HLog中的歷史數據;
  • 並將數據存儲到HDFS中;

數據合併過程

  • 當數據塊達到4塊,Hmaster將數據塊加載到本地,進行合併;
  • 當合併的數據超過256M,進行拆分,將拆分後的Region分配給不同的Hregionserver管理;
  • 當HregionServer宕機後,將HregionServer上的hlog拆分,然後分配給不同的HregionServer加載,修改.META.;

【溫馨提示】HLog會同步到HDFS。

五、環境部署(全分布模式)

HBase有三種運行模式:

  • 單機模式:只在一台計算機運行,這種模式下,HBase所有進程包括Maste、HRegionServer、和Zookeeper都在同一個JVM中運行,存儲機制採用本地文件系統,沒有採用分布式文件系統HDFS。
  • 偽分布模式:只在一台計算機運行,這種模式下,HBase所有進程都運行在不同一個節點,在一個節點上模擬了一個具有HBase完整功能的微型集群,存儲機制採用分布式文件系統HDFS,但是HDFS的NameNode和DataNode都位於同一台計算機上。
  • 全分布模式:在多台計算機上運行,這種模式下,HBase的守護進程運行在多個節點上,形成一個真正意義上的集群,存儲機制採用分布式文件系統HDFS,且HDFS的namenode和DataNode位於不同計算機上。

1)環境準備

主機名

IP

角色

local-168-182-110

192.168.182.110

NodeManager、QuorumPeerMain、HMaster、DataNode、HRegionServer

local-168-182-111

192.168.182.111

DataNode、HRegionServer、SecondaryNameNode、NodeManager、QuorumPeerMain

local-168-182-112

192.168.182.112

NodeManager、HRegionServer、DataNode、QuorumPeerMain

2)安裝JDK

官網下載:https://www.oracle.com/java/technologies/downloads/

百度雲下載

連結:https://pan.baidu.com/s/1-rgW-Z-syv24vU15bmMg1w
提取碼:8888

cd /opt/
tar -xf jdk-8u212-linux-x64.tar.gz

# 在文件加入環境變量/etc/profile
export java_HOME=/opt/jdk1.8.0_212
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# source加載
source /etc/profile
# 查看jdk版本
java -version

3)安裝ZooKeeper

也可以參考我之前的文章:分布式開源協調服務——Zookeeper

1、下載解壓

下載地址:https://zookeeper.apache.org/releases.html

cd /opt/bigdata/
wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz --no-check-certificate
tar -xf  apache-zookeeper-3.8.0-bin.tar.gz

2、配置環境變量

vi /etc/profile
export ZOOKEEPER_HOME=/opt/bigdata/apache-zookeeper-3.8.0-bin/
export PATH=$ZOOKEEPER_HOME/bin:$PATH

# 加載生效
source /etc/profile

3、配置

cd $ZOOKEEPER_HOME
cp conf/zoo_sample.cfg conf/zoo.cfg
mkdir $ZOOKEEPER_HOME/data
cat >conf/zoo.cfg<<EOF
# tickTime:Zookeeper 伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。tickTime以毫秒為單位。session最小有效時間為tickTime*2
tickTime=2000

# Zookeeper保存數據的目錄,默認情況下,Zookeeper將寫數據的日誌文件也保存在這個目錄里。不要使用/tmp目錄
dataDir=/opt/bigdata/apache-zookeeper-3.8.0-bin/data

# 埠,默認就是2181
clientPort=2181

# 集群中的follower伺服器(F)與leader伺服器(L)之間初始連接時能容忍的最多心跳數(tickTime的數量),超過此數量沒有回覆會斷開連結
initLimit=10

# 集群中的follower伺服器與leader伺服器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)
syncLimit=5

# 最大客戶端連結數量,0不限制,默認是0
maxClientCnxns=60

# zookeeper集群配置項,server.1,server.2,server.3是zk集群節點;hadoop-node1,hadoop-node2,hadoop-node3是主機名稱;2888是主從通信埠;3888用來選舉leader
server.1=local-168-182-110:2888:3888
server.2=local-168-182-111:2888:3888
server.3=local-168-182-112:2888:3888
EOF

4、配置myid

echo 1 > $ZOOKEEPER_HOME/data/myid

5、將配置推送到其它節點

scp -r $ZOOKEEPER_HOME local-168-182-111:/opt/bigdata/
scp -r $ZOOKEEPER_HOME local-168-182-112:/opt/bigdata/
# 也需要添加環境變量和修改myid,local-168-182-111的myid設置2,local-168-182-112的myid設置3

6、啟動服務

cd $ZOOKEEPER_HOME
# 啟動
./bin/zkServer.sh start
# 查看狀態
./bin/zkServer.sh status

4)安裝Hadoop

也可以參考我之前的文章:大數據Hadoop原理介紹+安裝+實戰操作(HDFS+yarn+MapReduce)

1、下載解壓

下載地址:https://dlcdn.apache.org/hadoop/common/

mkdir -p /opt/bigdata/hadoop && cd /opt/bigdata/hadoop
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz --no-check-certificate
# 解壓
tar -zvxf hadoop-3.3.4.tar.gz

2、修改配置文件

配置環境變量

vi /etc/profile
export HADOOP_HOME=/opt/bigdata/hadoop/hadoop-3.3.4
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

# 加載生效
source /etc/profile
  • 修改$HADOOP_HOME/etc/hadoop/hadoop-env.sh
# 在hadoop-env.sh文件末尾追加
export JAVA_HOME=/opt/jdk1.8.0_212
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
  • 修改$HADOOP_HOME/etc/hadoop/core-site.xml #核心模塊配置
# 創建存儲目錄
mkdir -p /opt/bigdata/hadoop/data/hadoop-3.3.4
<!-- 在<configuration></configuration>中間添加如下內容 -->
<!-- 設置默認使用的文件系統 Hadoop支持file、HDFS、GFS、ali|Amazon雲等文件系統 -->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://local-168-182-110:8082</value>
</property>

<!-- 設置Hadoop本地保存數據路徑 -->
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/bigdata/hadoop/data/hadoop-3.3.4</value>
</property>

<!-- 設置HDFS web UI用戶身份 -->
<property>
  <name>hadoop.http.staticuser.user</name>
  <value>root</value>
</property>

<!-- 聚合hive 用戶代理設置 -->
<property>
  <name>hadoop.proxyuser.hosts</name>
  <value>*</value>
</property>

<!-- 用戶代理設置 -->
<property>
  <name>hadoop.proxyuser.root.groups</name>
  <value>*</value>
</property>

<!-- 文件系統垃圾桶保存時間 -->
<property>
  <name>fs.trash.interval</name>
  <value>1440</value>
</property>
  • 修改$HADOOP_HOME/etc/hadoop/hdfs-site.xml #hdfs文件系統模塊配置
<!-- 在<configuration></configuration>中間添加如下內容 -->
<!-- 設置SNN進程運行機器位置信息 -->
<property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>local-168-182-111:9868</value>
</property>

<!-- 必須將dfs.webhdfs.enabled屬性設置為true,否則就不能使用webhdfs的LISTSTATUS、LISTFILESTATUS等需要列出文件、文件夾狀態的命令,因為這些信息都是由namenode來保存的。 -->
<property>
  <name>dfs.webhdfs.enabled</name>
  <value>true</value>
</property>

<!-- nameservice的邏輯名稱。可以為任意可讀字符串;如果在Federation中使用,那麼還應該包含其他的nameservices,以","分割。 -->
<property>
  <name>dfs.nameservices</name>
  <value>ns1</value>
</property>
  • 修改$HADOOP_HOME/etc/hadoop/mapred.xml #MapReduce模塊配置
<!-- 設置MR程序默認運行模式,YARN集群模式,local本地模式 -->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

<!-- MR程序歷史服務地址 -->
<property>
  <name>mapreduce.jobhistory.address</name>
  <value>local-168-182-110:10020</value>
</property>

<!-- MR程序歷史服務web端地址 -->
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>local-168-182-110:19888</value>
</property>

<!-- yarn環境變量 -->
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<!-- map環境變量 -->
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<!-- reduce環境變量 -->
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
  • 修改$HADOOP_HOME/etc/hadoop/yarn-site.xml #yarn模塊配置
<!-- 在<configuration></configuration>中間添加如下內容 -->
<!-- 設置YARN集群主角色運行集群位置 -->
<property>
  <name>yarn.resourcemanager.hostname</name>
  <value>local-168-182-110</value>
</property>

<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>

<!-- 是否將對容器實施物理內存限制 -->
<property>
  <name>yarn.nodemanager.pmem-check-enabled</name>
  <value>false</value>
</property>

<!-- 是否將對容器實施虛擬內存限制 -->
<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>
  <value>false</value>
</property>

<!-- 開啟日誌聚集 -->
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>

<!-- 設置yarn歷史伺服器地址 -->
<property>
  <name>yarn.log.server.url</name>
  <value>http://local-168-182-110:19888/jobhistory/logs</value>
</property>

<!-- 設置yarn歷史日誌保存時間 7天 -->
<property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>604880</value>
</property>
  • 修改$HADOOP_HOME/etc/hadoop/workers
    將下面內容覆蓋文件,默認只有localhost
local-168-182-110
local-168-182-111
local-168-182-112

3、分發同步hadoop安裝包到另外幾台機器

scp -r $HADOOP_HOME local-168-182-111:/opt/bigdata/hadoop/
scp -r $HADOOP_HOME local-168-182-112:/opt/bigdata/hadoop/
# 注意也需要設置環境變量

vi /etc/profile

export HADOOP_HOME=/opt/bigdata/hadoop/hadoop-3.3.4
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

# 加載
source /etc/profile

4、Hadoop集群啟停(local-168-182-110上執行)

1)(首次啟動)格式化namenode(只能執行一次)

  • 首次啟動HDFS時,必須對其進行格式化操作
  • format本質上初始化工作,進行HDFS清理和準備工作
hdfs namenode -format

2)手動逐個進程啟停

# HDFS集群啟動
hdfs --daemon [start|stop] [namenode|datanode|secondarynamenode]
# YARN集群啟動
yarn --daemon [start|stop] [resourcemanager|nodemanager]

3)通過shell腳本一鍵啟停(推薦)

在local-168-182-110上,使用軟體自帶的shell腳本一鍵啟動。前提:配置好機器之間的SSH免密登錄和works文件

start-dfs.sh
stop-dfs.sh #這裡不執行

# YARN集群啟停
start-yarn.sh
stop-yarn.sh # 這裡不執行

# Hadoop集群啟停(HDFS+YARN)
start-all.sh
stop-all.sh # 這裡不執行

# 查看
jps

HDFS集群訪問:http://local-168-182-110:9870

YARN集群訪問:http://local-168-182-110:8088

5)部署HBase

1、下載解壓

下載地址:http://hbase.apache.org/downloads.html

cd /opt/bigdata
wget https://dlcdn.apache.org/hbase/2.4.13/hbase-2.4.13-bin.tar.gz --no-check-certificate
# 解壓
tar -xf hbase-2.4.13-bin.tar.gz
# 配置環境變量
vi /etc/profile

export HBASE_HOME=/opt/bigdata/hbase-2.4.13
export PATH=$HBASE_HOME/bin:$PATH

source /etc/profile

2、配置HBase

  • 配置$HBASE_HOME/conf/hbase-env.sh,添加或修改以下內容:
export JAVA_HOME=/opt/jdk1.8.0_212
export HBASE_CLASSPATH=/opt/bigdata/hbase-2.4.13/conf
export HBASE_MANAGES_ZK=false
  • 配置$HBASE_HOME/conf/hbase-site.xml
<configuration>
    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://local-168-182-110:8082/hbase</value>
        <!-- hdfs://ns1/hbase 對應hdfs-site.xml的dfs.nameservices屬性值 -->
    </property>

    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>local-168-182-110,local-168-182-111,local-168-182-112</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>

    <property>
        <name>hbase.master</name>
        <value>60000</value>
        <description>單機版需要配主機名/IP和埠,HA方式只需要配埠</description>
    </property>
    <property>
        <name>hbase.master.info.bindAddress</name>
        <value>0.0.0.0</value>
    </property>
    <property>
        <name>hbase.master.port</name>
        <value>16000</value>
    </property>
    <property>
        <name>hbase.master.info.port</name>
        <value>16010</value>
    </property>
    <property>
        <name>hbase.regionserver.port</name>
        <value>16020</value>
    </property>
    <property>
        <name>hbase.regionserver.info.port</name>
        <value>16030</value>
    </property>

    <property>
        <name>hbase.wal.provider</name>
        <value>filesystem</value> <!--也可以用multiwal-->
    </property>
</configuration>

hbase-site.xml參數說明:
1.
hbase.rootdir:這個目錄是 RegionServer 的共享目錄,用來持久化 HBase。特別注意的是 hbase.rootdir 裡面的 HDFS 地址是要跟 Hadoop 的 core-site.xml 裡面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、埠必須一致。(HA環境下,dfs.nameservices 是由zookeeper來決定的)。
2. hbase.cluster.distributed:HBase 的運行模式。為 false 表示單機模式,為 true 表示分布式模式。若為 false,HBase 和 ZooKeeper 會運行在同一個 JVM 中。
3. hbase.master:如果只設置單個 Hmaster,那麼 hbase.master 屬性參數需要設置為 master:60000 (主機名:60000);如果要設置多個 Hmaster,那麼我們只需要提供埠 60000,因為選擇真正的 master 的事情會有 zookeeper 去處理。
4. hbase.tmp.dir:本地文件系統的臨時文件夾。可以修改到一個更為持久的目錄上(/tmp會在重啟時清除)。
5. hbase.zookeeper.quorum:對於 ZooKeeper 的配置。至少要在 hbase.zookeeper.quorum 參數中列出全部的 ZooKeeper 的主機,用逗號隔開。該屬性值的默認值為 localhost,這個值顯然不能用於分布式應用中。
6. hbase.zookeeper.property.dataDir:這個參數用戶設置 ZooKeeper 快照的存儲位置,默認值為 /tmp,顯然在重啟的時候會清空。因為筆者的 ZooKeeper 是獨立安裝的,所以這裡路徑是指向了$ZOOKEEPER_HOME/conf/zoo.cfg 中 dataDir 所設定的位置。
7. hbase.zookeeper.property.clientPort:客戶端連接 ZooKeeper 的埠。默認是2181。
8. zookeeper.session.timeout:ZooKeeper 會話超時。Hbase 把這個值傳遞改 zk 集群,向它推薦一個會話的最大超時時間。
9. hbase.regionserver.restart.on.zk.expire:當 regionserver 遇到 ZooKeeper session expired, regionserver 將選擇 restart 而不是 abort。

  • 配置$HBASE_HOME/conf/regionservers
local-168-182-110
local-168-182-111
local-168-182-112
  • 複製Hadoop的關鍵配置文件到conf目錄
cp $HADOOP_HOME/etc/hadoop/core-site.xml  $HADOOP_HOME/etc/hadoop/hdfs-site.xml $HBASE_HOME/conf/

3、複製配置好的包到其它節點

scp -r $HBASE_HOME local-168-182-111:/opt/bigdata/
scp -r $HBASE_HOME local-168-182-112:/opt/bigdata/
# 注意在其它節點也配置環境變量

# 配置環境變量
vi /etc/profile

export HBASE_HOME=/opt/bigdata/hbase-2.4.13
export PATH=$HBASE_HOME/bin:$PATH

source /etc/profile

4、啟動和停止HBase

【溫馨提示】在其中一台啟動即可,啟動其它節點得hbase服務,跟hadoop啟動類似

start-hbase.sh
stop-hbase.sh

5、測試

命令測試

#登入HBase(跟MySQL類似)
hbase shell


web訪問:http://local-168-182-110:16010/


環境部署就到這裡了,有任何疑問歡迎給我留言哦~

六、HBase與其它資料庫對比

1)HBase與傳統資料庫對比

對比項

Hbase

傳統資料庫

數據類型

Hbase只有簡單的數據類型,只保留字符串

傳統資料庫有豐富的數據類型

數據操作

Hbase只有簡單的插入、查詢、刪除、清空等操作,表和表之間是分離的,沒有複雜的表和表之間的關係

傳統資料庫通常有各式各樣的函數和連接操作

存儲模式

Hbase是基於列存儲的,每個列族都由幾個文件保存,不同列族的文件是分離的,這樣的好處是數據即是索引,訪問查詢涉及的列大量降低系統的I/O,並且每一列由一個線索來處理,可以實現查詢的並發處理

傳統資料庫是基於表格結構和行存儲,其沒有建立索引將耗費大量的I/O並且建立索引和物化試圖需要耗費大量的時間和資源

數據維護

Hbase的更新實際上是插入了新的數據

傳統資料庫只是替換和修改

可伸縮性

Hbase可以輕鬆的增加或減少硬體的數目,並且對錯誤的兼容性比較高

傳統資料庫需要增加中間層才能實現這樣的功能

事務

Hbase只可以實現單行的事務性,意味著行與行之間、表與表之前不必滿足事務性

傳統資料庫是可以實現跨行的事務性

2)HBase與ClickHouse對比

對比項

Hbase

Clickhouse

數據存儲

Zookeeper保存元數據,數據寫入HDFS(非結構化數據)

Zookeeper保存元數據,數據存儲在本地,且會壓縮

查詢

不支持標準sql,需要集成Phoenix插件。Hbase自身有Scan操作,但是不建議執行,一般會全量掃描導致集群崩潰

支持sql,擁有高效的查詢能力

數據讀寫

支持隨機讀寫,刪除。更新操作是插入一條新timestamp的數據

支持讀寫,但不能刪除和更新

維護

需要同時維護HDFS、Zookeeper和Hbase(甚至於Phoenix)

額外維護Zookeeper

Hbase更適合非結構化的數據存儲,ClickHouse擁有高效的查詢能力。

關於HBase的介紹和環境部署就先到這裡了,後面會分享HBase的實戰操作,請小夥伴耐心等待,有疑問的小夥伴歡迎給我留言哦~

關鍵字: