柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù) hbase簡(jiǎn)介
柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù) hbase簡(jiǎn)介
概述 1.1. 概述 1.1.1. 概述 hbase即Hadoop Database,NoSQL數(shù)據(jù)庫(kù),面向列,提供實(shí)時(shí)更新查詢。是一個(gè)高可靠性 高性能 面向列 可伸縮的分布式存儲(chǔ)系統(tǒng),利用hbase技術(shù)可以在廉價(jià)的PC上搭建起大規(guī)模結(jié)構(gòu)化存儲(chǔ)集群。 HBase利用HadoopHDFS作為其文件存儲(chǔ)系統(tǒng),利用Hadoop的MapReduce來(lái)處理HBase中的海量數(shù)據(jù),利用Zookeeper作為協(xié)調(diào)工具 。 1.2. 基本概念 1.2.1. 行健 行鍵 - RowKey - 即hbase的主鍵,訪問(wèn)hbse中的數(shù)據(jù)有三種方式 通過(guò)單一行鍵訪問(wèn) 通過(guò)一組行鍵訪問(wèn) 全表掃描 1.2.2. 列簇 列族(簇) - Column Family,在建表時(shí)聲明,不能后期增加,如果需要增加只能alter表,一個(gè)列族可以包含一個(gè)或多個(gè)列。 1.2.3. 列 列 - Column,可以動(dòng)態(tài)增加列,不需要提前聲明 1.2.4. 時(shí)間戳 時(shí)間戳 - cell timestamp,通過(guò)row和columns確定的一個(gè)存儲(chǔ)單元為一個(gè)cell。每個(gè)cell都保存著一個(gè)數(shù)據(jù)的多個(gè)版本,版本通過(guò)時(shí)間戳來(lái)區(qū)別。 數(shù)據(jù)都以二進(jìn)制形式存儲(chǔ),沒(méi)有數(shù)據(jù)類型的區(qū)別。 所有空數(shù)據(jù)都不占用空間。安裝配置 2.1. 安裝配置 2.1.1. 版本對(duì)應(yīng) HBase-0.92.x HBase-0.94.x HBase-0.96 Hadoop-0.20.205 S X X Hadoop-0.22.x S X X Hadoop-1.0.x S S S Hadoop-1.1.x NT S S Hadoop-0.23.x X S NT Hadoop-2.x X S S
前提條件,安裝jdk,并配置了環(huán)境變量 2.2. 單機(jī)模式 2.2.1. 安裝 直接解壓安裝包 tar -zxvf xxxxx.tar.gz 修改conf/hbase-site.xml,配置hbase使用的數(shù)據(jù)文件的位置,默認(rèn)在/tmp/hbase-[username],此目錄是linux的臨時(shí)目錄,可能會(huì)被系統(tǒng)清空,所以最好修改一下 hbase.rootdir file:///
/hbase
2.2.2. 測(cè)試 bin/start-hbase.sh bin/hbase shell hbase>status
hbase>help
hbase>create ‘testtable’,'‘colfam1’,‘colfam2’ hbase>list hbase>describe ‘testtable’ hbase>put ‘testtable’,‘myrow-1’,‘colfam1:q1’,‘value-1’ hbase>put ‘testtable’,‘myrow-2’,‘colfam1:q2’,‘value-2’ hbase>put ‘testtable’,‘myrow-2’,‘colfam1:q3’,‘value-3’ hbase>scan ‘testtable’ hbase>get ‘testtable’,‘myrow-1’ hbase>delete ‘testtable’,‘myrow-2’,‘colfam1:q2’ hbase>scan ‘testtable’ hbase>disable ‘testtable’ hbase>drop ‘testtable’
#建表時(shí)可以指定VERSIONS,配置的是當(dāng)前列族在持久化到文件系統(tǒng)中時(shí),要保留幾個(gè)最新的版本數(shù)據(jù),這并不影響內(nèi)存中的歷史數(shù)據(jù)版本 hbase>create ‘testtable’,{NAME=>‘colfam1’,VERSIONS=>3},{NAME=>‘colfam2’,VERSIONS=>1} hbase>put ‘testtable’,‘myrow-1’,‘colfam1:q1’,‘value-1’ #直接使用scan而不加RAW=>true只能查詢到最新版本的數(shù)據(jù) hbase>scan ‘testtable’ hbase>put ‘testtable’,‘myrow-1’,‘colfam1:q1’,‘value-2’ hbase>scan ‘testtable’ hbase>put ‘testtable’,‘myrow-1’,‘colfam1:q1’,‘value-3’ hbase>scan ‘testtable’ #可以在查詢時(shí)加上RAW=>true來(lái)開(kāi)啟對(duì)歷史版本數(shù)據(jù)的查詢,VERSIONS=>3指定查詢最新的幾個(gè)版本的數(shù)據(jù) hbase>scan ‘testtable’,{RAW=>true,VERSIONS=>3} hbase>put ‘testtable’,‘myrow-1’,‘colfam1:q1’,‘value-4’ hbase>scan ‘testtable’ hbase>scan ‘testtable’,{RAW=>true,VERSIONS=>3}
hbase>put ‘testtable’,‘myrow-1’,‘colfam2:x1’,‘value-1’ hbase>scan ‘testtable’ hbase>put ‘testtable’,‘myrow-1’,‘colfam2:x1’,‘value-2’ hbase>scan ‘testtable’ hbase>scan ‘testtable’,{RAW=>true,VERSIONS=>3}
#重啟hbase hbase>scan ‘testtable’,{RAW=>true,VERSIONS=>3}
hbase>exit bin/stop-hbase.sh
hbase命令行下不能使用刪除: 可以使用 ctrl+刪除鍵 來(lái)進(jìn)行刪除 或 修改xshell配置: 文件->屬性->終端->鍵盤(pán) ->delete鍵序列[VT220Del] ->backspace鍵序列[ASCII127] 2.3. 偽分布式模式 2.3.1. 配置文件 修改conf/hbase-env.sh修改JAVA_HOME export JAVA_HOME=xxxx 修改hbase-site.xml,配置使用hdfs hbase.rootdir hdfs://hadoop00:9000/hbase dfs.replication 1 啟動(dòng)hbase 2.4. 完全分布式模式 2.4.1. 配置文件 修改conf/hbase-env.sh修改JAVA_HOME export JAVA_HOME=xxxx 修改hbase-site.xml,配置開(kāi)啟完全分布式模式 配置hbase.cluster.distributed為true。 配置hbase.rootdir設(shè)置為HDFS訪問(wèn)地址 hbase.rootdir hdfs://hadoop00:9000/hbase hbase.cluster.distributed true
配置region服務(wù)器,修改conf/regionservers文件,其中配置所有hbase主機(jī),每個(gè)主機(jī)名獨(dú)占一行,hbase啟動(dòng)或關(guān)閉時(shí)會(huì)按照該配置順序啟動(dòng)或關(guān)閉主機(jī)中的hbase
使用已有的zookeeper集群。這種方式下zookeeper脫離了hbase,不會(huì)隨著hbase的啟動(dòng)關(guān)閉而啟動(dòng)關(guān)閉。需要自己來(lái)啟動(dòng)關(guān)閉。 hbase默認(rèn)使用自帶的zookeeper,如果需要使用外部zookeeper,需要先關(guān)閉 修改conf/hbase-env.sh禁用內(nèi)部zookeeper export HBASE_MANAGES_ZK false 在hbase-site.xml中配置Zookeeper的連接地址與端口號(hào) hbase.zookeeper.quorum hadoop01:2181,hadoop02:2181,hadoop03:2181 2.4.2. HBASE配置文件說(shuō)明 hbase-env.sh配置HBase啟動(dòng)時(shí)需要的相關(guān)環(huán)境變量 hbase-site.xml配置HBase基本配置信息 HBASE啟動(dòng)時(shí)默認(rèn)使用hbase-default.xml中的配置,如果需要可以修改hbase-site.xml文件,此文件中的配置將會(huì)覆蓋hbase-default.xml中的配置 修改配置后要重啟hbase才會(huì)起作用
2.4.3. 啟動(dòng)集群 啟動(dòng)zookeeper 啟動(dòng)hdfs 啟動(dòng)hbase 訪問(wèn)http://xxxxx:60010來(lái)訪問(wèn)web界面,通過(guò)web見(jiàn)面管理hbase 也可以通過(guò)hbase shell腳本來(lái)訪問(wèn)bhase
2.4.4. 關(guān)閉集群 stop-hbase.sh
HBASE原理 3.1. HBase的工作方式 3.1.1. HBase的工作方式 hbase中的表在行的方向上分隔為多個(gè)HRegion,分散在不同的RegionServe中,這樣做的目的是在查詢時(shí)可以將工作量分布到多個(gè)RegionServer中以提高速度。 region由[startkey,endkey)表示 HRegion是hbase分布式存儲(chǔ)和負(fù)載均衡的最小單元 要注意HRegion不在hdfs中,而是在RegionServer的內(nèi)存中,在內(nèi)存(其實(shí)也有數(shù)據(jù)在本地文件系統(tǒng)中,因?yàn)閮?nèi)存空間畢竟是有限的)中存儲(chǔ)數(shù)據(jù)以提高查詢性能,對(duì)于修改會(huì)將數(shù)據(jù)最終同步到hdfs中,以持久化數(shù)據(jù)。 hbase中的數(shù)據(jù)按照rowkey的字典順序(字典順序!??!先比較第一位 如果相同再比較第二位。。。)按序存儲(chǔ),所以當(dāng)以rowkey查詢數(shù)據(jù)時(shí),可以提高速度。 hregion的分裂,當(dāng)hregion變的很大時(shí)會(huì)分裂成兩個(gè),存放到不同的RegionServer中,防止一個(gè)Region過(guò)大,導(dǎo)致查詢其中數(shù)據(jù)時(shí)速度很慢
hbase的系統(tǒng)結(jié)構(gòu):主要有client hmaster regionServer zookeeper
hbase優(yōu)勢(shì) 4.1. 為什么hbase可以很快 4.1.1. 為什么hbase可以很快 從邏輯結(jié)構(gòu)上來(lái)說(shuō) 表按照行鍵進(jìn)行了排序,所以查詢時(shí)可以很快定位表按照行鍵進(jìn)行了排序,所以查詢時(shí)可以很快定位 數(shù)據(jù)按照行鍵切分為多個(gè)HRegion,分布在多個(gè)RegionServer中,查詢大量數(shù)據(jù)時(shí),多個(gè)RegionServer可以一起工作,從而提高速度 從物理結(jié)構(gòu)上來(lái)說(shuō): HRegion是存活在RegionServer的內(nèi)存中的,讀寫(xiě)會(huì)非常的高效 還有HFile的支持保證大量的數(shù)據(jù)可以持久化的保存 數(shù)據(jù)最終落地到HDFS中,分布式的存儲(chǔ),保證數(shù)據(jù)段可靠性和可擴(kuò)展性
4.2. 為什么hbase可以存儲(chǔ)很多數(shù)據(jù) 4.2.1. 為什么hbase可以存儲(chǔ)很多數(shù)據(jù) 基于hdfs,所以支持可擴(kuò)展性,可以通過(guò)增加大量的廉價(jià)的硬件提高存儲(chǔ)容量 按列存儲(chǔ),空的數(shù)據(jù)不占用空間,當(dāng)存儲(chǔ)稀疏數(shù)據(jù)時(shí),不會(huì)浪費(fèi)空間 按列存儲(chǔ),同一列的數(shù)據(jù)存放在一起,而同一列的數(shù)據(jù)一般都是同樣的類型的內(nèi)容相似的數(shù)據(jù),可以實(shí)現(xiàn)非常高效的壓縮,節(jié)省空間
4.3. 為什么hbase的數(shù)據(jù)是可靠的 4.3.1. 為什么hbase的數(shù)據(jù)是可靠的
基于hdfs,由hdfs的可靠性保證了hbase的可靠性--即數(shù)據(jù)可以有多個(gè)備份
利用zookeeper實(shí)現(xiàn)了HA,即使某一臺(tái)機(jī)器掛掉另外的機(jī)器也可以很快的替換它
4.4. hbase和hive和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)的比較 4.4.1. hbase和hive和傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)的比較 比起傳統(tǒng)的關(guān)系型數(shù)據(jù)庫(kù),可以存儲(chǔ)半結(jié)構(gòu)化非結(jié)構(gòu)化的數(shù)據(jù),可以存儲(chǔ)和處理更大級(jí)別的數(shù)據(jù),提供高效的查詢,對(duì)于稀疏數(shù)據(jù)的處理更好,具有更好的橫向擴(kuò)展性,免費(fèi)開(kāi)源性價(jià)比很高。但是不能支持非常好的事務(wù)特性,只支持行級(jí)的事務(wù)。只能通過(guò)行鍵來(lái)查詢,表設(shè)計(jì)時(shí)難度更高。而mysql用來(lái)存儲(chǔ)結(jié)構(gòu)化的數(shù)據(jù)提供更好的事務(wù)控制。 比起hive,hive只是在mapreduce上包了一層殼,本質(zhì)上還是離線數(shù)據(jù)的處理的工具,實(shí)時(shí)查詢性能有限,本質(zhì)上是一個(gè)基于hadoop的數(shù)據(jù)倉(cāng)庫(kù)工具,不能支持行級(jí)別的新增修改和刪除。hbase可以提供實(shí)時(shí)的數(shù)據(jù)的處理能力,適用于在線數(shù)據(jù)查詢處理,本質(zhì)上是一種數(shù)據(jù)庫(kù)工具。
java api操作 5.1. 導(dǎo)入開(kāi)發(fā)包 5.1.1. 導(dǎo)入開(kāi)發(fā)包 將hbase安裝包中l(wèi)ib下包導(dǎo)入java項(xiàng)目 5.2. 創(chuàng)建表 5.2.1. 創(chuàng)建表 Configuration conf = HBaseConfiguration.create(); conf.set(“hbase.zookeeper.quorum”, “CentOS01:2181,CentOS02:2181,CentOS03:2181”);
HBaseAdmin admin = new HBaseAdmin(conf);
HTableDescriptor htd = new HTableDescriptor(TableName.valueOf(“tabe”)); HColumnDescriptor hcd_fam1 = new HColumnDescriptor(“fam1”); hcd_fam1.setMaxVersions(3); HColumnDescriptor hcd_fam2 = new HColumnDescriptor(“fam2”); htd.addFamily(hcd_fam1); htd.addFamily(hcd_fam2);
admin.createTable(htd);
admin.close(); 5.3. 插入數(shù)據(jù) 5.3.1. 插入數(shù)據(jù) Configuration conf = HBaseConfiguration.create(); conf.set(“hbase.zookeeper.quorum”,“CentOS01:2181,CentOS02:2181,CentOS03:2181”);
HTable table = new HTable(conf,“tabe”); Put put = new Put(Bytes.toBytes(“row1”)); put.add(Bytes.toBytes(“fam1”),Bytes.toBytes(“col1”),Bytes.toBytes(“val1”)); put.add(Bytes.toBytes(“fam1”),Bytes.toBytes(“col2”),Bytes.toBytes(“val2”)); put.add(Bytes.toBytes(“fam2”),Bytes.toBytes(“col3”),Bytes.toBytes(“val3”)); table.put(put);
table.close();
**javaapi操作hbase時(shí),入口類為HTable,此對(duì)象創(chuàng)建時(shí)需要掃描.META表,以及其他操作,這非常耗時(shí),所以,應(yīng)該將該對(duì)象設(shè)置為單例,復(fù)用該對(duì)象,如果需要多個(gè)HTable對(duì)象,應(yīng)該使用HTable Pool,通過(guò)對(duì)象池復(fù)用對(duì)象 HTablePool pool = new HTablePool(conf,10);//不知道為什么過(guò)時(shí)了? **hbase所有修改數(shù)據(jù)的操作都保證了行級(jí)別的原子性 試驗(yàn):一次插入100萬(wàn)條數(shù)據(jù) HTable table = new HTable(conf,“tabx”); List puts = new ArrayList(); for(int i=1;i<=1000000;i++){ Put put = new Put(Bytes.toBytes(“row”+i)); put.add(Bytes.toBytes(“fam1”),Bytes.toBytes(“col1”),Bytes.toBytes(“val”+i)) puts.add(put);
if(i % 10000 == 0){
table.put(puts);
puts = new ArrayList
}
} table.put(puts); table.close(); 5.4. 獲取數(shù)據(jù) 5.4.1. 獲取數(shù)據(jù) Configuration conf = HBaseConfiguration.create(); conf.set(“hbase.zookeeper.quorum”,“CentOS01:2181,CentOS02:2181,CentOS03:2181”);
HTable table = new HTable(conf,“tabe”); Get get = new Get(Bytes.toBytes(“row1”)); Result result = table.get(get); byte [] bs = result.getValue(Bytes.toBytes(“fam1”),Bytes.toBytes(“col1”)); String str = Bytes.toString(bs); System.out.println(str);
table.close(); 5.5. 獲取數(shù)據(jù)集 5.5.1. 獲取數(shù)據(jù)集 Configuration conf = HBaseConfiguration.create(); conf.set(“hbase.zookeeper.quorum”,“CentOS01:2181,CentOS02:2181,CentOS03:2181”);
HTable table = new HTable(conf,“tabe”); Scan scan = new Scan(Bytes.toBytes(“row1”)); ResultScanner scanner = table.getScanner(scan); Iterator it = scanner.iterator(); while(it.hasNext()){ Result result = (Result) it.next(); byte [] bs = result.getValue(Bytes.toBytes(“fam1”),Bytes.toBytes(“col1”)); String str = Bytes.toString(bs); System.out.println(str); } table.close(); 5.6. 刪除數(shù)據(jù) 5.6.1. 刪除數(shù)據(jù) Configuration conf = HBaseConfiguration.create(); conf.set(“hbase.zookeeper.quorum”,“CentOS01:2181,CentOS02:2181,CentOS03:2181”);
HTable table = new HTable(conf,“tabe”); Delete delete = new Delete(Bytes.toBytes(“row1”)); table.delete(delete); table.close(); 5.7. 刪除表 5.7.1. 刪除表 //1.創(chuàng)建配置對(duì)象 HBaseConfiguration conf = new HBaseConfiguration(); conf.set(“hbase.zookeeper.quorum”, “CentOS01”); //2.創(chuàng)建HBaseAdmin對(duì)象 HBaseAdmin admin = new HBaseAdmin(conf); //3.刪除表 admin.disableTable(Bytes.toBytes(“tab1”)); admin.deleteTable(Bytes.toBytes(“tab1”)); //4.關(guān)閉連接 admin.close(); 6. HBase的表設(shè)計(jì) 6.1. 表設(shè)計(jì) 6.1.1. 表設(shè)計(jì) HBase是用來(lái)存放半結(jié)構(gòu)化 非結(jié)構(gòu)化數(shù)據(jù)的數(shù)據(jù)庫(kù)。 6.2. 列族的設(shè)計(jì) 6.2.1. 列族的設(shè)計(jì) 在設(shè)計(jì)hbase表時(shí)候,列族不宜過(guò)多,盡量的要少使用列族。 經(jīng)常要在一起查詢的數(shù)據(jù)最好放在一個(gè)列族中,盡量的減少跨列族的數(shù)據(jù)訪問(wèn)。 6.3. 行鍵的設(shè)計(jì) 6.3.1. 行健的設(shè)計(jì) hbase表中行鍵是唯一標(biāo)識(shí)一個(gè)表的字段,首先要求唯一,另外最好是一些有意義的值,來(lái)幫助我們識(shí)別表中的數(shù)據(jù)。所以hbase中的行鍵是需要進(jìn)行設(shè)計(jì)的。 hbase中的行鍵的設(shè)置至關(guān)重要,嚴(yán)重的影響hbase的執(zhí)行效率和查詢的便利性。 6.3.2. 行鍵設(shè)計(jì)的基本原則: 行鍵必須唯一 必須唯一才能唯一標(biāo)識(shí)數(shù)據(jù) 行鍵最好是字符串類型 因?yàn)閿?shù)值類型在不同的系統(tǒng)中處理的方式可能不同 行鍵必須有意義 這樣才能方便數(shù)據(jù)的查詢 行鍵最好具有固定的長(zhǎng)度 不同長(zhǎng)度的數(shù)據(jù)可能會(huì)造成自然排序時(shí)排序的結(jié)果和預(yù)期不一致 6.3.3. 行鍵的最佳實(shí)踐 長(zhǎng)度原則 行鍵最多可以達(dá)到64KB,但是最好是在10~100字節(jié)之間,最好不要超過(guò)16字節(jié),越短越好,最好是8字節(jié)的整數(shù)倍。 散列原則 行鍵的設(shè)計(jì)將會(huì)影響數(shù)據(jù)在hbase表中的排序方式,這會(huì)影響region切分后的結(jié)果,要注意,在設(shè)計(jì)行鍵時(shí)應(yīng)該讓經(jīng)常要查詢的數(shù)據(jù)分散在不同的region中,防止某一個(gè)或某幾個(gè)regionserver成為熱點(diǎn)。 有序原則 行鍵的設(shè)計(jì)將會(huì)影響數(shù)據(jù)在hbase表中的排序方式,所以一種策略是將經(jīng)常連續(xù)查詢的條件作為行鍵最前面的數(shù)據(jù),這樣一來(lái)可以方便批量查詢 7. hbase案例 7.1. 案例 7.1.1. 案例 用戶表 id name age gender email 001 zhang 19 男 zhang@qq.com 002 wang 20 男 wang@qq.com 用戶訪問(wèn)的網(wǎng)頁(yè) host viewtime content userid www.baidu.com 2016-12-20 xxxx 001 www.sina.com 2016-11-10 xxxx 001 www.souhu.com 2016-11-09 xxxx 001 www.baidu.com 2016-12-20 xxxx 002 www.163.com 2016-12-20 xxxx 002 8. Phoenix概述 8.1. 概述 8.1.1. 概述 HBase基礎(chǔ)上架構(gòu)的SQL中間件,讓我們可以通過(guò)SQL/JDBC來(lái)操作HBase 9. Phoenix安裝配置 9.1. 安裝配置 9.1.1. 安裝配置 1.到apache下載Phoenix安裝包,要注意版本和HBase匹配 Phoenix 2.x – HBase 0.94.x Phoenix 3.x – HBase 0.94.x Phoenix 4.x – HBase 0.98.1+ 2.上傳到linux進(jìn)行解壓
3.將如下兩個(gè)jar包,傳到hbase的lib目錄下 phoenix-4.8.1-HBase-0.98-server.jar phoenix-4.8.1-HBase-0.98-client.jar 4.配置環(huán)境變量 export HBASE_HOME=/root/work/hbase-0.98.17-hadoop2
5.測(cè)試 執(zhí)行 ./sqlline.py hadoop01,hadoop02,hadoop03:2181 #如果進(jìn)不去命令行,重啟即可 #如果進(jìn)入Phoenix命令行狀態(tài),則證明Phoenix安裝完成 10. Phoenix使用 10.1. 在命令行客戶端下使用 10.1.1. 創(chuàng)建表 create table tab1( id integer primary key not null, name varchar ); create table tab2( id varchar primary key not null, “info”.“name” varchar ); 結(jié)論1:在phoenix中創(chuàng)建的表在hbase中會(huì)同時(shí)創(chuàng)建出表 結(jié)論2:在phoenix中創(chuàng)建的表在hbase中表名會(huì)變?yōu)榇髮?xiě),如果不想讓他自動(dòng)變化,則需要將表明用雙引號(hào)引起來(lái) 結(jié)論3:phoenix表中的主鍵會(huì)成為hbase表的行鍵 結(jié)論4:如果不聲明phoenix表中的普通列會(huì)成為hbase表中默認(rèn)列族(名字叫0)中的普通列 結(jié)論5:也可以在建phoenix表時(shí),來(lái)聲明底層的列族的名稱。 10.1.2. 插入數(shù)據(jù) upsert into test values (1,‘Hello’); upsert into test values (2,‘World!’); 10.1.3. 查詢數(shù)據(jù) select * from xxx where xxxx; 10.1.4. 刪除數(shù)據(jù) delete from test where xxxx; 10.1.5. 創(chuàng)建表來(lái)關(guān)聯(lián)hbase中已經(jīng)存在的hbase表 只要?jiǎng)?chuàng)建表和hbase表同名,列一定要聲明完全即可。 10.1.6. 刪除表 drop table tabx;#要注意,會(huì)同時(shí)刪除hbase底層的表 10.1.7. 視圖操作 創(chuàng)建視圖: create view tab3_view as select * from tab3; 查詢視圖: select * from tab3_view where xxxx; 刪除視圖: drop view tab3_view; 創(chuàng)建視圖關(guān)聯(lián)hbase中已經(jīng)存在的表: create view “tab4” (id varchar primary key,“cf1”.“c1” varchar,“cf2”.“c2” varchar); ##表關(guān)聯(lián)管理hbase中的數(shù)據(jù),刪除表的時(shí)候,hbase表也被刪除 ##視圖關(guān)聯(lián)管理hbase中的數(shù)據(jù),刪除視圖的時(shí)候,hbase表不會(huì)被刪除 10.2. 在jdbc中使用 10.2.1. 在jdbc中的使用 1.創(chuàng)建java工程導(dǎo)入連接Phoenix的驅(qū)動(dòng) phoenix-4.8.1-HBase-0.98-client.jar 2.編寫(xiě)jdbc代碼即可操作Phoenix中的數(shù)據(jù) Connection conn = DriverManager.getConnection(“jdbc:phoenix:hadoop01,hadoop02,hadoop03:2181”); Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery(“select * from TAB3”); while(rs.next()){ String v = rs.getString(“c1”); System.out.println(v); } stat.close(); conn.close();
10.3. 在圖形化客戶端工具中使用 10.3.1. 客戶端工具使用 連接Phoenix的工具Squirrel
a) Squirrel是一個(gè)連接數(shù)據(jù)庫(kù)的客戶端工具,一般支持JDBC的數(shù)據(jù)庫(kù)都可以用它來(lái)連接,如連接mysql b) 下載Squirrel SQL Client,java –jar squirrel-sql-3.7.1-standard.jar即可 c) 連接Phoenix在Squirrel的安裝目錄的lib下添加phoenix-4.8.1-HBase-0.98-client.jar包 10.3.2. SQuirreL SQL客戶端使用圖解 打開(kāi)SQuirreL SQL客戶端,窗口=》查看驅(qū)動(dòng)程序=》驅(qū)動(dòng)程序=》新建驅(qū)動(dòng)程序
新建別名
柚子快報(bào)邀請(qǐng)碼778899分享:大數(shù)據(jù) hbase簡(jiǎn)介
參考文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。
轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。