HBASE_API的应用
| 實(shí)驗(yàn) 目的 要求 | 目的:
| ||||||||||||||||||
| ? ? ? ? ? 實(shí) 驗(yàn) 環(huán) 境 ? ? ? ? ? |
? |
?
練習(xí)內(nèi)容
任務(wù)一:編寫HBaseTest.java,完成與數(shù)據(jù)庫(kù)的連接、創(chuàng)建表、修改表、查看表結(jié)構(gòu)等,并進(jìn)行驗(yàn)證;
1、創(chuàng)建普通java項(xiàng)目,并導(dǎo)入需要的jar包;
2、修改Windows下的host文件;
3、連接并查看數(shù)據(jù)庫(kù)中的表;
4、創(chuàng)建表
5、進(jìn)行修改表操作
6、查看表結(jié)構(gòu);
7、編寫主類main方法;
8、結(jié)果驗(yàn)證;
?
任務(wù)二:使用Put方法進(jìn)行操作,并驗(yàn)證;
1、通過(guò)Table接口和Put類向source表插入一些數(shù)據(jù);
2、驗(yàn)證;
任務(wù)三:使用Get方法進(jìn)行操作,并驗(yàn)證;
1、按行鍵獲取;
2、按行鍵列族獲取;
3、按行鍵、列族、列修飾符獲取;
4、寫入scan方法;
5、寫入main方法;
6、驗(yàn)證;
任務(wù)四:課后作業(yè);
1、第7題,刪除source表中Jason的math課程成績(jī);
出現(xiàn)的問(wèn)題與解決方案
排錯(cuò)一:
錯(cuò)誤:數(shù)據(jù)庫(kù)訪問(wèn)被拒絕連接
排錯(cuò)思路:
- 查看網(wǎng)絡(luò)環(huán)境是否暢通;
- 查看HBase各節(jié)點(diǎn)是否正常;
- 查看開發(fā)環(huán)境是否合適;
解決方案:重新啟動(dòng)Hadoop集群,確保每一個(gè)服務(wù)都啟動(dòng)正常,主節(jié)點(diǎn)一必須是Active狀態(tài);然后重啟Myeclipse軟件,重新運(yùn)行程序;
?
排錯(cuò)二:
錯(cuò)誤:主節(jié)點(diǎn)01,的HMaster服務(wù)經(jīng)常掉線;
排錯(cuò)思路:
- 檢查集群中各服務(wù)都是否正常;
- 檢查主備兩節(jié)點(diǎn)的狀態(tài);
- 檢查HBase環(huán)境的配置文件是否正常;
解決:
1、修改各節(jié)點(diǎn)的hbase-site.xml文件,將里面的 時(shí)鐘延遲值改為240000,原來(lái)默認(rèn)值為60000;
2、Hadoop集群的各節(jié)點(diǎn)啟動(dòng)順序?yàn)?#xff1a;
在數(shù)據(jù)節(jié)點(diǎn)03、04、05上啟動(dòng)Zookeeper服務(wù);
在主節(jié)點(diǎn)01上啟動(dòng)Hadoop服務(wù);
在主節(jié)點(diǎn)01與備用主節(jié)點(diǎn)02上分別啟動(dòng)HBase服務(wù);
3、在關(guān)閉集群前依次的從開啟服務(wù)順序的倒序開始關(guān)閉各服務(wù);
知識(shí)拓展
優(yōu)化HBase
1、隨機(jī)讀密集型
優(yōu)化方向:高效利用緩存和更好的索引
- ?增加緩存使用的堆的百分比,通過(guò)參數(shù) hfile.block.cache.size 配置。
- 減少M(fèi)emStore占用的百分比,通過(guò)hbase.regionserver.global.memstore.lowerLimit和hbase.regionserver.global.memstore.upperLimit來(lái)調(diào)節(jié)。
- 使用更小的數(shù)據(jù)塊,使索引的粒度更細(xì)。
- 打開布隆過(guò)濾器,以減少為查找指定行的Key Value對(duì)象而讀取的HFile的數(shù)量。
- 設(shè)置激進(jìn)緩存,可以提升隨機(jī)讀性能。
- 關(guān)閉沒(méi)有被用到隨機(jī)讀的列族,提升緩存命中率。
2、順序讀密集型
優(yōu)化方向:減少使用緩存。
- 增大數(shù)據(jù)塊的大小,使每次硬盤尋道時(shí)間取出的數(shù)據(jù)更多。
- 設(shè)置較高的掃描器緩存值,以便在執(zhí)行大規(guī)模順序讀時(shí)每次RPC請(qǐng)求掃描器可以取回更多行。 參數(shù) hbase.client.scanner.caching 定義了在掃描器上調(diào)用next方法時(shí)取回的行的數(shù)量。
- 關(guān)閉數(shù)據(jù)塊的緩存,避免翻騰緩存的次數(shù)太多。通過(guò)Scan.setCacheBlocks(false)設(shè)置。
- 關(guān)閉表的緩存,以便在每次掃描時(shí)不再翻騰緩存。
3、寫密集型
優(yōu)化方向:不要太頻繁刷寫,合并或者拆分。
- 調(diào)高底層存儲(chǔ)文件(HStoreFile)的最大大小,region越大意味著在寫的時(shí)候拆分越少。通過(guò)參數(shù) hbase.hregion.max.filesize設(shè)置。
- 增大MemStore的大小,通過(guò)參數(shù)hbase.hregion.memstore.flush.size調(diào)節(jié)。刷寫到HDFS的數(shù)據(jù)越多,生產(chǎn)的HFile越大,會(huì)在寫的時(shí)候減少生成文件的數(shù)量,從而減少合并的次數(shù)。
- 在每臺(tái)RegionServer上增加分配給MemStore的堆比例。把upperLimit設(shè)為能夠容納每個(gè)region的MemStore乘以每個(gè)RegionServer上預(yù)期region的數(shù)量。
- 垃圾回收優(yōu)化,在hbase-env.sh文件里設(shè)置,可以設(shè)置初始值為:-Xmx8g? -Xms8g? -Xmn128m? -XX:+UseParNewGC? -XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=70
- 打開MemStore-Local Allocation Buffer這個(gè)特性,有助于防止堆的碎片化。 通過(guò)參數(shù)hbase.hregion.memstore.mslab.enabled設(shè)置
4、混合型
優(yōu)化方向:需要反復(fù)嘗試各種組合,然后運(yùn)行測(cè)試,得到最佳結(jié)果。
?
影響性能的因素還包括:
- 壓縮:可以減少集群上的IO壓力
- 好的行鍵設(shè)計(jì)
- 在預(yù)期集群負(fù)載最小的時(shí)候手工處理大合并
- 優(yōu)化RegionServer處理程序計(jì)數(shù)
總結(jié)
以上是生活随笔為你收集整理的HBASE_API的应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Hadoop_MapReduce的基本应
- 下一篇: Hive的基本应用