《專場20.5-Apache Pegasus的原理與實踐-王偉.pdf》由會員分享,可在線閱讀,更多相關《專場20.5-Apache Pegasus的原理與實踐-王偉.pdf(45頁珍藏版)》請在三個皮匠報告上搜索。
1、Apache Pegasus的應用與實踐王偉 小米 高級軟件工程師講師簡介王偉高級軟工程師高級軟件工程師,KV存儲團隊負責人曾就職于百度、SHAREit,先后負責分布式Trace、表格存儲、KV存儲系統的研發。目前就職于小米,負責KV存儲方向。專注于存儲系統、性能優化等技術,對分布式、Trace、存儲等技術領域有較深的技術積累,及豐富的存儲系統實踐經驗。目錄 項目介紹 實現原理 功能特性 應用實踐項目介紹項目介紹HBase的問題數據非本地保存(性能較差)Failover時間長(可用性低)JVM垃圾回收(長尾問題)Hadoop生態(運維困難)項目介紹Apache Pegasus一個高可用、高性能
2、、強一致、輕量級分布式KV存儲系統項目介紹StartRelease 1.0.0Join ApacheRelease 2.0.0Open SourceGitHubMeetUP201520162017.92020.62020.92021.9Release 2.4.02022.9項目介紹架構設計中的一些考量 實現語言:C+、Java、Golang 存儲介質:HDD、SSD、MEM 單機引擎:RocksDB、LevelDB 數據視圖:KV、Tabular 數據分布:Hash、Range、一致性Hash 系統架構:中心化、去中心化 一致性協議:Raft、Paoxs、?實現原理實現原理分布式系統概念表A1
3、,2,3,4,51,2,3,4,5.a,b,c,d,e.1(2)2(3)3(4)4(5)5(1)傳統數據庫分布式數據庫表Ba,b,c,d,e表A1,2,3,4,5表Ba,b,c,d,ea(b)b(c)c(d)d(e)e(f)實現原理Partition全局有序Key RangePartition#0 k0,k1 Partition#1 k2,k3 Partition#2 k4,k5Partition#3 k6,k7 Partition#4 k8,k9 k0k1k2k3k4k5k6k7k8k9 實現原理PartitionHash分環全Key Hash前綴HashPartition#0 k0,k5
4、Partition#1 k1,k6 Partition#2 k2,k7Partition#3 k3,k8 Partition#4 k4,k9 k0k1k2k3k4k5k6k7k8 離線)全量數據導出到HDFS,通過Spark進行離線計算,適用于在線數據離線分析場景 數據導入(離線-在線)離線生成數據文件,快速加載海量數據,適用于周期性更新數據,在線提供讀取服務,大幅提升灌庫速度及穩定性離線生態數據導出實現MetaServerZookeeperPrimary 0Secondary 1Secondary 2Primary 0Secondary 1Secondary 2HDFSSST fileSST
5、 fileSST fileSST fileUpload1 數據快照 通過RocksDB CheckPoint接口生成數據快照2 數據上傳 將數據快照從ReplicaServer上傳到HDFS即Pegasus的冷備份流程離線生態數據導出實現HDFSReplica serverReplica serverHiveSchema RDD3 使用PegasusSpark解析數據快照,進行離線分析轉換為Hive(parquet)使用SparkSQL進行離線分析離線生態數據導入實現nodenodenodenodenodenodeTransform(Pegasus-Spark)HDFS(sst file)Di
6、stinctRepartitionSortoriginal dataoriginal data1 數據生成 通過離線系統ETL生成RocksDB底層數據文件離線生態數據導入實現2 數據下載 將數據文件從HDFS下載到ReplicaServer 數據將同時下載到Primary和Secondary3 導入引擎 待全部分片下載完成后進入導入環節 導入是特殊的寫入,由Primary發起 通過IngestSST將數據文件加載到引擎 加載時引擎將瞬間阻寫(分鐘級別)MetaServerZookeeperPrimary 0Secondary 1Secondary 2Primary 0Secondary 1S
7、econdary 2HDFSSST fileSST fileSST fileSST fileDownload離線生態數據導入實現4 數據整理 數據導入后,必須進行全量數據Compaction,優化讀取性能和空間占用 ManualCompaction可以限制Compaction速度,減小線上讀取抖動 BulkLoad與Compaction解耦,支持多次BulkLoad之后,一次性Compaction應用實踐應用實踐選型對比極低時延數據量小成本高非強一致可用性高低時延數據量大成本低強一致可用性較高高時延 長尾數據量極大成本低強一致可用性較低Pegasus適用場景延遲敏感的在線業務、數據規模較大可用
8、性要求較高數據強一致性及持久化需求性能數據規模成本一致性可用性應用實踐使用場景 典型場景 數據結構簡單:單條記錄長度短,Key-Value模型 存儲量大:100G到100T級別 有持久化需求:數據高可靠,永久存儲 強一致、低延遲:能滿足強一致性,延遲較低(P99 通過API寫入數據-寫入完成-Manual Compact-切回Normal模式應用實踐在廣告業務落地 通過RocksDB調參,提升灌數據場景的QPS和吞吐參數參數值值disable_auto_compactionstruelevel0_file_num_compaction_triggerlevel0_slowdown_writes
9、_triggerlevel0_stop_writes_triggersoft_pending_compaction_bytes_limithard_pending_compaction_bytes_limitno limitmax_compaction_byteswrite_buffer_sizeraise to 256M form 64Mmax_write_buffer_numberraise to 6 form 4應用實踐在廣告業務落地 方案二:通過離線計算+BulkLoad,實現海量數據灌庫 業務側離線計算結束,以結算結果為數據源,對接PegasusSpark,生成數據文件 每天流量低峰
10、使用BulkLoad灌庫,完成后進行Compaction 實踐過程 離線生成底層數據文件 灌庫 增量:切為灌庫模式-下載數據文件到各節點-IngestSST-Manual Compact-切回Normal模式 全量:AB集群方式A提供在線讀取-全量灌入B-切流到BB提供在線讀取-全量灌入A-切流到A應用實踐在廣告業務落地 收益 2.2T數據灌庫時間從12小時縮短為1小時(20臺節點,100M限速)灌庫過程中multi_get請求P99時延在30ms之內應用實踐在廣告業務落地 收益 相比于隨機寫入,磁盤IOPS、吞吐明顯下降磁盤寫吞吐/分鐘磁盤讀吞吐/分鐘磁盤讀請求個數/分鐘磁盤寫請求個數/分鐘未來規劃 功能 成本優化:更加豐富的負載均衡策略 SLA提升:多可用區部署能力 性能提升:Client請求聚合,非強一致性支持 架構優化:公有云對象存儲(S3)支持,在線無損遷表,去除Zookeeper依賴 新能力:探索PMEM給Pegasus帶來的變化,引入RocksDB更多特性 開源 推動Apache Pegasus合規建設,加速畢業進程 社區活躍度提升