FiloDB:用于大數據分析的分布式數據庫

jopen 9年前發布 | 24K 次閱讀 FiloDB

 

近期,TupleJump杰出工程師、Spark和Cassandra的用戶和貢獻者、Spark Job Server的聯合創建人和維護者Evan Chan 詳細介紹 了用于大數據分析的分布式數據庫FiloDB,對其主要特點和所包含模塊進行了分析。

在當今的大數據時代,越來越多的企業需要對結構化的數據進行分析和查詢,需要對流數據進行快速處理和更新。以視頻分析為例,存儲和分析系統可能每天處理的事件超過30億個,并且要針對實時發生的事件進行統計和分析。如此大規模、高速度的數據處理迫切需要高可擴展性、易于更新和獲取新數據、支持快速的分析查詢、支持極其靈活查詢的系統的支持。

作為一種列存儲格式, Apache Parquet 很好的實現了節省空間和減少IO的目的,滿足了上述問題的部分需求。但是,Parquet是一種讀優化的格式,存在不支持冪等寫、沒有針對小更新的寫優化、不適合時間序列和IoT等缺點。因此,很多開發人員轉向了 Apache Cassandra 這種NoSQL數據庫。Cassandra很好的實現了水平可擴展、數據建模非常靈活、操作簡單、實時和機器數據的獲取容易等特性。但是,該數據庫支持簡單查詢,而且是面向OLTP(聯機事務處理)的。為了更好的解決上述問題, TupleJump 提出了一種開源、分布式、列存儲數據庫——FiloDB。

作為一種OLAP(聯機分析處理),FiloDB可以獲取機器數據、事件數據和時間序列數據等各種類型的流數據,然后進行非常快速的分析查詢。其主要特點包括:

  • 分布式。FiloDB在設計之初便考慮其底層平臺為Apache Cassandra等分布式存儲平臺。因此,FiloDB支持Apache Spark采用并行查詢的方式來加速分析。
  • 列存儲。FiloDB通過使用帶有字典壓縮等節省空間技術的列存儲來帶來性能的提升。其性能與Parquet不相上下,比運行在Cassandra 2.x上的Spark要快1到2個數量級。
  • 版本化。FiloDB增量的增加一列或者若干行作為一個新的版本。相比于基于文件的技術,FiloDB提供更多的靈活性,使得回滾操作變得簡單。

FiloDB使用Apache Cassandra作為其存儲引擎,使用Apache Spark作為其計算層。Apache Cassandra作為一套開源分布式Key-Value存儲系統,具有分布式、基于column的結構化和高可擴展性等特點。之前,很多用戶已經嘗試把 Apache Spark和Cassandra表結合在一起,進行更加豐富的分析。然而,Cassandra CQL表格面向行的存儲方式使得把大量數據導入到Spark非常慢。FiloDB充分利用了列存儲的優勢和Apache Spark的靈活性和豐富性,使得Cassandra的處理速度實現了100倍的提升。

此外,FiloDB使用Apache Spark SQL和DataFrame作為其主要的查詢機制。用戶可以使用常見的SQL語法進行查詢或者使用Spark的JDBC連接器鏈接Tableau等工具進行數據查詢。同時,Spark的機器學習MLlib庫以及圖形處理的GraphX都可以用到數據中。通過Spark DataFrame進行數據獲取也非常容易。FiloDB支持通過任何JDBC數據源、Parquet和Avro文件、Cassandra表等等進行數據獲取。其中,還包括從Spark Streaming和Apache Kafka來插入數據。

在流應用方面,FiloDB可以接受來自Apache Kafka的流事件、時間序列和IoT應用類型數據的一次性獲取。而且,FiloDB可以通過簡單的SQL語句,完成極快速的特設分析。數據庫中的每一行都有一個分割和排列鍵。使用相同鍵的寫操作是冪等的。冪等寫支持事件數據的一次完全存儲。

最后,使用Kafka+Spark+Cassandra+FiloDB可以很好的實現整個Lamba架構。不需要Cassandra和 Hadoop作為雙重獲取通道,使用SMACK棧(Spark/Scala,Mesos,Akka,Cassandra和Kafka)可以有效減少架構的資金投入。

目前,該開源項目已經放置在 GitHub 中。用戶通過git clone下載后,可以直接啟動 filo-cli 或者將其作為一個Spark數據源來使用。例如,通過下列命令即可驗證數據集中的元數據:

./filo-cli --command list --dataset gdelt

FiloDB團隊表示 ,非常希望用戶能夠反饋在Cassandra和Spark使用的案例或者進行代碼貢獻。這些反饋可能會直接影響到FiloDB下一步的一些特性。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!