hbase安裝與講解-創(chuàng)新互聯(lián)

Hbase 安裝,架構(gòu),使用
安裝 hbase :
下載安裝包:
hbase-1.0.0-bin.tar.gz
mdkir /data/hbase
mdkir /data/hbase/tmp
mkdir /data/hbase/
hadoop dfs -mkdir /user/hadoop/rongxin/hbase
2.解壓
[hadoop@master hbase]$ tar -zxvf hbase-1.0.0-bin.tar.gz
3. 進(jìn)入 hbase 的 lib 目錄,替換 hadoop jar 包的版本
修改配置文件
hbase-env.sh
hbase-site.xml
[hadoop@master hbase]$ vim hbase-1.0.0/conf/regionservers
slave1
slave2
vim /etc/profile
export HBASE_HOME=/data/hbase/hbase-1.0.0
export PATH=$PATH:$HBASE_HOME/bin
source /etc/profile
啟動(dòng) hbase:
[hadoop@master hbase]$ start-hbase.sh
通過 jps 檢查是否已經(jīng)啟動(dòng):
[hadoop@master hbase]$ jps
32211 HMaster
[hadoop@slave1 lib]$ jps
20584 HRegionServer
[hadoop@slave2 lib]$ jps
2698 HRegionServer
通過 web 檢查是否已經(jīng)啟動(dòng)了 hbase:
http://master:16030/master-status
H He base 的 常用命令行工具:
名稱 命令表達(dá)式
創(chuàng)建表 create '表名稱', '列名稱 1','列名稱 2','列名稱 N'
添加記錄 put '表名稱', '行名稱', '列名稱:', '值'
查看記錄 get '表名稱', '行名稱'
查看表中的記錄總數(shù) count '表名稱'
刪除記錄 delete '表名' ,'行名稱' , '列名稱'
刪除一張表
先要屏蔽該表,才能對(duì)該表進(jìn)行刪除,第一步 disable '表名稱' 第
二步 drop '表名稱'
查看所有記錄 scan "表名稱"
查看某個(gè)表某個(gè)列中所
有數(shù)據(jù)
scan "表名稱" , ['列名稱:']
更新記錄 就是重寫一遍進(jìn)行覆蓋
下面是一些常見命令的說明,在 hbaseshell 中輸入 help 的幫助信息,在本文中,我們先介
紹前 3 個(gè),后面 2 個(gè),將在下一篇博文中介紹。
COMMAND GROUPS:
Group name: general
Commands: status, version
Group name: ddl
Commands: alter, create, describe, disable,drop, enable, exists, is_disabled, is_enabled, list
Group name: dml
Commands: count, delete, deleteall, get,get_counter, incr, put, scan, truncate
Group name: tools
Commands: assign, balance_switch, balancer,close_region, compact, flush, major_compact, move,
split, unassign, zk_dump
Group name: replication
Commands: add_peer, disable_peer,enable_peer, remove_peer, start_replication, stop_replication
一、一般操作
1.查詢服務(wù)器狀態(tài)
hbase(main):024:0>status
3 servers, 0 dead,1.0000 average load
2.查詢 hive 版本
hbase(main):025:0>version
0.90.4, r1150278,Sun Jul 24 15:53:29 PDT 2011
二、L DDL 操作
1.創(chuàng)建一個(gè)表
hbase(main):011:0>create 'member','member_id','address','info'
0 row(s) in 1.2210seconds
2.獲得表的描述
hbase(main):012:0>list
TABLE
member
1 row(s) in 0.0160seconds
hbase(main):006:0>describe 'member'
DESCRIPTION ENABLED
{NAME => 'member', FAMILIES => [{NAME=> 'address', BLOOMFILTER => 'NONE',
REPLICATION_SCOPE => '0', true
VERSIONS => '3', COMPRESSION => 'NONE',TTL => '2147483647', BLOCKSIZE =>
'65536', IN_MEMORY => 'fa
lse', BLOCKCACHE => 'true'}, {NAME =>'info', BLOOMFILTER => 'NONE',
REPLICATION_SCOPE => '0', VERSI
ONS => '3', COMPRESSION => 'NONE', TTL=> '2147483647', BLOCKSIZE => '65536',
IN_MEMORY => 'false',
BLOCKCACHE =>
'true'}]}
1 row(s) in 0.0230seconds
3.刪除一個(gè)列族,alter,disable,enable
我們之前建了 3 個(gè)列族,但是發(fā)現(xiàn) member_id 這個(gè)列族是多余的,因?yàn)樗褪侵麈I,所以
我們要將其刪除。
hbase(main):003:0>alter 'member',{NAME=>'member_id',METHOD=>'delete'}
ERROR: Table memberis enabled. Disable it first before altering.
報(bào)錯(cuò),刪除列族的時(shí)候必須先將表給 disable 掉。
hbase(main):004:0>disable 'member'
0 row(s) in 2.0390seconds
hbase(main):005:0>alter'member',{NAME=>'member_id',METHOD=>'delete'}
0 row(s) in 0.0560seconds
hbase(main):006:0>describe 'member'
DESCRIPTION ENABLED
{NAME => 'member', FAMILIES => [{NAME=> 'address', BLOOMFILTER => 'NONE',
REPLICATION_SCOPE => '0',false
VERSIONS => '3', COMPRESSION => 'NONE',TTL => '2147483647', BLOCKSIZE =>
'65536', IN_MEMORY => 'fa
lse', BLOCKCACHE => 'true'}, {NAME =>'info', BLOOMFILTER => 'NONE',
REPLICATION_SCOPE => '0', VERSI
ONS => '3', COMPRESSION => 'NONE', TTL=> '2147483647', BLOCKSIZE => '65536',
IN_MEMORY => 'false',
BLOCKCACHE =>
'true'}]}
1 row(s) in 0.0230seconds
該列族已經(jīng)刪除,我們繼續(xù)將表 enable
hbase(main):008:0> enable 'member'
0 row(s) in 2.0420seconds
4.列出所有的表
hbase(main):028:0>list
TABLE
member
temp_table
2 row(s) in 0.0150seconds
5.drop 一個(gè)表
hbase(main):029:0>disable 'temp_table'
0 row(s) in 2.0590seconds
hbase(main):030:0>drop 'temp_table'
0 row(s) in 1.1070seconds
6.查詢表是否存在
hbase(main):021:0>exists 'member'
Table member
doesexist
0 row(s) in 0.1610seconds
7.判斷表是否 enable
hbase(main):034:0>is_enabled 'member'
true
0 row(s) in 0.0110seconds
8.判斷表是否 disable
hbase(main):032:0>is_disabled 'member'
false
0 row(s) in 0.0110seconds
三、 DML 操作
1.插入幾條記錄
put'member','scutshuxue','info:age','24'
put'member','scutshuxue','info:birthday','1987-06-17'
put'member','scutshuxue','info:company','alibaba'
put'member','scutshuxue','address:contry','china'
put'member','scutshuxue','address:province','zhejiang'
put'member','scutshuxue','address:city','hangzhou'
put'member','xiaofeng','info:birthday','1987-4-17'
put'member','xiaofeng','info:favorite','movie'
put'member','xiaofeng','info:company','alibaba'
put'member','xiaofeng','address:contry','china'
put'member','xiaofeng','address:province','guangdong'
put'member','xiaofeng','address:city','jieyang'
put'member','xiaofeng','address:town','xianqiao'
2.獲取一條數(shù)據(jù)
獲取一個(gè) id 的所有數(shù)據(jù)
hbase(main):001:0>get 'member','scutshuxue'
COLUMN CELL
address:city timestamp=1321586240244,
value=hangzhou
address:contry timestamp=1321586239126,
value=china
address:province timestamp=1321586239197,
value=zhejiang
info:age timestamp=1321586238965,
value=24
info:birthday timestamp=1321586239015, value=1987-06-
17
info:company timestamp=1321586239071,
value=alibaba
6 row(s) in 0.4720seconds
獲取一個(gè) id,一個(gè)列族的所有數(shù)據(jù)
hbase(main):002:0>get 'member','scutshuxue','info'
COLUMN CELL
info:age timestamp=1321586238965,
value=24
info:birthday timestamp=1321586239015, value=1987-06-
17
info:company timestamp=1321586239071,
value=alibaba
3 row(s) in 0.0210seconds
獲取一個(gè) id,一個(gè)列族中一個(gè)列的所有數(shù)據(jù)
hbase(main):002:0>get 'member','scutshuxue','info:age'
COLUMN CELL
info:age timestamp=1321586238965,
value=24
1 row(s) in 0.0320seconds
6.更新一條記錄
將 scutshuxue 的年齡改成 99
hbase(main):004:0>put 'member','scutshuxue','info:age' ,'99'
0 row(s) in 0.0210seconds
hbase(main):005:0>get 'member','scutshuxue','info:age'
COLUMN CELL
info:age timestamp=1321586571843,
value=99
1 row(s) in 0.0180seconds
3.通過 timestamp 來獲取兩個(gè)版本的數(shù)據(jù)
hbase(main):010:0>get
'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586238965}
COLUMN CELL
info:age timestamp=1321586238965,
value=24
1 row(s) in 0.0140seconds
hbase(main):011:0>get
'member','scutshuxue',{COLUMN=>'info:age',TIMESTAMP=>1321586571843}
COLUMN CELL
info:age timestamp=1321586571843,
value=99
1 row(s) in 0.0180seconds
4.全表掃描:
hbase(main):013:0>scan 'member'
ROW COLUMN+CELL
scutshuxue column=address:city, timestamp=1321586240244,
value=hangzhou
scutshuxue column=address:contry, timestamp=1321586239126,
value=china
scutshuxue column=address:province, timestamp=1321586239197,
value=zhejiang
scutshuxue column=info:age,timestamp=1321586571843,
value=99
scutshuxue column=info:birthday, timestamp=1321586239015, value=1987-06-
17
scutshuxue column=info:company, timestamp=1321586239071,
value=alibaba
temp column=info:age, timestamp=1321589609775,
value=59
xiaofeng column=address:city, timestamp=1321586248400,
value=jieyang
xiaofeng column=address:contry, timestamp=1321586248316,
value=china
xiaofeng column=address:province, timestamp=1321586248355,
value=guangdong
xiaofeng column=address:town, timestamp=1321586249564,
value=xianqiao
xiaofeng column=info:birthday, timestamp=1321586248202, value=1987-4-
17
xiaofeng column=info:company, timestamp=1321586248277,
value=alibaba
xiaofeng column=info:favorite, timestamp=1321586248241,
value=movie
3 row(s) in 0.0570seconds
5.刪除 id 為 temp 的值的‘info:age’字段
hbase(main):016:0>delete 'member','temp','info:age'
0 row(s) in 0.0150seconds
hbase(main):018:0>get 'member','temp'
COLUMN CELL
0 row(s) in 0.0150seconds
6.刪除整行
hbase(main):001:0>deleteall 'member','xiaofeng'
0 row(s) in 0.3990seconds
7.查詢表中有多少行:
hbase(main):019:0>count 'member'
2 row(s) in 0.0160seconds
8.給‘xiaofeng’這個(gè) id 增加'info:age'字段,并使用 counter 實(shí)現(xiàn)遞增
hbase(main):057:0*incr 'member','xiaofeng','info:age'
COUNTER VALUE = 1
hbase(main):058:0>get 'member','xiaofeng','info:age'
COLUMN CELL
info:age timestamp=1321590997648,
value=\x00\x00\x00\x00\x00\x00\x00\x01
1 row(s) in 0.0140seconds
hbase(main):059:0>incr 'member','xiaofeng','info:age'
COUNTER VALUE = 2
hbase(main):060:0>get 'member','xiaofeng','info:age'
COLUMN CELL
info:age timestamp=1321591025110,
value=\x00\x00\x00\x00\x00\x00\x00\x02
1 row(s) in 0.0160seconds
獲取當(dāng)前 count 的值
hbase(main):069:0>get_counter 'member','xiaofeng','info:age'
COUNTER VALUE = 2
9.將整張表清空:
hbase(main):035:0>truncate 'member'
Truncating 'member'table (it may take a while):
- Disabling table...
- Dropping table...
- Creating table...
0 row(s) in 4.3430seconds
可以看出,hbase 是先將掉 disable 掉,然后 drop 掉后重建表來實(shí)現(xiàn) truncate 的功能的。
e Hbase 的架構(gòu):
HBase 訪問接口
1. Native Java API,最常規(guī)和高效的訪問方式,適合 Hadoop MapReduce Job 并行批處理
HBase 表數(shù)據(jù)
2. HBase Shell,HBase 的命令行工具,最簡單的接口,適合 HBase 管理使用
3. Thrift Gateway,利用 Thrift 序列化技術(shù),支持 C++,PHP,Python 等多種語言,適
合其他異構(gòu)系統(tǒng)在線訪問 HBase 表數(shù)據(jù)
4. REST Gateway,支持 REST 風(fēng)格的 Http API 訪問 HBase, 解除了語言限制
5. Pig,可以使用 Pig Latin 流式編程語言來操作 HBase 中的數(shù)據(jù),和 Hive 類似,本質(zhì)最
終也是編譯成 MapReduce Job 來處理 HBase 表數(shù)據(jù),適合做數(shù)據(jù)統(tǒng)計(jì)
6. Hive,當(dāng)前 Hive 的 Release 版本尚沒有加入對(duì) HBase 的支持,但在下一個(gè)版本 Hive
0.7.0 中將會(huì)支持 HBase,可以使用類似 SQL 語言來訪問 HBase
HBase 數(shù)據(jù)模型
Table & Column Family
Row
Key
Timestamp
Column Family
URI Parser
r1
t3 url=http://www.taobao.com title=天天特價(jià)
t2 host=taobao.com
t1
r2 t5 url=http://www.alibaba.com content=每天…
t4 host=alibaba.com
? Row Key: 行鍵,Table 的主鍵,Table 中的記錄按照 Row Key 排序
? Timestamp: 時(shí)間戳,每次數(shù)據(jù)操作對(duì)應(yīng)的時(shí)間戳,可以看作是數(shù)據(jù)的 version number
? Column Family:列簇,Table 在水平方向有一個(gè)或者多個(gè) Column Family 組成,一個(gè)
Column Family 中可以由任意多個(gè) Column 組成,即 Column Family 支持動(dòng)態(tài)擴(kuò)展,無需預(yù)先
定義 Column 的數(shù)量以及類型,所有 Column 均以二進(jìn)制格式存儲(chǔ),用戶需要自行進(jìn)行類型
轉(zhuǎn)換。
Table & Region
當(dāng) Table 隨著記錄數(shù)不斷增加而變大后,會(huì)逐漸分裂成多份 splits,成為 regions,一個(gè)
region 由[startkey,endkey)表示,不同的 region 會(huì)被 Master 分配給相應(yīng)的 RegionServer 進(jìn)行管
理:
-ROOT- && .META. Table
HBase 中有兩張?zhí)厥獾?Table,-ROOT-和.META.
? .META.:記錄了用戶表的 Region 信息,.META.可以有多個(gè) regoin
? -ROOT-:記錄了.META.表的 Region 信息,-ROOT-只有一個(gè) region
? Zookeeper 中記錄了-ROOT-表的 location
Client 訪問用戶數(shù)據(jù)之前需要首先訪問 zookeeper,然后訪問-ROOT-表,接著訪問.META.
表,最后才能找到用戶數(shù)據(jù)的位置去訪問,中間需要多次網(wǎng)絡(luò)操作,不過 client 端會(huì)做
cache 緩存。
MapReduce on HBase
在 HBase 系統(tǒng)上運(yùn)行批處理運(yùn)算,最方便和實(shí)用的模型依然是 MapReduce,如下圖:
HBase Table 和 Region 的關(guān)系,比較類似 HDFS File 和 Block 的關(guān)系,HBase 提供了配套的
TableInputFormat 和 TableOutputFormat API,可以方便的將 HBase Table 作為 Hadoop
MapReduce 的 Source 和 Sink,對(duì)于 MapReduce Job 應(yīng)用開發(fā)人員來說,基本不需要關(guān)注
HBase 系統(tǒng)自身的細(xì)節(jié)。
HBase 系統(tǒng)架構(gòu)
Client
HBase Client 使用 HBase 的 RPC 機(jī)制與 HMaster 和 HRegionServer 進(jìn)行通信,對(duì)于管理類操
作,Client 與 HMaster 進(jìn)行 RPC;對(duì)于數(shù)據(jù)讀寫類操作,Client 與 HRegionServer 進(jìn)行 RPC
Zookeeper
Zookeeper Quorum 中除了存儲(chǔ)了-ROOT-表的地址和 HMaster 的地址,HRegionServer 也會(huì)
把自己以 Ephemeral 方式注冊(cè)到 Zookeeper 中,使得 HMaster 可以隨時(shí)感知到各個(gè)
HRegionServer 的健康狀態(tài)。此外,Zookeeper 也避免了 HMaster 的單點(diǎn)問題,見下文描述
HMaster
HMaster 沒有單點(diǎn)問題,HBase 中可以啟動(dòng)多個(gè) HMaster,通過 Zookeeper 的 Master Election
機(jī)制保證總有一個(gè) Master 運(yùn)行,HMaster 在功能上主要負(fù)責(zé) Table 和 Region 的管理工作:
1. 管理用戶對(duì) Table 的增、刪、改、查操作
2. 管理 HRegionServer 的負(fù)載均衡,調(diào)整 Region 分布
3. 在 Region Split 后,負(fù)責(zé)新 Region 的分配
4. 在 HRegionServer 停機(jī)后,負(fù)責(zé)失效 HRegionServer 上的 Regions 遷移
HRegionServer
HRegionServer 主要負(fù)責(zé)響應(yīng)用戶 I/O 請(qǐng)求,向 HDFS 文件系統(tǒng)中讀寫數(shù)據(jù),是 HBase 中最
核心的模塊。
HRegionServer 內(nèi)部管理了一系列 HRegion 對(duì)象,每個(gè) HRegion 對(duì)應(yīng)了 Table 中的一個(gè)
Region,HRegion 中由多個(gè) HStore 組成。每個(gè) HStore 對(duì)應(yīng)了 Table 中的一個(gè) Column Family
的存儲(chǔ),可以看出每個(gè) Column Family 其實(shí)就是一個(gè)集中的存儲(chǔ)單元,因此最好將具備共同
IO 特性的 column 放在一個(gè) Column Family 中,這樣最高效。
HStore 存儲(chǔ)是 HBase 存儲(chǔ)的核心了,其中由兩部分組成,一部分是 MemStore,一部分是
StoreFiles。MemStore 是 Sorted Memory Buffer,用戶寫入的數(shù)據(jù)首先會(huì)放入 MemStore,當(dāng)
MemStore 滿了以后會(huì) Flush 成一個(gè) StoreFile(底層實(shí)現(xiàn)是 HFile),當(dāng) StoreFile 文件數(shù)量增
長到一定閾值,會(huì)觸發(fā) Compact 合并操作,將多個(gè) StoreFiles 合并成一個(gè) StoreFile,合并過
程中會(huì)進(jìn)行版本合并和數(shù)據(jù)刪除,因此可以看出 HBase 其實(shí)只有增加數(shù)據(jù),所有的更新和
刪除操作都是在后續(xù)的 compact 過程中進(jìn)行的,這使得用戶的寫操作只要進(jìn)入內(nèi)存中就可
以立即返回,保證了 HBase I/O 的高性能。當(dāng) StoreFiles Compact 后,會(huì)逐步形成越來越大
的 StoreFile,當(dāng)單個(gè) StoreFile 大小超過一定閾值后,會(huì)觸發(fā) Split 操作,同時(shí)把當(dāng)前 Region
Split 成 2 個(gè) Region,父 Region 會(huì)下線,新 Split 出的 2 個(gè)孩子 Region 會(huì)被 HMaster 分配到相
應(yīng)的 HRegionServer 上,使得原先 1 個(gè) Region 的壓力得以分流到 2 個(gè) Region 上。下圖描述
了 Compaction 和 Split 的過程:
在理解了上述 HStore 的基本原理后,還必須了解一下 HLog 的功能,因?yàn)樯鲜龅?HStore 在
系統(tǒng)正常工作的前提下是沒有問題的,但是在分布式系統(tǒng)環(huán)境中,無法避免系統(tǒng)出錯(cuò)或者
宕機(jī),因此一旦 HRegionServer 意外退出,MemStore 中的內(nèi)存數(shù)據(jù)將會(huì)丟失,這就需要引
入 HLog 了。每個(gè) HRegionServer 中都有一個(gè) HLog 對(duì)象,HLog 是一個(gè)實(shí)現(xiàn) Write Ahead Log
的類,在每次用戶操作寫入 MemStore 的同時(shí),也會(huì)寫一份數(shù)據(jù)到 HLog 文件中(HLog 文
件格式見后續(xù)),HLog 文件定期會(huì)滾動(dòng)出新的,并刪除舊的文件(已持久化到 StoreFile 中
的數(shù)據(jù))。當(dāng) HRegionServer 意外終止后,HMaster 會(huì)通過 Zookeeper 感知到,HMaster 首先
會(huì)處理遺留的 HLog 文件,將其中不同 Region 的 Log 數(shù)據(jù)進(jìn)行拆分,分別放到相應(yīng) region
的目錄下,然后再將失效的 region 重新分配,領(lǐng)取 到這些 region 的 HRegionServer 在 Load
Region 的過程中,會(huì)發(fā)現(xiàn)有歷史 HLog 需要處理,因此會(huì) Replay HLog 中的數(shù)據(jù)到
MemStore 中,然后 flush 到 StoreFiles,完成數(shù)據(jù)恢復(fù)。
HBase 存儲(chǔ)格式
HBase 中的所有數(shù)據(jù)文件都存儲(chǔ)在 Hadoop HDFS 文件系統(tǒng)上,主要包括上述提出的兩種文
件類型:
1. HFile, HBase 中 KeyValue 數(shù)據(jù)的存儲(chǔ)格式,HFile 是 Hadoop 的二進(jìn)制格式文件,
實(shí)際上 StoreFile 就是對(duì) HFile 做了輕量級(jí)包裝,即 StoreFile 底層就是 HFile
2. HLog File,HBase 中 WAL(Write Ahead Log) 的存儲(chǔ)格式,物理上是 Hadoop 的
Sequence File
HFile
下圖是 HFile 的存儲(chǔ)格式:
首先 HFile 文件是不定長的,長度固定的只有其中的兩塊:Trailer 和 FileInfo。正如圖中所
示的,Trailer 中有指針指向其他數(shù)據(jù)塊的起始點(diǎn)。File Info 中記錄了文件的一些 Meta 信
息,例如:AVG_KEY_LEN, AVG_VALUE_LEN, LAST_KEY, COMPARATOR,
MAX_SEQ_ID_KEY 等。Data Index 和 Meta Index 塊記錄了每個(gè) Data 塊和 Meta 塊的起始
點(diǎn)。
Data Block 是 HBase I/O 的基本單元,為了提高效率,HRegionServer 中有基于 LRU 的
Block Cache 機(jī)制。每個(gè) Data 塊的大小可以在創(chuàng)建一個(gè) Table 的時(shí)候通過參數(shù)指定,大號(hào)的
Block 有利于順序 Scan,小號(hào) Block 利于隨機(jī)查詢。每個(gè) Data 塊除了開頭的 Magic 以外就是
一個(gè)個(gè) KeyValue 對(duì)拼接而成, Magic 內(nèi)容就是一些隨機(jī)數(shù)字,目的是防止數(shù)據(jù)損壞。后面會(huì)
詳細(xì)介紹每個(gè) KeyValue 對(duì)的內(nèi)部構(gòu)造。
HFile 里面的每個(gè) KeyValue 對(duì)就是一個(gè)簡單的 byte 數(shù)組。但是這個(gè) byte 數(shù)組里面包含了很
多項(xiàng),并且有固定的結(jié)構(gòu)。我們來看看里面的具體結(jié)構(gòu):
開始是兩個(gè)固定長度的數(shù)值,分別表示 Key 的長度和 Value 的長度。緊接著是 Key,開始
是固定長度的數(shù)值,表示 RowKey 的長度,緊接著是 RowKey,然后是固定長度的數(shù)值,表
示 Family 的長度,然后是 Family,接著是 Qualifier,然后是兩個(gè)固定長度的數(shù)值,表示
Time Stamp 和 Key Type(Put/Delete)。Value 部分沒有這么復(fù)雜的結(jié)構(gòu),就是純粹的二進(jìn)
制數(shù)據(jù)了。
HLogFile
上圖中示意了 HLog 文件的結(jié)構(gòu),其實(shí) HLog 文件就是一個(gè)普通的 Hadoop Sequence File,
Sequence File 的 Key 是 HLogKey 對(duì)象,HLogKey 中記錄了寫入數(shù)據(jù)的歸屬信息,除了 table
和 region 名字外,同時(shí)還包括 sequence number 和 timestamp,timestamp 是“寫入時(shí)間”,
sequence number 的起始值為 0,或者是最近一次存入文件系統(tǒng)中 sequence number。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比新野網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式新野網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋新野地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

本文標(biāo)題:hbase安裝與講解-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://muchs.cn/article12/cosidc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、企業(yè)網(wǎng)站制作響應(yīng)式網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站設(shè)計(jì)全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司