mongo集群可以用來進行海量數據分析嗎?
mongo集群可以用來進行海量數據分析嗎?
可以。但僅僅是可以,不具備工程實踐性。應該使用大家都用的技術。
曾經使用過mongodb作為存儲來測試其分析性能,不是很理想,當然只是單節點,可能沒有說明性。
目前來看大數據分析的技術主要有以下幾個方向:
類似於Hadoop的MapReduce架構;類似於Presto和Spark的內存計算架構;類似於Elasticsearch的分散式索引架構;
類似於Storm之類的分散式實時計算框架;MR演算法是傳統的批處理模型,其延遲性較為明顯,對於體量較大(數據粒度較細)的數據分析比較適合,比如ETL過程就比較適合於使用MR計算模型(可以通過Hive來使用SQL轉化成MR)。
類似於Presto這樣的架構(可以使用SQL),更多的是應用在即時分析的領域,因為其最大限度地利用內存來提升計算性能,所以其延遲要比基於MR的Hive要低好幾個數量級。同時,也應該注意運算的複雜性,確保有足夠的內存支持運算;
Elasticsearch是技術Lucene開發的分散式的索引架構,很多設計借鑒了HDFS的設計,比如分片,複製等概念,其最大的優勢在於它的准實時性。其對數據分析的支持僅限於簡單的聚合計算,所以有其局限性。其最大的問題就是為了性能,消耗內存比較大,所以要適當地保持數據的規模,確保每個節點的內存不會成為瓶頸。
Storm這種是一種數據流計算框架,其最大的優勢就在於它的准實時。作為一個純粹的數據流計算框架來使用,它的性能沒有問題,但是如果要做一些稍微複雜一點的計算,比如JOIN操作,那其性能也會受到極大影響。
以上所有的計算模型,都要注意內存的使用,特別是Presto和ES,如果伺服器節點開始使用交換區的話,性能會呈指數級下降。
技術只是方法,業務模型、數據分析理論、思路才是根基;另數據分析並不能解決所有問題,要充分利用數據的同時,也要注意那些數據分析解決不了問題。mongodb的存儲性能,單機的話,可能是和傳統的資料庫差不多的,從業務使用的角度上來說,mongodb其實是幫我們做了水平分庫,並且實現細節對用戶透明。所以在數據量大的情況下,使用起來的話,肯定比傳統的資料庫好,其實分散式存儲的東西也都是差不多的,所以存儲方面應該不用擔心,接下來,我們要看下題主的業務需求來分析下mongodb是否適合。 mongodb作為存儲是沒有問題的,但是配套的分析功能並不是很完善,沒有辦法像Hadoop一樣有豐富的生態系統,hive之類的。。。也沒有辦法讓自己寫的程序像storm一樣,分散式去運行(沒有內嵌java之類代碼的功能,只有簡單的JavaScript)。
OK,其實從生產角度來說,肯定是哪個熟悉用哪個,如果題主那邊對mongodb熟悉,而且數據分析的維度是多變的(不確定的),這個時候呢,用mongodb還是挺合適的,好像叫OLAP吧。呵呵,畢竟我不是做這一塊的。
呵呵,寫的有點亂,最後送上一句話,千里之行始於足下,何不自己做一些可行性方案的評估測試呢?可以,有落地的使用場景如題。好些大公司用它處理海量數據,像國內的如:百度雲,趕集,京東等等。。。。
它那個mapreduce()好象不怎麼樣
推薦閱讀:
※用戶畫像是怎麼生成出來的?
※用戶畫像的新手如何開展第一步的行動,以及後續的動作,是如何開展的,?
※類似這種標籤用戶畫像是用什麼工具製作的?