天天看點

【HBase】之 初識(單機模式 和 僞分布式模式)

零、HBase初識

(1)HBase是什麼?

HBase是面向列的資料庫,基于BigTable的思想,有較好的一緻性和伸縮性。

(2)HBase有什麼特性?

① 伸縮性

② 内置特性:版本控制、壓縮、垃圾回收(對于超期的資料),以及記憶體表

③ 提供了很強的一緻性保證,容易實作從關系資料庫的遷移。

④ 擅長掃描巨大的資料集

⑤ 容錯。 通過預寫式日志(write-ahead logging)和分布式配置,HBase能夠快速地從單個伺服器故障中恢複。

(3)HBase有什麼用?

HBase常用于大公司,作為背景日志和查詢系統。

一、HBase配置

HBase支援3中運作模式:

(1) 單機模式(單台機器獨立運作

(2) 僞分布式模式(單個節點僞裝一個叢集

(3) 完全分布式模式(完全可運作的、産品級的HBase叢集,實際上至少應該有5個節點。

(1)單機安裝

① 下載下傳安裝

​​下載下傳位址​​

參考:​​安裝HBase​​
// 解壓
sudo tar -zxf ~/Downloads/hbase-1.4.0-bin.tar.gz -C /usr/local

// 重命名
sudo mv /usr/local/hbase-1.4.0 /usr/local/hbase      

Tips:配置環境變量

這樣就不需要每次到相應的目錄下去運作。
① 編輯~/.bashrc檔案 (vi ~/.bashrc)
② 追加( export PATH=$PATH:/usr/local/hbase/bin)
【HBase】之 初識(單機模式 和 僞分布式模式)
③ 使置在目前終端立即生效(source ~/.bashrc)
④ 安裝成功測試(hbase version)
【HBase】之 初識(單機模式 和 僞分布式模式)

② 單機模式配置

1. 配置/usr/local/hbase/conf/hbase-env.sh

// 配置JAVA環境變量,并添加配置HBASE_MANAGES_ZK為true
vi /usr/local/hbase/conf/hbase-env.sh

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HBASE_MANAGES_ZK=true      
【HBase】之 初識(單機模式 和 僞分布式模式)

2. 配置/usr/local/hbase/conf/hbase-site.xml

資料檔案儲存

hbase-default.xml : 儲存所有可用屬性清單,以及預設值及其描述符。

預設情況下,HBase用一個臨時目錄來存放它的資料檔案。(若os決定回收這些磁盤空間,則資料丢失)

so, 要儲存資料,應該指定一個穩定的存儲位置。設定hbase.rootdir屬性。

// 編輯
vi /usr/local/hbase/conf/hbase-site.xml

//添加以下
<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>file:///usr/local/hbase/hbase-tmp</value>
        </property>
</configuration>      
【HBase】之 初識(單機模式 和 僞分布式模式)

3. 測試運作

cd /usr/local/hbase/bin

// 用于啟動HBase
start-hbase.sh

// 打開shell指令行模式
hbase shell

// 停止
stop-hbase.sh      
【HBase】之 初識(單機模式 和 僞分布式模式)

(2)僞分布式安裝

1. 配置/usr/local/hbase/conf/hbase-env.sh。

vi /usr/local/hbase/conf/hbase-env.sh

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export HBASE_CLASSPATH=/usr/local/hadoop/conf 
export HBASE_MANAGES_ZK=true      
【HBase】之 初識(單機模式 和 僞分布式模式)

2. 配置/usr/local/hbase/conf/hbase-site.xml

vi /usr/local/hbase/conf/hbase-site.xml

// hbase.cluster.distributed設定叢集處于分布式模式.
<configuration>
        <property>
                <name>hbase.rootdir</name>
                <value>hdfs://localhost:9000/hbase</value>
        </property>
        <property>
                <name>hbase.cluster.distributed</name>
                <value>true</value>
        </property>
</configuration>      
【HBase】之 初識(單機模式 和 僞分布式模式)

3. 接下來測試運作HBase

// (1) 登入SSH,啟動hadoop
ssh localhost
cd /usr/local/hadoop
./sbin/start-dfs.sh

// (2) 啟動HBase
cd /usr/local/hbase
bin/start-hbase.sh

// (3) 檢視
jps

// (4) 進入shell界面
bin/hbase shell

// (5) 停止HBase運作
bin/stop-hbase.sh      
【HBase】之 初識(單機模式 和 僞分布式模式)
【HBase】之 初識(單機模式 和 僞分布式模式)
【HBase】之 初識(單機模式 和 僞分布式模式)
【HBase】之 初識(單機模式 和 僞分布式模式)

二、Shell程式設計實踐

指令 文法 說明
create create ‘t1’, {NAME => ‘f1’, VERSIONS => 5} 建立表t1, 列族f1, 列族版本号為5
list list 列出HBase中所有的表資訊
put put ‘wiki’, ‘Home’, ‘text:’, ‘Welcome to the wiki!’ 添加資料
get get ‘wiki’, ‘Home’, ‘text:’ 查詢資料, 參數:表名和行健和指定列
scan scan ‘wiki’, {COLUMNS => ‘text:’} 浏覽表的相關資訊
alter alter ‘wiki’, … 修改列族模式
count count ‘wiki’ 統計表中的行數
describe describe ‘wiki’ 顯示表的相關資訊
enable enable ‘wiki’ 使表有效
disable disable ‘wiki’ 使表無效
delete delete ‘wiki’, ‘Home’, ‘text:’, ts1 删除指定單元格的資料,ts1為時間戳
drop drop ‘wiki’ 要先使表無效, 删除表
exists exists ‘wiki’ 判斷表是否存在
truncate truncate ‘wiki’ 使表無效,删除該表
exit exit 退出HBase Shell
shutdown shutdown 關閉HBase叢集
version version 删除HBase版本資訊
status status 輸出HBase叢集狀态資訊

舉個小栗子

【HBase】之 初識(單機模式 和 僞分布式模式)