如何做流数据分析,Byron Ellis来告诉你...
2019獨角獸企業重金招聘Python工程師標準>>>
????如何做流數據分析,Byron Ellis來告訴你...
????流數據越來越多,如各種消息、社交媒體、運行監控、在線服務、物聯網等都會產生大量的實時數據,以前的靜態數據也隨著采集設備的進化和處理需求的提高而成為流式數據,需要采用具有高可用、低延遲和快速水平擴展的系統來進行處理。《實時分析-流數據的分析與可視化技術》一書對此做了較為全面的介紹,由[美]Byron Ellis編著,王曉偉翻譯,機械工業出版社出版。
????
????流數據的處理與傳統數據庫有所不同,要求具有高可用、低延遲和快速水平擴展能力,這帶來了特殊的挑戰。所幸的是,大量的開源軟件已經探索出了很好的方法,盡管還有很多美中不足,但已足以解決大量的流數據處理和分析所遇到的問題。由于運行在大規模的集群之上而且實時性要求高,流數據的事務性是個非常棘手的問題。根據性能要求和應用的特點,可以采用允許丟失數據、至少交付一次、允許重復交付等多種策略,當然也可以使用“有且只有一次”的嚴格事務模型,但這在分布式系統下將帶來額外的檢查開銷,建議通過業務層面去進行處理從而提升數據前端的實時性。
????流數據分析架構包括數據采集、數據流程、數據處理、數據存儲、數據交付等多個組成部分。要維持流數據平臺的持續運行,可以采用ZooKepper對集群進行管理,實現各個節點的信息同步和狀態管理。數據采集可以使用MQTT、AMQP、JMS等標準消息協議連接,數據采用JSON格式進行編解碼,傳輸過程使用Kafka或Storm來進行快速傳輸,數據處理使用Spark或Flink會有很好的效果,而傳統Hadoop的MapReduce則會遇到啟動慢、實時性差的一些問題。Spark是采用“小步快跑”的批處理策略,基于內存的數據管理機制避免了MapReduce的數據反復IO問題,可以大幅度提升性能。Flink則能提供“即時”的數據處理能力,當然,這與傳統的很多軟件可能并不兼容,所以還是替代不了Spark,可以結合起來使用。流數據存儲可以分為多級,像梯級水庫一樣進行管理,實時處理的采用內存,熱數據采用Redis、MongoDB等,而冷數據和定期抽樣數據可以采用傳統文件系統和關系數據庫存儲。在數據處理中,數據存儲應該全部采用異步方式,而且盡量避免調用文件和傳統數據庫存儲系統,以免影響數據流動,造成延遲、丟失數據。對于日志數據,已經有完整的解決方案,比如ELK(ElasticSearch、Logstash、Kinbana)、Flume等等,而且可以通過容器技術快速安裝、部署。現在,流數據處理再也不是高端產品和大型互聯網公司的專利了,小型隊伍照樣可以玩得轉。不過,要維護一個流系統的長期運行和不斷升級,還是需要一個專業隊伍的,成本也是不菲的。
????流數據的可視化得益于HTML5、WebSocket和Node.JS等技術和平臺,已經可以較為輕松地完成,實現實時的數據更新和高動態的可視化效果,開發出以前難以想象的流暢效果,而且可以運行在很多種Web平臺和設備之上。Byron Ellis對這些技術的使用做了實用的介紹,但如果使用SuperMap iClient 9D里面的SDK,則可以更為輕松地完成非常炫酷的Web動態效果(已經集成好了,不要說我沒告訴你喲)。
????
????在Spark里面,所有的數據統計分析、回歸分析、分類識別乃至機器學習的算法也都是可以在流數據上面使用的,這些能力非常強大。不過,也需要注意到分段統計的這些傳統算法在處理持續的流數據方面的局限性,也期待具有更好的“流式數據專用”處理算法。不過,Byron Ellis沒有告訴你的是,在SuperMap的系列平臺中,iServer、iObject、iDesktop都能夠利用Spark的能力對空間和非空間數據進行處理,然后直接發布到Web可視化前端,所具有的流數據處理和分析能力可以說是潛力無限啊!
轉載于:https://my.oschina.net/u/2306127/blog/1535226
總結
以上是生活随笔為你收集整理的如何做流数据分析,Byron Ellis来告诉你...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse build path
- 下一篇: Ubuntu 软件包管理APT