2024HBase 應(yīng)用與高可用實(shí)踐_第1頁(yè)
2024HBase 應(yīng)用與高可用實(shí)踐_第2頁(yè)
2024HBase 應(yīng)用與高可用實(shí)踐_第3頁(yè)
2024HBase 應(yīng)用與高可用實(shí)踐_第4頁(yè)
2024HBase 應(yīng)用與高可用實(shí)踐_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

HBase戶解決了哪些問(wèn)題。接著介紹如何保證HBase集群的高效和穩(wěn)定,最后是后續(xù)規(guī)劃。HBaseOracleHBase統(tǒng)DB在維護(hù)方面有很多問(wèn)題,遷移到HBase上來(lái),遷移和維護(hù)是非常方便的。HBaseHBaseAPIIPC交互次數(shù),降低耗時(shí)。另一個(gè)就是Get方面,有兩個(gè)層面。row-keyGetrow-keylistGetGetScanIPC有多個(gè)列簇進(jìn)行檢索時(shí),如果只是row-key檢索而沒(méi)有指定列簇,索引會(huì)獨(dú)立去檢索,相在檢索數(shù)據(jù)會(huì)先從熱數(shù)據(jù)檢索,這樣導(dǎo)致從HDFS中重新加載,這樣也會(huì)導(dǎo)致延時(shí)。一種是通過(guò)balance_switch參數(shù),如果是true就是自動(dòng)均衡,false就是關(guān)閉當(dāng)前均衡操作。第二種就是通過(guò)balancer,需要手動(dòng)執(zhí)行。如HBase節(jié)點(diǎn)掛機(jī)重啟導(dǎo)致region不均HBaseregionbalance_switch開啟balancer手動(dòng)強(qiáng)制均衡。需要注意是均衡操作遇到RIT問(wèn)題,均衡操作無(wú)效。在判斷regionserverregionregionregionserver數(shù),然后用比值乘以0.8這是其最小值,最大值是比值乘以1.2,在這個(gè)范圍做均衡操作會(huì)BlockCache,是讀操作比較有效的一種手段。有時(shí)緩存命中率不高,可以開始對(duì)這個(gè)可以保證數(shù)據(jù)本地性為1。在Compaction操作是避免自動(dòng)執(zhí)行,空閑時(shí)段定時(shí)執(zhí)行避免影響集群IO。還有就是數(shù)據(jù)遷移問(wèn)題。遷移場(chǎng)景可能有:HBase集群從一個(gè)地方搬到另一個(gè)地方,涉及到HBase集群遷移;還有就是原先數(shù)據(jù)存儲(chǔ)于hive中,需要將其遷移到HBase中。兩個(gè)集群數(shù)據(jù)遷移格式一樣,可以通過(guò)distcp來(lái)進(jìn)行跨集群數(shù)據(jù)遷移,具體命令hadoopdistcp-Dmapreduce.job.queuename=queue_name-update–skipcrccheck-m120YARN,distcpMapReduce在集群遷移可以回遇到上述問(wèn)題,遷移文件時(shí)原集群文件未關(guān)閉,處于寫狀態(tài),distcp檢驗(yàn)長(zhǎng)度不一致就會(huì)處于失敗狀態(tài)。解決方案是先通過(guò)檢測(cè)文件狀態(tài),執(zhí)行hdfsfsck[hdfs_file_path]|[hdfs://ip:port/path],未關(guān)閉,執(zhí)行hdfsdebugrecoverLease-path[hdfs_file_pathhadoopdistcp2中,關(guān)閉HDFS文件時(shí),可能會(huì)失敗,例如出現(xiàn)異?!癎ivinguponrecoverLease”,可再次執(zhí)行關(guān)閉,成功后會(huì)有“recoverLeaseSUCCEEDEDon”信息出現(xiàn)。HiveHBaseA(HBase)AHive遷移到集群B中的HBase。遷移方式有兩種,第一種在集群A中生成HFile?件,然后使distcpHFileBHBaseBulkLoad的方式將數(shù)據(jù)導(dǎo)入到HBaseHBase的全部指標(biāo)就掌握了HBase的健康狀態(tài),regionserver提供監(jiān)控接口狀態(tài),用戶在反饋時(shí),應(yīng)用程序訪問(wèn)HBase很慢,他們關(guān)心的是應(yīng)用程序。里有個(gè)實(shí)際案例告訴應(yīng)該如何解決,用戶在合并Region操作時(shí),發(fā)現(xiàn)RIT狀態(tài)直顯示MERGING_NEWHBaseJIRAHBASE-17682的BUG,需要不到保證,MERGING_NEWmaster監(jiān)控系統(tǒng)和修復(fù)系統(tǒng),另外在HBase2會(huì)去做一個(gè)POC的測(cè)試,做一個(gè)版本升級(jí)?;贖Base作者:武基鵬整理:HBaseCDHCDHSQOOPSQOOP源的DataX,時(shí)間粒度使用腳本調(diào)度實(shí)現(xiàn)T+1模式抽取到Hive。作分析時(shí)采用ApacheKylinHBaseSuperset,后選型是HBase。為什么選擇Maxwell呢,第一個(gè)它能夠使用“select*fromTable”進(jìn)行bootstrapping初始化數(shù)據(jù),在大數(shù)據(jù)構(gòu)建時(shí)可以利用Maxwell進(jìn)行全表掃描,這句SQL會(huì)自動(dòng)觸發(fā)Maxwell某個(gè)線程進(jìn)行數(shù)據(jù)拉取。第二個(gè)Maxwell支持?jǐn)帱c(diǎn)還原功能,大數(shù)據(jù)平臺(tái)架構(gòu)不光考慮到高可靠、高性能,也要保證數(shù)據(jù)零丟失,它支持記錄MySQL的post日志進(jìn)行數(shù)據(jù)還原,這是當(dāng)初選擇最重要的原因。第三個(gè)Maxwell將數(shù)據(jù)從MySQL發(fā)送到Kafka,Kafka是分區(qū)的,如何保證全局有序是個(gè)問(wèn)題。它能保證這個(gè)特性,支持database,table,primarykey,orcolumn的拼接,將數(shù)據(jù)發(fā)送到某個(gè)分區(qū);比如一條業(yè)務(wù)數(shù)據(jù)在業(yè)務(wù)系統(tǒng)先在insert再做update再做delete,Kafka會(huì)將這三者發(fā)送到三個(gè)分區(qū),key值為空不會(huì)記錄,在銷毀時(shí)用sparkstreaming可能會(huì)以delete、update、insert順序,會(huì)造成數(shù)據(jù)紊亂。我們希望將這些特征數(shù)據(jù)發(fā)送到Kafka一個(gè)分區(qū),而Kafka單分區(qū)是有序的。第可以通過(guò)alert語(yǔ)句解析捕獲,進(jìn)行同步更新到HBase中。因此基于這四點(diǎn)要求選擇了的。第二個(gè)是隨機(jī)的讀和寫,第三個(gè)HBase支持百萬(wàn)列。第三個(gè)介紹下為什么要選擇PhoenixSQLHBasePhoenixHBase,有利于傳統(tǒng)開發(fā)人員轉(zhuǎn)型,而不用專注于底層HBase。CDHHBasePhoenixphoenix-for-cloudera-4.9、HBase-1.2、cdh5.9,這個(gè)存在問(wèn)題,然后采用apache-phoenix-4.11.0HBase-1.2,最后采用phoenix-for-cloudera-4.10、HBase-1.2、cdh5.12。cdh5.11的郵件配置存在bug。PhoenixCDHpom的計(jì)算時(shí),多次創(chuàng)建錯(cuò)誤。QueryServicesOptions.java文件修改參數(shù)DEFAULT_IS_NAMESPACE_MAPPING_ENABLED=true。Phoenix存在一個(gè)問(wèn)題就是時(shí)區(qū),比如一條上午十點(diǎn)的業(yè)務(wù)數(shù)據(jù)在Phoenix周轉(zhuǎn)下,時(shí)間數(shù)據(jù)會(huì)減一個(gè)8小時(shí)。修改DateUtil.java文件timezone為”Asia/Shanghai”,但是讀寫兩種只解決了一種,而業(yè)HBaseOMS、WMS,ReportDBOMSWMS步于一臺(tái)機(jī)器,使用的就是Maxwell,其支持白名單和黑名單。業(yè)務(wù)平臺(tái)的表可能有兩三100JsonKafka,SparkstreamingKafka,JDBCHBasePhoenixHBase,只需要通過(guò)PhoenixMYSQLRedis,久耶慧策應(yīng)用也會(huì)將數(shù)據(jù)寫入ES里面。中間一層就是常見(jiàn)應(yīng)用開發(fā),如SparkStreaming、SparkSQl,也用PythonRAzkabanAirflow,最后用的是Oozie。上圖藍(lán)色是實(shí)時(shí)大屏,紅色是全球倉(cāng)庫(kù),大約有四十幾個(gè),數(shù)據(jù)綁定用的是saiKU,將PhoenixsaiKUsaiKU通過(guò)Phoenix組裝SQL語(yǔ)句查詢結(jié)果數(shù)據(jù)。也用到zeppelin,這是Spark交互式PhoenixMySQL但是MySQL重庫(kù)觸發(fā)器支持不友好。通過(guò)改造Phoenix代碼將數(shù)據(jù)寫入Redis,增加加一刪除減一,MySQLHBaseshellQPS20001列PhoenixTableKafka+SparkStreaming+Phoenix進(jìn)行數(shù)據(jù)的插入。接著就是Spark開發(fā)讀和寫,我們還利用了DBeaver。我們建表使用了聯(lián)合組件,由于公司集群規(guī)接下來(lái)是一個(gè)經(jīng)典開發(fā)案例Kafka+SparkStreaming+Phoenix,Phoenix可以理解為MySQL架包的JDBCPhoenix的PoolJDBCdeletePhoenixbootstream業(yè)務(wù)代碼開發(fā)首先將架包導(dǎo)入pom文件,如何找維度是將Phoenix的Apache下載到IDEA,在測(cè)試類里面查找。Phoenix+Spark讀取有好幾種,選擇以上寫法原因有:首先其支持列裁剪,第二支持where條件,configuration指的是Spark的HDFS的conf。加、overwrite。HBase沒(méi)有很好地可視化工具,利用DBeaver,支持MYSQL、Oracle接下來(lái)介紹下集群調(diào)優(yōu)參數(shù),分為六個(gè)方面:(1)Linuxparameters、(2)HDFSparameters、(3)HBaseparameters、(4)GCparameters、(5)Monitor、(6)Linuxsysctt-p。SparkHBase中,HBase底層是HDFSLinux系統(tǒng)參數(shù)沒(méi)由于我們公司由于業(yè)務(wù)系統(tǒng)較多,吃的內(nèi)存比較緊,因此設(shè)為10,這樣可以使job慢一點(diǎn)但是不能掛,但是如果做實(shí)時(shí)就需要設(shè)置為0。這個(gè)最終設(shè)置取決于你們自身業(yè)務(wù)環(huán)境,選擇自己需要的就好。如果做CBH的平臺(tái)部署必須要關(guān)閉大頁(yè)面。HDFSParametersCBHHBasexmltimeouthandlersocket.timeoutHBase的xml文件一定要部署,否則無(wú)法支持高并發(fā)操作。的內(nèi)存配置是8G,實(shí)際只使用1G,這個(gè)時(shí)候就休要加上echo "vm.max_map_count=393210"->/etc/sysctl.conf三個(gè)參數(shù),這其實(shí)是底層Linux拋出的錯(cuò)誤。提醒一點(diǎn)socket.timeout參數(shù)不僅在HDFS中需要配置,在HBase中也需要配GE,如果需要配置可以去嘗試下,小米以前分享過(guò)??梢詫?duì)參數(shù)進(jìn)行調(diào)試進(jìn)行壓錯(cuò)調(diào)HBase為我們的調(diào)度平臺(tái)以一個(gè)小時(shí)將所有job調(diào)度完。圖中Y軸是每秒的請(qǐng)求量,如果寫的量Linux,LinuxCPUZookeeperZookeeperOpenConnections,因?yàn)镠Base進(jìn)行操作需要打開的連接,當(dāng)業(yè)務(wù)場(chǎng)景為長(zhǎng)服務(wù),如SparkstreamingSparkSQL+Phoenixshell腳本調(diào)度,在資源緊張時(shí)需要搶資源,在submit時(shí)需要申請(qǐng)資源(大約30S),線JDBCSparkZookeeperOpenConnections遞增趨勢(shì)上漲,當(dāng)?shù)紺onnection數(shù)(默認(rèn)500)CDH會(huì)殺掉。后來(lái)改為水平,利用PHOENIX-4319:Zookeeperconnectionshouldbeclosedimmediately解決問(wèn)題。藍(lán)色線,相當(dāng)于生產(chǎn)者寫到Kafka里面,綠色是Sparkstreaming進(jìn)行消費(fèi),相當(dāng)于MaxwellKafkaJsonKafka些東西(來(lái)自哪個(gè)topic、offset是什么等),如果兩條線沒(méi)問(wèn)題就是沒(méi)出問(wèn)題。BugPHOENIX-4056:java.lang.IllegalArgumentException:CannotcreateaPathfromanemptystring,先前有問(wèn)題采用降版本,目前已經(jīng)解決,方案在社區(qū)里有。SPARK-22968:java.lang.IllegalStateException:Nocurrentassignmentforpartition3RITRIT。HBase個(gè)WAL,數(shù)據(jù)基本不會(huì)丟,只需要將機(jī)器重啟。重啟過(guò)程會(huì)有一些RIT操作,如果regionserver掛了申請(qǐng)維護(hù)時(shí)間,嘗試重啟regionserver節(jié)點(diǎn),如果不行重啟HBase集HBasemasteractivelog日志。還有一次是高并發(fā)內(nèi)存不夠用,regionserverCDHHBaseHBaseCMSserviceMonitorOKRITregionserverH

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論