HBase學習筆記(1)——habse 安裝

1 HBase 介紹

HBASE是一個高可靠性、高性能、面向列、可伸縮(列是可以進行增刪的)的分佈式存儲系統,利用HBASE技術可在廉價PC Server上,搭建起大規模結構化存儲集羣。HBASE的目標是存儲並處理大型的數據,更具體來說是僅需使用普通的硬件配置,就能夠處理由成千上萬的行和列所組成的大型數據。HBASE是Google Bigtable的開源實現,但是也有很多不同之處。比如:Google Bigtable利用GFS作爲其文件存儲系統,HBASE利用Hadoop HDFS作爲其文件存儲系統;Google運行MAPREDUCE來處理Bigtable中的海量數據,HBASE同樣利用Hadoop MapReduce來處理HBASE中的海量數據;Google Bigtable利用Chubby作爲協同服務,HBASE利用Zookeeper作爲對應。

1.1 與傳統數據庫的對比

傳統數據庫遇到的問題:

  • 數據量很大的時候無法存儲;
  • 沒有很好的備份機制
  • 數據達到一定數量開始緩慢,很大的話基本無法支撐

HBASE優勢:

  • 線性擴展,隨着數據量增多可以通過節點擴展進行支撐
  • 數據存儲在hdfs上,備份機制健全
  • 通過zookeeper協調查找數據,訪問速度塊。

1.2 hbase集羣中的角色

  1. 一個或者多個主節點,Hmaster
  2. 多個從節點,HregionServer

2 HBase 數據模型

這裏寫圖片描述

2.1 Row Key

與nosql數據庫們一樣,row key是用來檢索記錄的主鍵。訪問HBASE table中的行,只有三種方式:

  1. 通過單個row key訪問
  2. 通過row key的range(正則)
  3. 全表掃描

Row key行鍵 (Row key)可以是任意字符串(最大長度是64KB,實際應用中長度一般爲 10-100bytes),在HBASE內部,row key保存爲字節數組。存儲時,數據按照Row key的字典序(byte order)排序存儲。設計key時,要充分排序存儲這個特性,將經常一起讀取的行存儲放到一起。(位置相關性)

2.2 Columns Family

列簇 :HBASE表中的每個列,都歸屬於某個列族。列族是表的schema的一部分(而列不是),必須在使用表之前定義。列名都以列族作爲前綴。例如 courses:history,courses:math都屬於courses 這個列族。

2.3 Cell

由{row key, columnFamily, version} 唯一確定的單元。cell中的數據是沒有類型的,全部是字節碼形式存貯。

2.4 Time Stamp

HBASE 中通過rowkey和columns確定的爲一個存貯單元稱爲cell。每個cell都保存着同一份數據的多個版本(即更新數據數據)。版本通過時間戳來索引。時間戳的類型是 64位整型。時間戳可以由HBASE(在數據寫入時自動 )賦值,此時時間戳是精確到毫秒的當前系統時間。時間戳也可以由客戶顯式賦值。如果應用程序要避免數據版本衝突,就必須自己生成具有唯一性的時間戳。每個cell中,不同版本的數據按照時間倒序排序,即最新的數據排在最前面。

爲了避免數據存在過多版本造成的的管理 (包括存貯和索引)負擔,HBASE提供了兩種數據版本回收方式。一是保存數據的最後n個版本,二是保存最近一段時間內的版本(比如最近七天)。用戶可以針對每個列族進行設置。

3 HBase 安裝

前提安裝了hadoop-2.7.6, zookeeper-3.4.5(配置在奇數節點,node1,node2,node3)
hbase 的版本要和 hadoop 的版本對應起來,見鏈接hbase和hadoop版本對應

3.1 上傳並解壓源碼

這裏寫圖片描述
這裏寫圖片描述

3.2 配置環境變量

/ect/profile

export HBASE_HOME=/home/hadoop/apps/hbase
export PATH=$PATH:$HBASE_HOME/bin

3.3 修改配置文件

3.3.1 hbase-env.sh

# The java implementation to use.  Java 1.7+ required.
export JAVA_HOME=/usr/apps/jdk1.8.0_181-amd64
export  HBASE_LOG_DIR=/home/hadoop/hbase/log
# Tell HBase whether it should manage it's own instance of Zookeeper or not.
# export HBASE_MANAGES_ZK=true
export HBASE_MANAGES_ZK=false
# Extra Java CLASSPATH elements.  Optional.這行代碼是錯的,需要可以修改爲下面的形式
#export HBASE_CLASSPATH=/home/hadoop/hbase/conf
export JAVA_CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

3.3.2 hbase-site.xml

<configuration>

<property>
<name>hbase.master</name>
<value>node1:60000</value>
</property>

<property>
<name>hbase.master.maxclockskew</name>
<value>180000</value>
</property>

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

<property>
<name>hbase.tmp.dir</name>
<value>/home/hadoop/hbase/tmp/temp</value>
</property>

<property>
<name>hbase.cluster.distributed</name>
<value>true</name>
</property>

<property>
<name>hbase.zookeeper.quorum</name>
<name>node1,node2,node3</name>
</property>

<property>
<name>hbase.zookeeper.property.dataDir</name>
<name>/home/hadoop/hbase/tmp/zookeeper</name>
</property>

</configuration>

3.3.3 regionservers

node2
node3
node4

3.4 發送到其他節點

發送到node2,node3,node4
scp -r /home/hadoop/apps/hbase node2:/home/hadoop/apps

sudo scp /etc/profile node2:/etc

所有節點同時操作 source /etc/profile

3.5 啓動 hbase

start-hbase.sh
這裏寫圖片描述
這裏寫圖片描述

瀏覽器訪問 http://node1:16010

這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章