資源描述:
《HBase安裝和使用》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、實(shí)驗(yàn)報(bào)告6一、Hbase數(shù)據(jù)模型?hbase模式里的邏輯實(shí)體包括:?(1)表(table):HBase用表來(lái)組織數(shù)據(jù)。表名是字符串(String),由可以在文件系統(tǒng)路徑里使用的字符組成。?(2)行(row):在表里,數(shù)據(jù)按行存儲(chǔ)。行由行鍵(rowkey)唯一標(biāo)識(shí)。行鍵沒(méi)有數(shù)據(jù)類型,總是視為字節(jié)數(shù)組byte[]。?(3)列族(columnfamily):行里的數(shù)據(jù)按照列族分組,列族也影響到HBase數(shù)據(jù)的物理存放,因此,它們必須事前定義并且不輕易修改。表中每行擁有相同列族,盡管行不需要在每個(gè)列族里存儲(chǔ)數(shù)據(jù)。列族名字是字符串(String),由可以在文件系統(tǒng)路徑里使用的字符組成。?(4)列
2、限定符(columnqualifier):列族里的數(shù)據(jù)通過(guò)列限定符或列來(lái)定位。列限定符不必事前定義,列限定符不必在不同行之間保持一致。就像行鍵一樣,列限定符沒(méi)有數(shù)據(jù)類型,總是視為字節(jié)數(shù)組byte[]。?(5)單元(cell):行鍵、列族和列限定符一起確定一個(gè)單元。存儲(chǔ)在單元里的數(shù)據(jù)稱為單元值(value)。值也沒(méi)有數(shù)據(jù)類型,總是視為字節(jié)數(shù)組byte[]。?(6)時(shí)間版本(version):?jiǎn)卧涤袝r(shí)間版本。時(shí)間版本用時(shí)間戳標(biāo)識(shí),是一個(gè)long。沒(méi)有指定時(shí)間版本時(shí),當(dāng)前時(shí)間戳作為操作的基礎(chǔ)。HBase保留單元值時(shí)間版本的數(shù)量基于列族進(jìn)行配置,默認(rèn)數(shù)量是3個(gè)。?HBase的每個(gè)數(shù)據(jù)值使用坐
3、標(biāo)來(lái)訪問(wèn)。一個(gè)值的完整坐標(biāo)包括行鍵、列族、列限定符和時(shí)間版本。由于把所有坐標(biāo)視為一個(gè)整體,因此HBase可以看作是一個(gè)鍵值(key-value)數(shù)據(jù)庫(kù)。二、Hbase分布式部署1、下載發(fā)布包到HBase官方下載最新的版本hbase-1.2.6-hadoop2-bin.tar.gz6$tarxfzhbase-1.2.6-hadoop2-bin.tar.gz$cdhbase-1.2.6-hadoop22、配置系統(tǒng)環(huán)境sudovim/etc/profilesource/etc/profileexportHBASE_HOME="/usr/local/share/hbase"exportPATH
4、=$HBASE_HOME/bin:$PATH3、修改配置文件:/conf/hbase-site.xmlhbase.rootdirhdfs://localhost:9000/hbasehbase.cluster.distributedtrue4、演示4.1、啟動(dòng)HBase:4.2、shell演示建表、插入數(shù)據(jù)、查詢數(shù)據(jù)
5、、刪除表6一、使用Java客戶端對(duì)對(duì)自定的表進(jìn)行CURD操作Java代碼:publicclassmyHbase{??????privatestaticConfigurationconf=null;???static{??????conf=HBaseConfiguration.create();???}???/**???*columnfamilysaddcolumn<--->hbasecolumnName6???*@paramtableName???*@paramfamilys???*@throwsException???*/???publicvoidcreateTable(String
6、tableName,String[]familys)throwsException{??????HBaseAdminadmin=newHBaseAdmin(conf);??????if(!admin.tableExists(tableName)){?????????HTableDescriptordesc=newHTableDescriptor(tableName);?????????for(inti=0;i7、?}??????????admin.createTable(desc);???????}else{?????????System.out.println("thetable:"+tableName+"exsists");??????};???}???/**???*@paramtableName???*@paramrowKey???*@paramfamily???*@paramqualifier???*@paramvalue???*@throws