IBM提出大數據的五個特徵:Volume(大量)、Velocity(高速)、Variety(多樣)、Value(價值)、Veracity(真實性)。大數據主要解決兩個問題:大數據的計算 & 大數據的存儲。隨着大數據相關技術的不斷成熟,大數據已經廣泛應用於各大行業,典型應用如電商網站商品推薦,天氣預報,分布式服務架構中的日志分析系統等。
node
當前數據處理大致分爲兩類OLTP(On-Line Transaction Processing:聯機事物處理)和OLAP(On-Line Analytical Processing:聯機分析處理)。spa
OLTP:傳統關系型數據庫的主要應用,面向基本的、日常的事物處理,如銀行交易。blog
OLAP:數據倉庫(Data WareHouse)系統的主要應用,支持復雜的分析操做,側重決策支持,如商品推薦。class
OLAP多以分布式文件系統做爲數據來源,目前應用廣泛的HDFS(Hadoop Distributed File System:Hadoop分布式文件系統)是當前流行的大數據存儲技術,其思想源於Google的三篇經典論文:im
GFS(Google File System:Google文件系統):一個分布式文件系統。
img
Page Rank(網頁排名):根據網頁被其他網頁引用的次數計算網頁的排名,具體實現依賴大表(BigTable)和倒排索引(與根據索引查找內容的操做相反,根據內容查找索引)。
co
BigTable:Google設計用於處理海量數據、分布式的、非關系型數據庫。用一張大表來存儲數據,通過空間的擴展提高數據查詢效率,以空間換時間。
360
Hadoop主要解決大數據的存儲問題,提供離線大數據處理方案(Map Reduce),支持Spark、Impala等數據處理方案。實時大數據處理方案以Storm爲代表,數據在內存數據庫(如Redis)中保存。大數據平臺從下往上可分爲五層:數據來源、數據採集、數據處理、數據挖掘、大數據應用。本文以下圖爲據簡述大數據中的典型技術方案。data
數據來源:系統中可以採集到的數據,如用戶數據、業務數據等,也包含系統運行時產生的日志數據等。
ps
數據採集:不同數據源生成數據類型格式存在差異,在數據採集前可能增加數據總線(如京東JBus)對業務進行解耦,Sqoop和Flume是常用的數據採集工具。
Sqoop:用於和關系型數據庫進行交互,使用SQL語句在Hadoop和關系型數據庫間傳送數據,Sqoop使用JDBC連接關系型數據庫。
Flume:一個高可用、高可靠、分布式的海量日志採集、聚合和傳輸的系統。一個Flume代理由三個部分組成:Source、Channel和Sink。Source類似於接受緩衝器,將接收的事件存儲在一個或多個Channel中。Channel被動存儲事件,直到事件被Sink使用。Sink從Channel提取事件將其傳給HDFS或者下一個Flume代理。Flume使用不同的Source接收不同的網絡流,如使用Avro Flume接收Avro(一種數字序列化格式)事件。其支持的流行網絡流如:Th