1萬億條數據怎麼存儲和查詢?

數據量:1萬億條,每條10K位元組

讀寫情況:

沒有修改

寫入速度:平均175MB/sec

搜索實時性能要求高

這種情況下應該怎麼技術選型呢?MongoDB?Hbase, ElasticSearch?

感覺這麼大數據量下肯定需要sharding的,MongoDB比Hbase簡單些,但是聽說它很耗內存,也擔心實時性查詢性能。

大數據菜鳥一個,請高手指點!


1萬億條,每條10K,也就是 1T*10K = 10PB,以每秒 175MB的速度寫入,大概需要 710天。

假定你搭個 100個結點的集群,每個結點就是 100TB,然後每個結點以 175MB 的速度寫入,大約需要一個星期寫滿,這還不包括冗餘。

在這個數據量下要求實時搜索性能高,建議你註明下搜索性能要高到什麼程度。


根據你描述中的幾個重要條件來分析和選型:

1. 10PB數據量

這個量級的話HBase、MongoDB和ElasticSearch都號稱能支撐,大家都是號稱水平擴展的,堆機器就行了。不過真要支撐這麼大量級,還得看實際的應用情況,架構設計上理論能達到的值和實際能達到的值還是有偏差的。所以從存儲量來選型的話,兩個重要判斷,一是看下哪個產品在生產上真的達到過這個量級(具我所知的業務,HBase和阿里雲的表格存儲是有真的在生產環境支撐到這個量級),二是核算成本。

2. 搜索實時性能要求高
這個條件說的太籠統了,多維查詢?還是全文搜索?還是簡單的KeyValue或者範圍查詢?

對讀的性能要求有多高?讀寫比例大概多少?

根據這個條件沒法做選型判斷,你需要描述的再詳細一點。


這個量級別的數據只能上重量級的HBase了,關鍵還是看你的業務

HBase負責OLTP查詢,一般是時間作為RowKey的起始位~

如果是OLAP可以導出CSV到Hive再到Kylin里Build Cube(Kylin1.60版本以後也支持Streaming啦)

HBase裡面Apache Phoenix可以使得HBase的API的使用門檻降低很多

如果量級在億級,查詢和分析都可以直接使用ES~~~~

:)


好像搜索引擎也沒做到萬億數據的全量在線索引吧,什麼業務場景?


有沒有用mpp資料庫來搭建大集群的,他對結構化數據的處里肯定對hive或者hbase效率快很多,為什麼現在不採用?


GPS行業,每條數據0.5k。每個客戶10秒一條數據。目前一個月大概有2億條數據。未做分片集單伺服器的情況下5億條數據(80G磁碟佔用空間,50~100G的內存佔用)遇到查詢效率慢的情況,優化查詢方式後正常。目前已上分片集(數據讀寫響應在300ms內)。總得來說MONGODB簡單好用。


不如不作sharding的話,我知道的也只有阿里OceanBase1.x(如果其每日合併還吃得消..)或許可以解決你這種負載(大吞吐量大數據表的簡單事務)。


本人做大數據十幾年了,處理過幾百億的數據,經驗是規範輸入源數據,去除重複,刪除多餘字元,對用戶可能的搜索習慣進行細分,分解數據到對應的搜索習慣。


推薦閱讀:

如何把 Web 頁面上抓取下來的海量文本信息從非結構化信息變成結構化信息?
現在有沒有好的TiDB實踐案例?
Hbase1.1.2的HTablePool已經被棄用,用什麼來代替HTablePool呢?
Kaggle的比赛和平时的数据分析有哪些区别?
像kaggle、datacastle、天池等大數據競賽,一般涉及哪些專業呢?

TAG:NoSQL | MongoDB | Hadoop | HBase | 大數據 |