1. 程式人生 > >大資料利器2018版

大資料利器2018版

類別 名稱
(可重點關注加粗部分)
官網 備註
查詢引擎 Phoenix https://phoenix.apache.org/ Salesforce公司出品,Apache HBase之上的一個SQL中間層,完全使用Java編寫
Presto http://prestodb.io/ Facebook開源的分散式SQL查詢引擎,適用於互動式分析查詢,資料量支援GB到PB位元組
Shark http://shark.cs.berkeley.edu/
Spark上的SQL執行引擎,已演化成Spark-SQL和Hive on Spark
Pig http://pig.apache.org/ 基於Hadoop MapReduce的指令碼語言
Cloudera Impala http://www.cloudera.com/content/cloudera/en/products-and-services/cdh/impala.html 參照Google Dremel實現,能執行在HDFS或HBase上,使用C++開發。Cloudera聲稱,基於SQL的Impala資料庫是面向Apache Hadoop的領先的開源分析資料庫。
Apache Drill https://drill.apache.org/ 參照Google Dremel實現,無主節點的實時的分散式查詢引擎。相容ANSI SQL(國際標準SQL語言)語法作為介面,支援對本地檔案,HDFS,HIVE, HBASE,MongeDB作為儲存的資料查詢,檔案格式支援Parquet、CSV、 TSV以及JSON這種無模式無關(schema-free)的資料。
Apache Tajo http://tajo.apache.org/ 一個執行在YARN上支援SQL的分散式資料倉庫
Kylin http://kylin.apache.org/
http://kylin.apache.org/cn/
一個開源的分散式分析引擎,提供Hadoop/Spark之上的SQL查詢介面及多維分析(OLAP)能力以支援超大規模資料,最初由eBay Inc. 開發並貢獻至開源社群。它能在亞秒內查詢巨大的Hive表。
Hive http://hive.apache.org/ 基於Hadoop MapReduce的SQL查詢引擎
Calcite https://calcite.apache.org/ 起源於Hive,源名optiq,2014年5月獨立出來後更名為Calcite,一個動態資料管理框架。它將資料儲存和資料處理分離出去,專注於成為配置應用與一個或者多個數據儲存位置以及資料處理引擎的中介軟體。獨立於儲存與執行的SQL解析、優化引擎,廣泛應用於各種離線、搜尋、實時查詢引擎,如Drill、Hive、Kylin、Solr、flink、Samza等。
流式計算 Facebook Puma   實時資料流分析
Twitter Rainbird   分散式實時統計系統,如網站的點選統計
Yahoo S4 http://incubator.apache.org/s4/ Java開發的一個通用的、分散式的、可擴充套件的、分割槽容錯的、可插拔的無主架構的流式系統
jStrom https://github.com/alibaba/jstorm 阿里開源的經過優化的Java版Storm
Flink https://flink.apache.org/ 到2018年,Flink已經很成熟了,生態也逐漸豐富,流式(實時)計算和離線計算通吃
Twitter Storm http://storm.incubator.apache.org/ 使用Java和Clojure實現
迭代計算 Apache Hama https://hama.apache.org/ 建立在Hadoop上基於BSP(Bulk Synchronous Parallel)的計算框架,模仿了Google的Pregel。
Apache Giraph https://giraph.apache.org/ 建立在Hadoop上的可伸縮的分散式迭代圖處理系統,靈感來自BSP(bulk synchronous parallel)和Google的Pregel
HaLoop https://code.google.com/p/haloop/ 迭代的MapReduce
Apache Tez https://tez.apache.org/ 支援DAG作業的開源計算框架,它可以將多個有依賴的作業轉換為一個作業從而大幅提升DAG作業的效能。
Twister http://www.iterativemapreduce.org/ 迭代的MapReduce
圖形資料庫 FlockDB https://github.com/twitter-archive/flockdb 推特開發的FlockDB是一種非常快、擴充套件性非常好的圖形資料庫,擅長儲存社交網路資料,最近一次更新時間為2016年
Neo4j https://neo4j.com/ 基於Java的高效能的NOSQL圖形資料庫,它將結構化資料儲存在網路上而不是表中
離線計算 Hadoop MapReduce http://hadoop.apache.org/ 經典的大資料批處理系統
Berkeley Spark http://spark.apache.org/
http://shark.cs.berkeley.edu/
使用Scala語言實現,和MapReduce有較大的競爭關係,效能強於MapReduce,也可做離線計算,但是秒級的,不如Flink毫秒級的
Flink https://flink.apache.org/ 和Spark類似的,同時適應於實時計算和離線計算
Apache Ignite http://ignite.apache.org/ 記憶體資料組織框架是一個高效能、整合化和分散式的記憶體計算和事務平臺
DataTorrent http://www.datatorrent.com/ 基於Hadoop2.X構建的實時流式處理和分析平臺,每秒可以處理超過10億個實時事件
嵌入式DB SQLite https://www.sqlite.org/ 經典的嵌入式SQL庫
Firebird http://www.firebirdsql.org/ 從Interbase派生出來的,支援SQL,支援事務
物件儲存 Ozone https://hadoop.apache.org/ozone/ 2018新增的Hadoop新成員
鍵值儲存 LevelDB https://code.google.com/p/leveldb/ Google開源的高效KV程式設計庫,注意它只是個庫
RocksDB http://rocksdb.org/ Facebook開源的可嵌入式的支援持久化的key-value儲存系統,基於Google的LevelDB,但提高了擴充套件性可以執行在多核處理器上
HyperDex http://hyperdex.org/ 下一代KV儲存系統,支援strings、integers、floats、lists、maps和sets等豐富的資料型別
TokyoCabinet http://fallabs.com/tokyocabinet/ 日本人Mikio Hirabayashi(平林幹雄)開發的一款DBM資料庫,注意它只是個庫(大名鼎鼎的DBM資料庫qdbm就是Mikio Hirabayashi開發的),讀寫非常快
Voldemort http://www.project-voldemort.com/voldemort/ 一個分散式鍵值儲存系統,是Amazon Dynamo的一個開源克隆,LinkedIn開源
Amazon Dynamo https://github.com/dynamo/dynamo 亞馬遜的KV模式的儲存平臺,無主架構
Tair http://tair.taobao.org/ 淘寶出品的高效能、分散式、可擴充套件、高可靠的KV結構儲存系統,專為小檔案優化,並提供簡單易用的介面(類似Map),Tair支援Java和C版本的客戶端
TiKV https://github.com/tikv/tikv Rust 語言編寫的分散式鍵值系統(KVS),它採用Raft協議保證資料的強一致性,同時使用MVCC+2PC的方式實現了分散式事務的支援
Apache Accumulo https://accumulo.apache.org/ 一個可靠的、可伸縮的、高效能的排序分散式的KV儲存系統,參照Google Bigtable而設計,建立在Hadoop、Thrift和Zookeeper之上。
Anna https://github.com/ucbrise/anna 伯克利RISE實驗室(RISE實驗室的前身是赫赫有名的伯克利AMP實驗室,開發了著名的Spark、Mesos、Tachyon等)推出的鍵值儲存資料庫,也是一個具備驚人的存取速度、超強的伸縮性和優秀的一致性的KVS
Redis http://redis.io/ 使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、單機版KV資料庫。從2010年3月15日起,Redis的開發工作由VMware主持
表格儲存 OceanBase https://github.com/alibaba/oceanbase 支援海量資料的高效能分散式資料庫系統,實現了數千億條記錄、數百TB資料上的跨行跨表事務
Amazon SimpleDB http://aws.amazon.com/cn/simpledb/ 一個可大規模伸縮、用 Erlang 編寫的高可用資料儲存
Vertica http://www.vertica.com/ 惠普2011收購Vertica,Vertica是傳統的關係型資料庫,基於列儲存,同時支援MPP,使用標準的SQL查詢,可以和Hadoop/MapReduce進行整合
Cassandra http://cassandra.apache.org/ Hadoop成員,Facebook於2008將Cassandra開源,基於O(1)DHT的完全P2P架構
HyperTable http://hypertable.org/ 搜尋引擎公司Zvents針對Bigtable的C++開源實現
FoundationDB https://foundationdb.com/ 支援ACID事務處理的NoSQL資料庫,提供非常好的效能、資料一致性和操作彈性
PaxosStore https://github.com/Tencent/paxosstore 微信出品,參照Google MegaStore實現的分散式儲存系統,廣泛支撐微信線上應用,峰值過億TPS,執行在數千臺伺服器上。
MemSQL http://www.memsql.com/ 前Facebook工程師創辦的,號稱世界上最快的分散式關係型資料庫,相容MySQL但快30倍,能實現每秒150萬次事務,原理是僅用記憶體並將SQL預編譯為C++。
ScyllaDB https://www.scylladb.com/
http://www.scylladb.cn/
由大神KVM之父Avi Kivity建立的NoSQL資料庫,世界級效能領先的NoSQL列儲存資料庫,C++改寫的Cassandra,完全相容Apache Cassandra
HBase http://hbase.apache.org/ Bigtable在Hadoop中的實現,最初是Powerset公司為了處理自然語言搜尋產生的海量資料而開展的專案
時間序列資料庫
(TSDB)
openTSDB http://opentsdb.net/ 基於HBase的分散式的、可伸縮的時間序列資料庫,和Grafana結合使用
KairosDB https://kairosdb.github.io/ 基於Cassandra的分散式的、可伸縮的時間序列資料庫
Prometheus https://prometheus.io/ 開源的服務監控系統和時序列資料庫,由社交音樂平臺SoundCloud在2012年開發,常和Grafana結合使用
Druid http://druid.io/ 注意不是阿里的Druid,開源的、快速和近實時的海量資料OLAP系統,誕生於Metamarkets,後核心人員創立了IMPLY公司開發Druid及相關產品,按時間來進行分割槽(Segment),並且是面向列的儲存
RRDtool https://oss.oetiker.ch/rrdtool/ 輪詢式資料庫,適合時間序列的資料
Graphite https://graphiteapp.org/ 時序資料庫,作用是儲存和聚合監控資料並繪製圖標,不負責資料的收集
Pinot https://github.com/linkedin/pinot 來自 Linkedin的開源的實時、分散式OLAP資料儲存方案
InfluxDB https://github.com/influxdata/influxdb
https://www.influxdata.com/
開源的時序資料庫,使用GO語言開發,特別適合用於處理和分析資源監控資料這種時序相關資料,但叢集版本收費,和Grafana結合使用
檔案儲存 CouchDB http://couchdb.apache.org/ 面向文件的資料儲存,號稱是“一款完全擁抱網際網路的資料庫”,它將資料儲存在JSON文件中,這種文件可以通過Web瀏覽器來查詢,並且用JavaScript來處理。它易於使用,在分散式上網路上具有高可用性和高擴充套件性。
MongoDB https://www.mongodb.org/ C++ 語言編寫的文件型資料庫
Alluxio https://www.alluxio.org/ 原名Tachyon,2016改名為Alluxio,高容錯的以記憶體為中心的虛擬的分散式儲存系統,吞吐量要比HDFS高300多倍。加州大學伯克利分校的AMPLab基於Hadoop的核心元件開發出一個更快的版本Tachyon,它從底層重構了Hadoop平臺。
KFS http://code.google.com/p/kosmosfs/ GFS的C++開源版本
HDFS http://hadoop.apache.org/ GFS在Hadoop中的實現
資源管理 Twitter Mesos http://mesos.apache.org/ 開源分散式資源管理框架,它被稱為是分散式系統的核心。最初是由加州大學伯克利分校的AMPLab開發的,後在Twitter得到廣泛使用。
Hadoop Yarn http://hadoop.apache.org/ 類似於Mesos
日誌收集系統 Facebook Scribe https://github.com/facebook/scribe Facebook開源的日誌收集系統,能夠從各種日誌源上收集日誌,儲存到一箇中央儲存系統(可以是NFS,分散式檔案系統等)上,以便於進行集中統計分析處理,常與Hadoop結合使用,Scribe用於向HDFS中Push日誌
Cloudera Flume http://flume.apache.org/ Cloudera提供的日誌收集系統,支援對日誌的實時性收集
Logstash http://www.logstash.net/ 日誌管理、分析和傳輸工具,可配合kibana、ElasticSearch組建成日誌查詢系統
Kibana http://www.elasticsearch.org/overview/kibana/ 為日誌提供友好的Web查詢頁面
訊息系統 StormMQ http://stormmq.com/ 基於netty的訊息佇列,Java語言開發
RocketMQ https://rocketmq.apache.org/ 阿里開源的類似於Kafka的分散式訊息佇列
ZeroMQ http://zeromq.org/ 很底層的高效能網路庫
RabbitMQ https://www.rabbitmq.com/ 在AMQP基礎上完整的,可複用的企業訊息系統
Apache ActiveMQ http://activemq.apache.org/ 能力強勁的開源訊息匯流排
PhxQueue https://github.com/Tencent/phxqueue 微信開源的一款基於Paxos協議實現的高可用、高吞吐和高可靠的分散式佇列,保證At-Least-Once Delivery。在微信內部廣泛支援微信支付、公眾平臺等多個重要業務。
Jafka https://github.com/adyliu/jafka Java版本開源的、高效能的跨語言Kafka,最早是由Apache孵化的Kafka(由LinkedIn捐助給Apache)克隆而來
Pulsar https://pulsar.apache.org/ 由雅虎開發並開源的下一代訊息系統,Kafka的競品
Apache Kafka http://kafka.apache.org/ Linkedin於2010年12月份開源的分散式訊息系統,它主要用於處理活躍的流式資料,由Scala寫成
分散式服務 ZooKeeper http://zookeeper.apache.org/ 分散式鎖服務,PoxOS演算法的實現,對應Google的Chubby
rethinkdb https://github.com/rethinkdb/rethinkdb  設計用來儲存 JSON 文件的分散式資料庫,可通過簡單操作實現多機分散式儲存。支援表的聯合和分組查詢。 特點: 簡單程式設計模型 JSON 資料模型和一致性 分散式聯合查詢、子查詢、聚合查詢和原子更新操作 Hadoop 風格的 map/reduce
Nacos https://github.com/alibaba/nacos 阿里開源的一個更易於構建雲原生應用的動態服務發現、配置和服務管理平臺
PhxPaxos https://github.com/tencent-wechat/phxpaxos 微信後臺團隊自主研發的一套基於Paxos協議的多機狀態拷貝類庫。它以庫函式的方式嵌入到開發者的程式碼當中, 使得一些單機狀態服務可以擴充套件到多機器,從而獲得強一致性的多副本以及自動容災的特性。 這個類庫在微信服務裡面經過一系列的工程驗證,並且我們對它進行過大量的惡劣環境下的測試,使其在一致性的保證上更為健壯。
QJM http://hadoop.apache.org/ Hadoop內建的JournalNode,用於NameNode元資料容災,儲存NameNode元資料日誌,節點間的資料同步可以考慮
Bookeeper https://bookkeeper.apache.org/ 和JournalNode類似
etcd https://github.com/coreos/etcd 一個高可用的鍵值儲存系統,主要用於共享配置和服務發現。etcd是由CoreOS開發並維護的,靈感來自於 ZooKeeper 和 Doozer,它使用Go語言編寫,並通過Raft一致性演算法處理日誌複製以保證強一致性。
RPC Apache Avro http://avro.apache.org/ Hadoop中的RPC
PhxRPC https://github.com/tencent-wechat/phxrpc 微信後臺團隊推出的一個非常簡潔小巧的基於Protobuf的RPC框架(實現語言為C++),編譯生成的庫只有450K
sofa-pbrpc https://github.com/baidu/sofa-pbrpc 百度開源的,基於Protobuf的C++實現的RPC
Dubbo https://dubbo.incubator.apache.org 阿里開源的RPC,實現語言為Java
gRPC http://www.grpc.io/
https://github.com/grpc/grpc
一個高效能、通用的開源RPC框架,其由Google主要面向移動應用開發並基於HTTP/2協議標準而設計,基於ProtoBuf(Protocol Buffers)序列化協議開發,且支援眾多開發語言。
Finagle https://twitter.github.io/finagle/ Twitter基於Netty開發的支援容錯的、協議無關的RPC框架
Thrift http://thrift.apache.org/ RPC,支援C++/Java/PHP等眾多語言
叢集管理 Nagios http://www.nagios.org/ 監視系統執行狀態和網路資訊的監視系統
CDAP https://github.com/caskdata/cdap CAST DATA APPLICATION PLATFORM,開源的大資料應用統一集平臺,幫助應用開發者和系統管理員基於Hadoop技術棧來構建、測試、部署、管理資料應用程式,由Datasets、Programs、 Services、Tools等元件組成。
Hue http://gethue.com/ 開源的Apache Hadoop UI系統,由Cloudera Desktop演化而來
Ganglia http://ganglia.sourceforge.net/ UC Berkeley發起的一個開源叢集監視專案,設計用於測量數以千計的節點。
Ranger https://hortonworks.com/apache/ranger/ 一個集中式安全管理框架,它可以對Hadoop生態的元件如Hive、Hbase進行細粒度的資料訪問控制。通過操作Ranger控制檯,管理員可以輕鬆的通過配置策略來控制使用者訪問HDFS資料夾、HDFS檔案、資料庫、表、欄位許可權。這些策略可以為不同的使用者和組來設定,同時許可權可與hadoop無縫對接。
Kafka Manager https://github.com/yahoo/kafka-manager Web視覺化Kafka管理軟體
osquery https://osquery.io/ Facebook開源的一個SQL驅動作業系統檢測和分析工具,支援像SQL語句一樣查詢系統的各項指標,可以用於OSX和Linux作業系統,它使得底層作業系統分析和監控效能更加直觀
Apache Ambari http://ambari.apache.org/ 一種基於Web的工具,支援Apache Hadoop叢集的供應、管理和監控。Ambari已支援大多數Hadoop元件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeeper、Sqoop和Hcatalog等。Apache Ambari 支援HDFS、MapReduce、Hive、Pig、Hbase、Zookeepr、Sqoop和Hcatalog等的集中管理。
基礎設施 SSTable   源於Google,orted String Table
RecordIO   源於Google
Flat Buffers https://github.com/google/flatbuffers 針對遊戲開發的,高效的跨平臺序列化庫,相比Proto Buffers開銷更小,因為Flat Buffers沒有解析過程
Protocol Buffers http://code.google.com/p/protobuf/ Google公司開發的一種資料描述語言,類似於XML能夠將結構化資料序列化,可用於資料儲存、通訊協議等方面。它不依賴於語言和平臺並且可擴充套件性極強。
Consistent Hashing   1997年由麻省理工學院提出,目標是為了解決因特網中的熱點(Hot spot)問題,初衷和CARP十分類似,基本解決了在P2P環境中最為關鍵的問題——如何在動態的網路拓撲中分佈儲存和路由。
Netty http://netty.io/ JBOSS提供的一個java開源框架,提供非同步的、事件驅動的網路應用程式框架,用以快速開發高效能、高可靠性的網路伺服器和客戶端程式。
Seastar http://seastar.io/ 現代硬體上的高效能C++非同步框架,Scylla完全基於Seastar庫,KVM之父Avi Kivity大神建立
Proxygen https://github.com/facebook/proxygen Facebook開源的支援SPDY 3.1的HTTP框架
libPhenom https://github.com/facebook/libphenom Facebook釋出的一個C語言事件框架,用於構建高效能和高可擴充套件的系統。支援多執行緒、提供記憶體管理和常用資料結構、json處理。
BloomFilter   布隆過濾器,1970年由布隆提出,是一個很長的二進位制向量和一系列隨機對映函式,可以用於檢索一個元素是否在一個集合中,優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪除困難。
搜尋引擎 Nutch https://nutch.apache.org/ 開源Java 實現的搜尋引擎,誕生Hadoop的地方。
Lucene http://lucene.apache.org/ 一套資訊檢索工具包,但並不包含搜尋引擎系統,它包含了索引結構、讀寫索引工具、相關性工具、排序等功能。
SolrCloud   基於Solr和Zookeeper的分散式搜尋, Solr4.0 的核心元件之一,主要思想是使用 Zookeeper 作為叢集的配置資訊中心
Solr https://lucene.apache.org/solr/ Solr是基於Lucene的搜尋。
ElasticSearch http://www.elasticsearch.org/
http://www.elasticsearch.cn/
開源的(Apache2協議),分散式的,RESTful的,構建在Apache Lucene之上的的搜尋引擎。
Sphinx http://sphinxsearch.com 一個基於SQL的全文檢索引擎,可結合MySQL、PostgreSQL做全文檢索,可提供比資料庫本身更專業的搜尋功能,單一索引可達1億條記錄,1000萬條記錄情況下的查詢速度為0.x秒(毫秒級)。
SenseiDB http://senseidb.com Linkin公司開發的一個開源分散式實時半結構化資料庫,在全文索引的基礎封裝了Browse Query Language (BQL,類似SQL)的查詢語法。
資料探勘 Mahout http://mahout.apache.org/ Hadoop成員,目標是建立一個可擴充套件的機器學習庫
Iaas OpenStack https://www.openstack.org/ 美國國家航空航天局和Rackspace合作研發的,以Apache許可證授權雲平臺管理的專案,它不是一個軟體。這個專案由幾個主要的元件組合起來完成一些具體的工作,旨在為公共及私有云的建設與管理提供軟體的開源專案。6個核心專案:Nova(計算,Compute),Swift(物件儲存,Object),Glance(映象,Image),Keystone(身份,Identity),Horizon(自助門戶,Dashboard),Quantum & Melange(網路&地址管理),另外還有若干社群專案,如Rackspace(負載均衡)、Rackspace(關係型資料庫)。
Docker http://www.docker.io/ 應用容器引擎,讓開發者可打包應用及依賴包到一個可移植的容器中,然後釋出到Linux機器上,也可實現虛擬化。
Kubernetes https://github.com/GoogleCloudPlatform/kubernetes/ 由Google開源的,Docker編寫的容器編排引擎,支援自動化部署、大規模可伸縮、應用容器化管理。支援公有云,私有云,混合雲,多重雲。簡稱K8s,是用8代替8個字元“ubernete”而成的縮寫。是一個開源的,用於管理雲平臺中多個主機上的容器化的應用,Kubernetes的目標是讓部署容器化的應用簡單並且高效(powerful),Kubernetes提供了應用部署,規劃,更新,維護的一種機制。ETCD是Kubernetes提供預設的儲存系統,儲存所有叢集資料。
Imctfy https://github.com/google/Imctfy/ Google開源的Linux容器
關係資料庫 PhxSQL https://github.com/tencent-wechat/phxsql 微信開源的基於MySQL的強一致高可用分散式資料庫
TiDB https://github.com/pingcap/tidb