photon 传输大数据_photon 接收大数据 - CSDN
  • Photon Server

    2015-04-09 22:49:45
    Photon 是什么 Photon原意是指光量子。在这里是指exitgames开发的MMO服务器端引擎。 Photon包含两个部分。一部分是一个socket服务器,另一部分是其针对各个平台编写的sdk。这些平台包括了:android, Flash, iPhone,...
    
    Photon 是什么
    Photon原意是指光量子。在这里是指exitgames开发的MMO服务器端引擎。
    Photon包含两个部分。一部分是一个socket服务器,另一部分是其针对各个平台编写的sdk。这些平台包括了:android, Flash, iPhone, iPad, .NET., Unity 3D, Windows,甚至还有silverlight。这也意味着Photon的发布也包括两个部分,Client SDK Release和Server SDK Update。 目前Server SDK的版本是v2.4.5,而Client SDK的版本是v6.2.0。
    Photon 和其他MMO服务器端引擎有什么不同
    这里有一幅图可以供大家参考。
    
    当然还有几处是值得一提的:
    
    1. Photon的API已经不限于C#了。
    2. Photon可以支持HTTP,则意味着它或许还可以作为其他用途,比方说专用的Ajax服务器。
    3. Photon的socket server是用c++实现的,效率自然不是java可以比拟的。
    4. Photon已经通过私有协议完成对象的二进制序列化。大家也不必操心去笨手笨脚的自己去实现了。
    5. Photon支持UDP。对于某些需求来说,这就具备了技术上的可行性了。
    Photon 的实际应用

    事实上Photon和Unity3d之间的合作是有战略意义的。了解Unity3d的朋友一定知道island这个sample。这里有一段视频就是展示如何在Unity3d中使用Photon Client SDK。不得不说,Photon和Unity3d的风格很接近:支持广泛,效率良好,易于上手。


    Photon概述 Photon是一个开发框架,用来构建实时MMO游戏,并支持多个平台。如同我们在Photon Socket 简介里介绍的一样,它包含一个Server SDK和一个Client SDK。 Photon提供一个低延时的通讯层,会根据需求选择TCP或UDP,来分别通过"可靠传输"和"非可靠传输"的方式发送"命令"。这些术语在本文都会有详细的解释。但在开始的时候,我希望大家明白,Photon是一个基于"操作"和"事件"的框架。这么做的目的是为了简化开发游戏系统的代价。这个系列的后续文章里我们会通过一系列例子来说明这点。 在服务器端,每一个独立的程序都被称作"线应用"(Lite Application)。它们内置了一些基础的"操作",以使开发人员更关注他们的业务逻辑而非底层实现。 下面我们就开始介绍这些在开发中经常会使用术语或类。 Class LitePeer 我们从下面这个客户端的工作流开始,介绍一个最常见的Photon的运行步骤。大家可以大概理解一个服务器端程序是如何建立"房间"(Room)并且让用户"加入"(Join)进去。在"房间"中每一个用户都是一个"活动者"(Actor),并有一个房间内唯一的标记。
    • 创建一个LitePeer类的实例对象,并准备在下面步骤中调用该对象的方法
    • 调用Connect()方法来尝试连接服务器,并通过实现IPhotonPeerListener.PeerStatusCallback来得到连接状态的通知,成功的状态是StatusCode.Connect。
    • 周期性的调用Service()方法来获取事件,同时发送"命令"(比如每秒十次)
    • 调用OpJoin()来加入游戏,通过实现OperationResult()来得到连接状态的通知,成功的状态是LiteOpCode.Join
    • 调用OpRaiseEvent()向服务器发送数据
    • 通过实现IPhotonPeerListener.EventAction()来获取服务器的数据更新
    • 调用LitePeer.OpLeave()离开游戏,若OperationResult()返回LiteOpCode.Leave则表示服务器端已经确认成功离开。
    • 调用Disconnect()以断开连接,通过PeerStatusCallback()得到连接状态的通知,StatusCode.Disconnect为成功断开连接。
    通过上述流程,我们可以发现,这些已经介绍到的方法可以分为以下三类:
    • 异步操作:比如Connect(),OpJoin(),OpRaiseEvent(),OpLeave()
    • 异步回调:比如OperationResult(),用来返回异步主动操作的结果。值得注意的是,这种返回一般和异步操作是以一问一答的形式出现的。
    • 事件:不确定合适会被触发,比如PeerStatusCallback()。
    通讯层(Level) PhotonServer SDK和Client SDK之间的通讯可以分为三个通讯层。
    • 通讯层:Service, Connect, Disconnect 还有 StatusCallback这些都是直接对应 连接状态的。它们和UDP/TCP协议都一一对应。
    • 逻辑层:内置的"操作","状态"和"事件"都算作是逻辑层的一部分,我们可以通过方法的名称把它们分辨出来,比如OpJoin,OperationResult,PeerStatusCallback。
    • 应用层:我们自己游戏中的业务逻辑一般被列在这个层中。比如我们可以通过实现OpCustom(),来发送自定义的"操作"。
    大部分情况下,我们不必控制通讯层。然而了解客户端和服务器端的通讯机制依然有意义。 Interface IPhotonPeerListener IPhotonPeerListener被定义来接受服务器端事件,下列方法需要被实现。
    • PeerStatusCallback:用来得到通讯层的连接状态变化的通知,比如connect, disconnect, errors, compare,这些状态都被定义在StatusCode这个枚举里。
    • OperationResult:用来得到逻辑层操作的回调,比如(join, leave)
    • EventAction:用来得到应用层的事件回调
    • DebugReturn:只在调试中使用
    同时下列属性也值得关注
    • TimePingInterval:设置客户端对服务器的Ping间隔
    • RoundTripTime:用来指定"可靠信道"的往返间隔。可以简单理解为,在"可靠信道"里发送数据包的时候,依靠RoundTripTime和RoundTripTimeVariance来判断单位时间内响应是否超时。
    • RoundTripTimeVariance:RoundTripTime允许的方差。
    • ServerTimeInMilliSeconds:服务器端的计时器,以微秒为单位。
    操作(Operation) 操作是我们用来描述对Photon服务器远程方法调用(RPC)的术语。也就是说,操作是在服务器端被实现,然而在客户端被调用。就像所有的方法,他们有参数和返回值。Photon负责处理操作的调用机制,而我们只需要定义和调用即可。 在服务器端,操作运行于Photon内核之上。默认由Exit Games(Photon开发公司)提供的服务器端程序叫做线应用(Lite Application)。LitePeer类继承自PhotonPeer并实现了所有被继承的基础操作的方法。 关于这些基础操作,最典型的例子就是join和raise event。在客户端,这两个操作对应的就是LitePeer类的OpJoin和OpRaiseEvent这两个方法。由于他们已经被LitePeer实现了,所以在应用层你可以放心来调用。 自定义操作(Custom Operation) Photon是可拓展的。比如游戏程序中,你可能需要在服务器端持久化游戏世界的某些状态,也需要在客户端确认这些信息是否同步。所以你需要自己实现一些业务逻辑,所有这些没有被内置实现的操作都叫做自定义操作。实现这些操作一般都是服务器端程序员的工作,而调用这些远程方法及更新客户端则是客户端程序员的工作。 在定义自定义操作的时候,名字和参数数目是不受限制的,但为了节省带宽,这些操作名和参数是会被二进制化成字节码。事实上,Photon会用一个唯一的code标识每一个操作,这个code就被称为操作码(opCode)。 在调用自定义操作就是在客户端调用OpCustom(),Photon发送一个哈希表的数据结构来调用远程方法。 事件(Event) 不像操作是主动调用的方法,事件是通过暴露回调方法来得到通知。事件可能是由服务器端或者其他客户端发出的。 一般来说,得到事件的通知是由于受到操作的影响,比如你进入一个游戏房间,这个房间里的其他客户端应该得到通知。当然有自定义操作就有自定义事件。大部分事件带有关于这个事件的描述数据,这也是用哈希表来作为数据结构的。 段(Fragmentation) 超过1KB的数据都会被拆成以1KB为单位的消息包,并且会在传输到对点之后自动重组。这就意味着有些包含很大数据量的命令会导致其后的命令延时。所以经常调用Service() 或 SendOutgoingCommands()是绝对必要的。你可以检查PhotonPeer.QueuedOutgoingCommands这个属性是否归零来了解是否队列里的命令是否都发出去了。你也可以检查debug输出里的是否有"UDP package is full",这有时候是会发生的。 非可信数据(Unreliable data) 有些数据需要保证其实时,然而对其准确性和丢失率并无很高要求,这类数据被称为非可信数据。有些数据要求务必准确,并且需要保证发送的顺序即接收的顺序,这类数据被称为可信数据。事实上,可信数据一般基于TCP协议,而非可信数据基于UDP协议。当然,TCP的通讯效率明显低于UDP,而且是单播的,UDP却可以组播。 在游戏程序中,我们可以根据需求来使用这两种传输方式。比如在FPS游戏中,移动信息可以作为非可信数据,因为其要频繁更新,并且可以接受一定的误差因为可以很快被之后的消息更正,而对话信息则必须是可信数据,因为顺序错误或者消息丢失是不能被接受的。 信道(Channels) .net的客户端已经支持多信道。这个特性允许客户端和服务器之间可以并行传输消息。这就意味,如果我们把某些特别容易造成延时的命令或事件放在一个独立的信道里,它就不会导致那些有实时性要求的数据等待太久。当然你不可以跨信道发送事件。 默认情况下,每一个PhotonPeer对象实例有两条信道,并且0号信道是默认用来发送操作的信道。而如加入房间或离开房间则是通过2号信道发送的,这么做是为了让业务更清楚。在这两条以外其实还有一条后台信道,即255号信道,用来发送网络连接和断开的消息,这样我们就可以把主动断开网络和意外性的断开网络封装成一种情况。 信道也是分优先级的,低号码的信道会被放在UDP协议来优先发送。举例来说,对话消息可能会被放在1号信道,而移动消息则被放到0号信道。那么当聊天信息发送延时的时候,不会导致实时性要求更高的移动消息被阻塞。 TCP 如Flash或Silverlight的客户端是不支持的UDP协议的,这就意味着我们只能把TCP协议作为最底层协议。这虽然不是使用Photon的最佳实践,但也只能如此。 而在TCP协议下,我们无法使用非可信数据的传输效率高和组播这样的特性。当然,我们的业务代码也可以简化很多。 可序列化数据类型(Serializable Datatypes) 从服务器SDK 1.8.0和.net客户端5.6.0开始,Photon支持的可序列化数据类型有了一次大的变化。ArrayList(弱类型数组)被放弃,而Arrays(强类型数组)和Hashtable被支持。具体可以参考以下列表:
    • String / string
    • Boolean / bool
    • Byte / byte (unsigned)
    • Int16 / short (signed)
    • Int32 / int (signed)
    • Int64 / long
    • Single / float
    • Double / double
    • Array (支持以上类型的强类型数组, 但长度限于 Short.MaxValue,而且二位数组是不被支持的。 )
    • Hashtable (需注意的是Hashtable[] 是不被支持的。对一个Hashtable对象,虽然可以同时使用不同类型的数值作为它的键,但从传输性能上考虑,最好不要出现这种情况。因为一旦出现一个Hashtable的键有多个类型的情况,该对象的读取会被拆成多个子命令,每一个键都会需要一个子命令。)
    组播属性(broadcasting Property) 线应用可以用来在服务器端为客户端维护数据一致性,在同一个房间的玩家需要将彼此的数据同步,而对客户端而言,整个过程也许就像是读写对象的属性一样。 通过Photon内置的组播选项可以轻松的实现组播属性的功能。在服务器端的属性发生改变时,响应的事件会被触发以通知所有需要被通知的玩家更新数据,除了属性的修改者(因为这是不需要的)。 下列方法就是用来将属性写回服务器端:
    • LitePeer.OpSetPropertiesOfActor
    • LitePeer.OpSetPropertiesOfGame
    • LitePeer.OpJoin(值得一提的是,玩家可以加入一个还没有被创建出来的游戏房价,也就是说,服务器端不会对加入的房间做检查,你需要自己来完成)
    而下列方法用来从服务器端读取属性并缓存在客户端本地:
    • OpGetPropertiesOfActor
    • OpGetPropertiesOfGame
    需要注意的是,线应用目前不支持删除属性,也不支持用含宽字符的字符串作为组播属性的键值。而属性方法(.net中可以把方法包装成属性)也暂时不被支持。

    展开全文
  • Unity 使用Photon Server 创建一个简单聊天室总结 参考教程:基于PhotonServer单服聊天室 完整Github工程(服务器):MyGameServer 完整Github工程(Unity客户端):PhotonTest  初步了解使用Photon插件如何...

    Unity 使用Photon Server 创建一个简单聊天室

    参考教程:基于PhotonServer单服聊天室
    完整Github工程(服务器):MyGameServer
    完整Github工程(Unity客户端):PhotonChatRoom
    数据库用户列表操作见另一篇:Unity C# 连接SQL Server数据库,实现获取和添加登录注册的用户列表

      初步了解使用Photon插件如何进行通信,按照上面链接的教程走了一遍,掌握了一些简单操作。


    MyGameServer服务器配置

    工程结构


    客户端、服务器规定通用操作码与数据结构

    项目名、文件夹名、文件名 说明
    Common 客户端、服务端共同需要的标准数据结构,同时生成在Unity工程的目录下,作为DLL插件,见下图补充。
    Code 操作码。枚举类,用来作为判断条件信息。
    OpCode (Operation Code)操作码。先通过判断这个操作码才会进入下面两个操作码的处理。包含两个枚举值:Account(帐号)、Chat(聊天)。
    AccountCode 用户子操作码。包含两个枚举值:Register(注册)和 Login(登录)。
    RoomCode 聊天室子操作码。包含四个枚举值: Enter(进入)、Add(新的连接)、Talk(聊天)、Leave (离开)。
    Dto (Data Transfer Object)数据传输对象。用来作为通信的数据结构,需要加[Serializable]特性才能被序列化传输,这里使用Json作为传输中介。
    AccountDto 用户信息结构。包含两个字符串:AccountName(用户名)和 Password(密码)。
    RoomDto 房间信息结构。包含一个列表:AccountList(用户列表)。

      将Common生成到Unity工程目录下。方便Untiy直接调用。

      传输Dto时需要转换成Json,添加LitJson插件。


    服务器结构

    项目名、文件夹名、文件名 说明
    MyGameServer 服务器,分三层结构,至下而上分别是:Model、Cache、Logic。需要引用Photon的DLL,见下图补充。
    Model 模型层。存放基础数据结构,用户模型和房间模型。
    AccountModel 用户模型。包含一个整型 ID、两个字符串分别是用户名和密码。
    RoomModel 房间模型。包含一个整型 ID、一个字典客户端和用户模型的映射。还有查询、添加、删除用户的基本方法。
    Cache 缓存层。用于存放模型列表,对模型的操作等。
    Factory 工厂。用来获取AccountCache和RoomCache的单例。
    AccountCache 用户缓存。包含所有用户ID和用户模型的映射字典,还有所有在线客户端和用户模型的映射字典,以及相关注册登录的方法。
    RoomCache 房间缓存。包含一个房间模型,以及客户端进入离开房间的方法。
    Logic 逻辑层。客户端的缓存的数据 和 服务器之间逻辑处理。
    Handler 处理抽象类。包含两个抽象方法 OnRequest 和 OnDisconnect ,分别是处理客户端发来的请求,以及当客户端下线时的处理。还有一个发送数据到客户端的方法。
    AccountHandler 用户处理。继承于Handler,用户处理当客户端发来请求时的处理(注册、登录),并回复响应处理结果。
    RoomHandler 房间处理。继承于Handler,处理当用户进入房间、离开房间、以及用户聊天的信息处理。
    log4net.config log for net。从别的Photon样例工程复制过来,拿来输出自定义日志用的配置。
    MyApplication 整个服务器的入口。继承至ApplicationBase。当有客户端连接时调用CreatePeer,连接客户端。
    MyClientPeer 连接的进来的客户端。通过它接收、处理、发送客户端的信息。

      服务器所需要添加的引用,添加在服务器工程lib目录下,从Photon的lib目录下找到下面这些DLL。

      配置到Photon,便于启动服务器。
    配置文件点我:PhotonServer.config


    客户端结构

    UI介绍

    对象名 说明
    Photon Manager 包含PhotonManager类,用于处理客户端与服务端通信的桥梁。
    LoginPanel 登录UI界面。两个按钮分别是登录到聊天房间,以及进入注册界面。
    RegisterPanel 注册UI界面。用于注册帐号。
    ChatCanvas 聊天UI界面。上部分分别是显示聊天内容,以及用户列表。下部分分别是聊天信息输入和发送信息。

    客户端脚本介绍

    PhotonManager

      Photon客户端管理。实现了IPhotonPeerListener接口。

        //
        //  PhotonManager
        //
    
        private void Awake()
        {
            instance = this;                            //客户端单例
            peer = new PhotonPeer(this, protocol);  //创建客户端,协议是UDP
    
            DontDestroyOnLoad(accountReceiver);
        }
    
        private void Update()
        {
            if (!connected)
                peer.Connect(serverAddress, applicationName);           //连接服务器
            if(Time.time > currentTime)
            {
                peer.Service();                                             //获取服务,并不需要每帧获取,简单优化
                currentTime += updateIntervalTime;
            }
        }
    
        private void OnDestroy()
        {
            peer.Disconnect();                      //断开连接
        }
    
        //向服务器发请求,参数:操作码,参数数据字典,子操作码
        public void OnOperationRequest(byte opCode, Dictionary<byte, object> parameters = null, byte SubCode = 0)
        {
            //规定键'80'对应的是子操作码
            parameters[80] = SubCode;
            peer.OpCustom(opCode, parameters, true);
        }
    
        //服务端发送过来的响应
        public void OnOperationResponse(OperationResponse response)
        {
            Debug.Log(response.ToStringFull());
            byte subCode = (byte)response.Parameters[80];
    
            switch ((OpCode)response.OperationCode)         //判断发过来操作码,做出响应。
            {
                case OpCode.Account:
                    accountReceiver.OnReceive(subCode, response);
                    break;
                case OpCode.Room:
                    chatRceiver.OnReceive(subCode,response); 
                    break;
            }
        }
    

    IReceiver

      接收响应接口。

    interface IReceiver
    {
        //接受服务器响应,参数:子操作码,响应信息。
        void OnReceive(byte subCode, OperationResponse response);
    }
    

    AccountReceiver

      接收操作用户登录注册的信息响应。实现 IReceiver接口。

        public AccountView accountView;
    
        public void OnReceive(byte subCode, OperationResponse response)
        {
            switch ((AccountCode)subCode)
            {
                case AccountCode.Register:
                    if (response.ReturnCode == 0)               //返回码正确时
                    {
                        accountView.OnHideRegisterPanel();      //关闭注册面板。
                    }
                    break;
                case AccountCode.Login:
                    if (response.ReturnCode == 0)               //返回码正确时
                    {
                        //告诉服务器可以将进入房间了
                        PhotonManager.Instance.OnOperationRequest((byte)OpCode.Room, new Dictionary<byte, object>(), (byte)RoomCode.Enter);                     
                    }
                    break;
            }
        }
    

    ChatReceiver

      接收操作聊天房间的信息响应。实现 IReceiver接口。

        public void OnReceive(byte subCode, OperationResponse response)
        {
            switch ((RoomCode)subCode)
            {
                case RoomCode.Enter:                    //本人进入房间处理
                    if (response.ReturnCode == 0)
                    {
                        loginCanvas.SetActive(false);   //隐藏登录面板
                        chatCanvas.SetActive(true);     //显示聊天面板
    
                        //获取房间信息并初始化
                        chatView.Init(GetResponseFromJson<RoomDto>(response));
                    }
                    break;
                case RoomCode.Add:                      //房间有新用户处理
                    chatView.AddAccount(GetResponseFromJson<AccountDto>(response));
                    break;
                case RoomCode.Talk:                     //房间有人说话处理
                    string text = response.Parameters[0].ToString();
                    chatView.Append(text);
                    break;
                case RoomCode.Leave:                    //房间有人离开处理
                    chatView.LeaveRoom(GetResponseFromJson<AccountDto>(response));
                    break;
                default:
                    break;
            }
        }
    
        //从获取到的Json信息中提取出Dto
        private Dto GetResponseFromJson<Dto>(OperationResponse response)
        {
            return JsonUtility.FromJson<Dto>(response.Parameters[0].ToString());
        } 

    AccountView

      用户登录和注册界面UI响应。

    
        //登录和注册发送用户信息,子操作码分别是:AccountCode.Login和AccountCode.Register
        public void SendAccountRequest(string accountName,string password,byte subCode)
        {
            AccountDto dto = new AccountDto();      
            dto.AccountName = accountName;
            dto.Password = password;
            Dictionary<byte, object> parameters = new Dictionary<byte, object>();
            parameters[0] = JsonUtility.ToJson(dto);
            PhotonManager.Instance.OnOperationRequest((byte)OpCode.Account, parameters, subCode);
        }
    

    ChatView

      聊天房间界面UI响应,包括一个用户名(字符串)和对应Perfab的字典。用户的进入和离开都操作这个字典。


    测试结果

    1. 运行测试。

    2. 登录一个没注册的号,登录失败。

    3. 注册一个充满优秀品质的帐号。

    4. 登录该账户并发送一条惊人的信息。

    5. 在另一个客户端登录另一个帐号,并发送信息。

    6. 回到原来的客户端查看。


    数据库用户列表操作见另一篇:Unity C# 连接SQL Server数据库,实现获取和添加登录注册的用户列表

    展开全文
  • 看了这个知识名词,我才知道,知道的越多,不知道的越多,这些技术估计一辈子都搞不完了。。能搞完的一定是神才。我说的搞完是精通哦,源码级别的 1.关系型数据库管理系统 MySQL 世界上最流行的开源数据库。...

    在这里插入图片描述
    转载:https://www.iteblog.com/archives/2607.html

    看了这个知识名词,我才知道,知道的越多,不知道的越多,这些技术估计一辈子都搞不完了。。能搞完的一定是神才。我说的搞完是精通哦,源码级别的

    1.关系型数据库管理系统

    MySQL 世界上最流行的开源数据库。
    PostgreSQL 世界上最先进的开源数据库。
    Oracle Database - 对象关系数据库管理系统。
    Teradata - 高性能 MPP 数据仓库平台。

    2. 框架

    Bistro - 用于批处理和流分析的通用数据处理引擎。它基于一种新的数据模型,该模型通过函数来表示数据,并通过列操作来处理数据,而不仅仅使用 MapReduce 或 SQL 等传统方法来设置操作。
    IBM Streams - 分布式处理和实时分析平台。可以和大数据生态系统中的许多流行技术 (Kafka、HDFS、Spark等) 集成
    Apache Hadoop -分布式处理框架。集成了 MapReduce(并行处理)、YARN(作业调度)和HDFS(分布式文件系统)。
    Tigon - 高吞吐的实时流处理框架。
    Pachyderm - Pachyderm 是一个基于 Docker 和 Kubernetes 的数据存储平台,可以用在重复的数据处理和分析场景。
    Polyaxon - 一个可复制、可扩展的机器学习和深度学习平台。

    3.分布式编程

    AddThis Hydra - 分布式数据处理和存储系统,最初由 AddThis 开发。
    AMPLab SIMR - 在 Hadoop MapReduce v1 上运行 Spark。
    Apache APEX - 用于大数据流和批处理的统一企业平台。
    Apache Beam - 用于定义和执行数据处理工作流的统一模型和一组特定于语言的sdk。
    Apache Crunch - 一个简单的Java API,用于处理 Join 和数据聚合之类的任务,这些任务在普通 MapReduce 上实现起来很繁琐。
    Apache DataFu - 由 LinkedIn 为 Hadoop 和 Pig 开发的用户定义函数的集合。
    Apache Flink - 分布式处理引擎框架,用于在无界和有界数据流上进行有状态计算。
    Apache Gearpump -基于 Akka 的实时大数据流引擎。
    Apache Gora - 内存数据模型和持久性框架。
    Apache Hama - BSP(Bulk Synchronous Parallel)计算框架。
    Apache MapReduce -在集群上使用并行分布式算法处理大型数据集的编程模型。
    Apache Pig - 用于表达 Hadoop 数据分析程序的高级语言。
    Apache REEF - 用来简化和统一低层大数据系统的保留性评估执行框架
    Apache S4 - 一个常规用途的、分布式的、可伸缩的、容错的、可插入式的平台,主要用于处理连续的数据流
    Apache Spark - 快速、通用的大规模数据处理引擎
    Apache Spark Streaming - 实时流处理引擎,属于 Spark 的一部分.
    Apache Storm - Twitter 开发的,可在 YARN 上进行流处理的框架。
    Apache Samza -基于 Kafka 和 YARN 的流处理的框架
    Apache Tez - 基于 YARN 的,可执行复杂 DAG (有向无环图)任务的应用程序框架。
    Apache Twill - YARN 上的抽象,减少了开发分布式应用程序的复杂性。
    Baidu Bigflow - 一个允许编写分布式计算程序的接口,它提供了许多简单、灵活、强大的 API 来轻松处理任何规模的数据。
    Cascalog - 数据处理和查询库。
    Cheetah - MapReduce 之上的高性能,用户自定义数据仓库。
    Concurrent Cascading - Hadoop 上的数据管理/分析框架。
    Damballa Parkour - 为 Clojure 开发的 MapReduce 库。
    Datasalt Pangool - 可替代 MapReduce 范式.
    DataTorrent StrAM -实时计算引擎,旨在以一种尽可能畅通的方式支持分布式、异步、实时的内存大数据计算,同时最小化开销和对性能的影响。
    Facebook Corona - Hadoop 的增强,可以消除单点故障。
    Facebook Peregrine - Map Reduce 框架.
    Facebook Scuba - 分布式内存数据存储。
    Google Dataflow - 创建数据管道来帮助我们摄取、转换和分析数据。
    Google MapReduce - map reduce 框架.
    Google MillWheel - 容错流处理框架。
    IBM Streams - 用于分布式处理和实时分析的平台。 提供开箱即用的高级分析工具包,如地理空间,时间序列等。
    JAQL - 声明式编程语言,用于处理结构化、半结构化和非结构化数据。
    Kite - 一组库、工具、示例和文档,重点在于简化在 Hadoop 生态系统之上构建系统的过程。
    Metamarkets Druid - 用于实时分析大型数据集的框架。
    Netflix PigPen - 是 Clojure 语音的 Map-Reduce,可以编译到 Apache Pig 或者 Cascading 中
    Nokia Disco - 诺基亚开发的 MapReduce 框架。
    Onyx - 云的分布式计算。
    Pinterest Pinlater - 异步作业执行系统。
    Pydoop - 用 Python 编写,并采用 MapReduce 和 HDFS 技术对 Hadoop 进行扩展的 API。
    Ray - 用于构建和运行分布式应用程序的快速而简单的框架。
    Rackerlabs Blueflood - 多租户分布式度量处理系统
    Skale - NodeJS 上的高性能分布式数据处理框架。
    Stratosphere - 通用集群计算框架。
    Streamdrill - streamdrill 在计算不同时间窗口上的事件流活动非常有用,并找出最活跃的时间窗口。
    streamsx.topology - 用于在 Java,Python 或 Scala 中构建 IBM Streams 应用程序的库。
    Tuktu - 易于使用的批处理和流式计算平台,可以使用 Scala,Akka 和 Play 构建!
    Twitter Heron - 由 Twitter 开发的一个实时、分布式、容错的流处理引擎,主要用于代替 Storm。
    Twitter Scalding - 用于 Map Reduce 作业的 Scala 库,基于 Cascading 构建。
    Twitter Summingbird - Summingbird 是一个类库,它允许我们编写看起来像原生 Scala 或 Java 集合转换的 MapReduce 程序,并在许多着名的分布式 MapReduce 平台上执行,包括 Storm 和 Scalding,由 Twitter 开发。
    Twitter TSAR - Twitter 开发的时间序列聚合器
    Wallaroo - 超快弹性数据处理引擎,可以使有状态、分析、流处理和事件驱动的 AI 应用程序能够快速投入生产,而无需考虑规模。它为开发人员提供了几种语言的 api 来实现他们的自定义业务逻辑。

    4.分布式文件系统

    Ambry - 分布式对象存储,支持存储数万亿个小的不可变对象或者数十亿个大对象。
    Apache HDFS - 提供对应用程序数据的高吞吐量访问的分布式文件系统。
    Apache Kudu - Hadoop 的存储层可实现对数据的快速分析。
    BeeGFS - 之前称为 FhGFS,是一种并行分布式文件系统。
    Ceph Filesystem - 一个支持POSIX接口的文件系统
    Disco DDFS - 分布式文件系统。
    Facebook Haystack - 对象存储系统。
    Google Colossus - 分布式文件系统 (GFS2).
    Google GFS - 分布式文件系统。
    Google Megastore - 可扩展、高可用的存储。
    GridGain - GGFS, Hadoop 兼容的内存文件系统。
    Lustre file system - 高性能分布式文件系统。
    Microsoft Azure Data Lake Store - Azure 上兼容 HDFS 的存储
    Quantcast File System QFS - 开源分布式文件系统。
    Red Hat GlusterFS - 横向扩展网络附加的存储文件系统。
    Seaweed-FS -简单且高度可伸缩的分布式文件系统。
    Alluxio - 开源的基于内存的分布式存储系统。
    Tahoe-LAFS - 去中心化的云存储系统。
    Baidu File System - 分布式文件系统。

    5.分布式索引

    Pilosa 开源的分布式位图索引,极大地加速了跨多个大规模数据集的查询。

    6.文档数据模型

    Actian Versant - 面向对象的商业数据库管理系统。
    Crate Data - 是一个开源的大规模可扩展数据存储,它不需要任何管理。
    Facebook Apollo - Facebook 的类似于 Paxos 的 NoSQL 数据库。
    jumboDB - 基于 Hadoop 的面向文档的数据存储。
    LinkedIn Espresso - 可水平扩展的面向文档 NoSQL 数据存储。
    MarkLogic - 模式无关的企业 NoSQL 数据库技术。
    Microsoft Azure DocumentDB - NoSQL 云数据库服务,支持 MongoDB 协议
    MongoDB - 面向文档的数据库系统。
    RavenDB - 支持事务的开源文档数据库。
    RethinkDB - 支持表 join 和 group by 等查询的文档数据库。

    7.Key Map 数据模型

    注意: 业界存在一些术语混淆,存在两种不同的东西被称为“列式数据库”。这里列出的一些是围绕“键 - 映射”数据模型构建的分布式持久性数据库:所有数据都有一个(可能是组合的)键,键值对的映射与之关联。在某些系统中,多个这样的值映射可以与一个键关联,这些映射称为“列族”(值映射键称为“列”)。

    另一种也称为“列式数据库”的技术,特点是它在磁盘或内存中如何存储数据。这些系统将所有行的相同列值数据存储在一起。因此,需要做更多的工作来获得给定键的所有列,但是需要更少的工作来获得给定列的所有值。

    前一种在这里称为“键映射数据模型”。这些和 Key-value Data Model 存储之间的界限相当模糊。

    后者更多地是关于存储格式而不是数据模型,这些数据库我们把它归到 Columnar Databases 里面去了。

    你可以到 Prof. Daniel Abadi 的博文: 了解更多关于如何区分这两存储系统的讨论。.

    Apache Accumulo - 构建在 Hadoop 之上的分布式键值存储系统。
    Apache Cassandra - 受 BigTable 启发的、面向列的分布式数据存储。
    Apache HBase - 受 BigTable 启发的、面向列的分布式数据存储。
    Baidu Tera - 受 BigTable 启发的一种大型分布式表格存储系统,具有高性能、可伸缩等存储特点,最初的设计是为了管理万亿量级的超链和网页信息。
    Facebook HydraBase - 由 Facebook 开发的 HBase 演化版本。
    Google BigTable - 面向列的分布式数据存储。
    Google Cloud Datastore - 一个完全托管的无模式数据库,用于在 BigTable 上存储非关系数据。
    Hypertable - 受 BigTable 启发的、面向列的分布式数据存储。
    InfiniDB - 通过MySQL接口访问,并使用大规模并行处理来并行化查询。
    Tephra - 使 HBase 支持事务
    Twitter Manhattan - Twitter 开发的实时、多租户分布式数据库。
    ScyllaDB - 使用 C++ 编写的面向列的分布式数据存储,完全兼容 Apache Cassandra。
    Key-value 数据模型
    Aerospike - 一个分布式,高可用的 K-V 类型的 NOSQL 数据库。提供类似传统数据库的ACID操作。
    Amazon DynamoDB - 分布式 key/value 存储, Dynamo 论文的实现。
    Badger - 一个快速、简单、高效和持久的键值存储,是用 Go 编写。
    Bolt - 可在 Go 语言中使用的嵌入式键值数据库.
    BTDB - .Net 中的 Key Value 数据库,包含 Object DB Layer, RPC, dynamic IL 等等。
    BuntDB - Go 语言的一个快速,可嵌入,基于内存的键/值数据库,支持自定义索引和地理空间。
    Edis - 协议兼容 Redis 的数据库,可替代 Redis。
    ElephantDB - 专门用于从 Hadoop 导出数据的分布式数据库。
    EventStore - 分布式时间序列数据库。
    GridDB - 一款高度可扩展的 NoSQL 数据库,非常适用于物联网和大数据领域,还具有高可靠性和高性能这些特性。
    HyperDex - 可扩展的下一代键值和文档存储,具有多种功能,包括一致性,容错性和高性能。
    Ignite - 分布式内存网格数据库,具有可持久化,分布式事务,分布式计算等特点,此外还支持丰富的键值存储以及SQL语法。
    LinkedIn Krati - 一个简单的持久化数据存储,具有非常低的延迟和高吞吐量。
    Linkedin Voldemort - 分布式 key/value 存储系统。
    Oracle NoSQL Database - Oracle 公司开发的分布式 key/value 存储系统。.
    Redis -一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
    Riak - 去中心化的数据库存储。
    Storehaus -Twitter 开发的用于异步 key/value 存储的类库。
    SummitDB - 基于内存的 NoSQL 键/值数据库,具有磁盘持久性,并支持 Raft 一致性算法。
    Tarantool - 一个高效的 NoSQL 数据库和一个 Lua 应用服务器。
    TiKV - 一个基于 Rust 的分布式键值数据库,并受谷歌 Spanner 和 HBase 的启发。
    Tile38 - 具有空间索引和实时地理围栏的地理位置数据库。支持各种对象类型,包括纬度/经度点,边界框,XYZ切片,Geohashes和GeoJSON
    TreodeDB - key-value 存储,支持数据副本、分片以及提供原子多行写。

    图数据模型

    AgensGraph - 基于 PostgreSQL 的新一代多模型图数据库。
    Apache Giraph - 一个可伸缩的分布式迭代图处理系统, 基于 Hadoop 平台,灵感来自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。
    Apache Spark Bagel - Bagel 是谷歌 Pregel 图处理框架的 Spark 实现,支持基本的图形计算、组合器(combiners)和聚合器(aggregators)。目前已经被 GraphX 替代,在 Spark 2.0.0 版本已经被移除。
    ArangoDB - 多模型分布式数据库。
    DGraph - 一个可伸缩的、分布式的、低延迟的、高吞吐量的图数据库,旨在提供谷歌生产级别的规模和吞吐量,具有足够低的延迟,可以在 TB 级的结构化数据上为实时用户查询提供服务。
    EliasDB - 一个轻量级的基于图的数据库,不需要任何第三方库。
    Facebook TAO - TAO 是 facebook 广泛使用的分布式数据存储,用于存储和服务社交图。
    GCHQ Gaffer - Gaffer 是 GCHQ(英国政府通讯总部)于2015年12月14日在 GitHub 上公布的第一个开源项目,Gaffer 是个大规模图形数据库,可以方便存储大规模图的框架,节点和边界有数据统计,比如计数,直方图和草图。这些统计数据是时间窗口的节点和边界属性,可以根据时间动态更新。
    Google Cayley - 开源的图数据库。
    Google Pregel - 图处理框架。
    GraphLab PowerGraph - 包含 C++ 实现的 GraphLab API以及一组基于GraphLab API 构建的高性能机器学习和数据挖掘工具包。
    GraphX - 一个分布式图处理框架,它是基于 Spark 平台提供对图计算和图挖掘简洁易用的而丰富的接口,极大的方便了对分布式图处理的需求。
    Gremlin - 图遍历语言。
    Infovore - 一个 map/reduce 框架,用来处理大量的 RDF 数据集,注入 Freebase 和 DBpedia,基于 Hadoop 构建。
    Intel GraphBuilder - 基于 Hadoop 构造的大型图工具。
    JanusGraph - 开源分布式图形数据库,后端存储可以选择多种组件包括 Bigtable、HBase、Cassandra等,同时索引后端也可以选择很多种,包括 Elasticsearch、Solr、Lucene 等。
    MapGraph - 一个高级的 API 用于快速开发基于 GPU 的高性能图形分析应用。
    Microsoft Graph Engine - 一个基于内存的分布式大规模图数据处理引擎,能够帮助用户更方便地构建实时查询应用和高吞吐量离线分析平台。在此之前,它在学术界更广为人之的名称是 Trinity。
    Neo4j - 一个高性能的 NOSQL图数据库,完全由 Java 实现。
    OrientDB - 文档图形数据库。
    Phoebus - 大型图处理框架。
    Titan - 建立在 Cassandra 之上的分布式图数据库。
    Twitter FlockDB - 分布式图数据库。
    NodeXL - Microsoft® Excel® 2007, 2010, 2013 and 2016 免费开源的模板,可以很容易的探索网络图。

    列式数据库

    注意 请读一下 Key-Map Data Model 章节的说明。

    Columnar Storage - 解释什么是列式存储,以及我们什么时候需要它。
    Actian Vector - 面向列的分析数据库。
    C-Store - 面向列的 DBMS.
    ClickHouse - 一个开源的列式数据库(DBMS),主要用于在线分析处理查询(OLAP)。
    EventQL - 为大规模事件收集和分析而构建的分布式、面向列的数据库。
    MonetDB - 列式存储数据库。
    Parquet - 灵感来自于2010年 Google 发表的 Dremel 论文,是一种列式存储格式,与语言、平台无关,并且不需要和任何一种数据处理框架绑定。
    Pivotal Greenplum - 为特定目的而构建的专用分析数据仓库,它提供了一个列式存储引擎和一个传统的基于行的引擎。
    Vertica - 设计用于管理大量快速增长的数据,提供非常快的查询性能。
    SQream DB - 以色列大数据公司开发的跑在 GPU 上的大数据数据库,设计用于分析和数据仓库,使用 ANSI-92 SQL,适用于10TB到1PB的数据集。
    Google BigQuery - Google 推出的一项 Web 服务,该服务让开发者可以使用 Google 的架构来运行 SQL 语句对超级大的数据库进行操作。
    Amazon Redshift - 一个支持 SQL 查询的、快速、可扩展的列式存储数据库,它支持 PB 级的数量查询,是适用于企业级的数据仓库。
    IndexR - 一个开源的大数据存储格式,于 2017 年 1 月初正式开源,旨在通过添加索引、优化编码方式、提高 IO 效率等各种优化方式来提高计算层和存储层的数据交换效率,从而提升整体性能。
    LocustDB - 一个大规模并行且高性能的分析数据库 (analytics database),可快速处理你的所有数据,目前处于实验性阶段。

    NewSQL 数据库

    Actian Ingres - 商业支持,开源 SQL 关系数据库管理系统。
    ActorDB - 分布式的 SQL 数据库,可实现可伸缩的 K/V 存储系统。ActorDB 基于 Actor 计算模型,与传统的集中式数据库不同,ActorDB 由任意数量的被成为 actor 的独立和并发 SQL 数据库组成。
    Amazon RedShift -基于 PostgreSQL 的数据仓库服务。
    BayesDB - 一个贝叶斯数据库,内建贝叶斯查询语言 BQL,用户无需统计方面知识即可解决一些基本的科学数据问题
    Bedrock - 构建在 SQLite 之上的简单、模块化、网络化、分布式事务层。
    CitusDB - 通过分片和副本扩展 PostgreSQL。
    Cockroach - 可伸缩、地理复制、事务性数据存储。
    Comdb2 - 一个基于乐观并发控制技术的集群 RDBMS。
    Datomic - 分布式数据库旨在支持可伸缩、灵活和智能的应用程序。
    FoundationDB - 分布式数据库,受 F1 启发。
    Google F1 - 构建在 Spanner 之上的分布式 SQL 数据库。
    Google Spanner - Google的全球级的分布式数据库,具有可扩展,多版本,全球分布式、同步复制等特性。
    H-Store - 一个实验性的数据库管理系统。它专为驻线交易处理应用程序而设计。
    Haeinsa - Haeinsa 是 HBase 可线性扩展的多行,多表事务库。使用两阶段锁定和乐观并发控制来实现事务。 事务的隔离级别是可序列化的。基于 Percolator 实现。
    HandlerSocket - MySQL/MariaDB 的 NoSQL 插件。
    InfiniSQL - 无限扩展的 RDBMS.
    Map-D - GPU 内存数据库,大数据分析可视化平台.
    MemSQL - 一款内存数据库,它通过将数据存在内存中,将 SQL 语句预编译为 C++ 而获得极速执行效率。
    NuoDB - 符合 SQL/ACID 的分布式数据库。
    Oracle TimesTen in-Memory Database - 基于内存的关系数据库管理系统,具有持久性和可恢复性。
    Pivotal GemFire XD - 低延迟、基于内存、分布式 SQL 数据存储。为内存表数据提供 SQL 接口,可在 HDFS 中持久存储。
    SAP HANA - 基于内存、面向列、关系数据库管理系统。
    SenseiDB - 分布式、实时、半结构化的数据库。
    Sky - 用于灵活、高性能的行为数据分析的数据库。
    SymmetricDS - 用于文件和数据库同步的开源软件。
    TiDB - 一款定位于在线事务处理/在线分析处理的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。受 Google F1 启发。
    VoltDB - 声称是最快的内存数据库.

    时间序列数据库

    Axibase Time Series Database - 基于 HBase 的时间序列数据库,内置可视化、规则引擎和 SQL 支持。
    Chronix - 一种时间序列存储器,用于存储高度压缩的时间序列,并支持快速访问数据。
    Cube - 使用 MongoDB 来存储时间序列数据。
    Heroic - 基于 Cassandra 和 Elasticsearch 的可扩展时间序列数据库。
    InfluxDB - 分布式时间序列数据库。
    IronDB - 可扩展、通用时间序列数据库。
    Kairosdb - 和 OpenTSDB 类似,但是构建在 Cassandra 之上。
    M3DB - 一个分布式时间序列数据库,可用于长期存储实时指标。
    Newts -基于 Apache Cassandra 的时间序列数据库。
    OpenTSDB -构建在 HBase 之上的分布式时间序列数据库。
    Prometheus - 时间序列数据库和服务监控系统。
    Beringei - Facebook 的内存时间序列数据库。
    TrailDB - 用于存储和查询一系列事件的有效工具。
    Druid MetaMarket 公司研发,专为海量数据集上的做高性能 OLAP (OnLine Analysis Processing)而设计的数据存储和分析系统
    Riak-TS Riak TS 是唯一专为物联网和时间序列数据优化的企业级 NoSQL 时间序列数据库。
    Akumuli 一个数值型时间序列数据库,可以存储、处理时序列数据
    Rhombus Cassandra的时间序列对象存储。
    Dalmatiner DB 快速分布式度量数据库
    Blueflood 一种用于摄取和处理时间序列数据的分布式系统。
    Timely 是一个时间序列数据库应用程序,它提供了基于 Accumulo 和 Grafana 的对时间序列数据的安全访问。
    SiriDB 具有集群功能的高扩展性、健壮性和快速的开源时间序列数据库。
    Thanos - Thanos 是一组组件,可以使用多个 Prometheus 部署创建具有无限存储容量的高可用度量系统。
    VictoriaMetrics - 与 Prometheus 兼容的快速,可扩展的开源 TSDB,包括单节点和群集版本。

    类 SQL 处理系统

    Actian SQL for Hadoop - 高性能交互式 SQL,可以利用它访问 Hadoop 上的数据。
    Apache Drill - 一个低延迟的分布式海量数据交互式查询引擎,使用 ANSI SQL 兼容语法,本质上是一个分布式的 MPP 查询层。目的在于支持更广泛的数据源,数据格式,以及查询语言。受 Google的Dremel 启发。
    Apache HCatalog - Hadoop的表存储管理工具。
    Apache Hive - 基于 Hadoop 的一个数据仓库工具,可以将结构化数据文件映射为一张数据库表,并提供类 SQL 查询功能.
    Apache Calcite - 一款开源 SQL 解析工具, 可以将各种 SQL 语句解析成抽象语法术AST(Abstract Syntax Tree), 之后通过操作 AST 就可以把 SQL 中所要表达的算法与关系体现在具体代码之中。
    Apache Phoenix - 构建在 HBase 之上的关系型数据库层,可以对 HBase 中的数据进行低延迟访问。
    Aster Database - 类 SQL 分析处理。
    Cloudera Impala - 实时交互 SQL 大数据查询工具,受 Dremel 启发。
    Concurrent Lingual - Cascading 上的 SQL 查询语言。
    Datasalt Splout SQL - 针对大数据集的完整 SQL 查询引擎。
    Facebook PrestoDB -分布式 SQL 查询引擎。
    Google BigQuery - Google 推出的一项 Web 服务,该服务让开发者可以使用 Google 的架构来运行 SQL 语句对超级大的数据库进行操作,是 Dremel 的实现。
    PipelineDB - 一个开源的关系数据库,它可以在实时流数据上执行 SQL 查询,并将结果增量地存储在表中。
    Pivotal HDB - Hadoop 上的类 SQL 数据仓库系统。/li>
    RainstorDB - 用于存储 PB 级结构化和半结构化数据量的数据库。
    Spark Catalyst - Apache Spark 的查询优化框架。
    SparkSQL - 使用 Spark 操作结构化的数据。
    Splice Machine - 兼具了 SQL 和 NoSQL 的各自优势,且能对操作型和分析型应用进行实时处理,具有 ACID 特性。
    Stinger - 由 Hortonworks 开发的一个彻底提升 Hive 效率的工具
    Tajo - Hadoop 之上的分布式数据仓库系统。
    Trafodion - 由惠普开发并开源的基于 Hadoop 平台的事务数据库引擎。提供了一个基于 Hadoop 平台的交易型 SQL 引擎,是一个擅长处理交易型负载的 Hadoop 大数据解决方案。

    数据摄取

    Amazon Kinesis - 一种在 AWS 上流式处理数据的平台,让您可以轻松地加载和分析流数据,同时还可让您根据具体需求来构建自定义流数据应用程序。
    Amazon Web Services Glue - 一项完全托管的提取、转换和加载 (ETL) 服务,让用户能够轻松准备和加载数据进行分析。
    Apache Chukwa - 数据采集系统。
    Apache Flume - 一个分布式的、可靠的、易用的系统,可以有效地将来自很多不同源系统的大量日志数据收集、汇总或者转移到一个数据中心存储。
    Apache Kafka - 分布式发布订阅消息系统。
    Apache NiFi - 一个易用、强大、可靠的数据处理与分发系统
    Apache Sqoop - 是一款开源的工具,主要用于在 Hadoop/Hive 与传统的数据库(Mysql、Oracle…)间进行数据的传递
    Cloudera Morphlines - 帮助将 ETL 的数据加载到 Solr、HBase 或 Hadoop 中的框架。
    Embulk - 开源的批量数据加载器,帮助在各种数据库、存储、文件格式和云服务之间传输数据。
    Facebook Scribe - 流日志数据聚合器。
    Fluentd - 用于收集事件和日志的工具。
    Google Photon - 地理分布式系统,用于实时连接多个连续流动的数据流,具有高可伸缩性和低延迟。
    Heka - 开源流处理系统。
    HIHO - 用于将不同数据源的数据和 Hadoop 进行连接的框架。
    Kestrel - 分布式消息队列系统。
    LinkedIn Databus - LinkedIn 开源的一个低延迟、可靠的、支持事务的、保持一致性的数据变更抓取系统。
    LinkedIn Kamikaze - 一种实用工具包,对 document lists 提供一系列的实现。
    LinkedIn White Elephant - 一个 Hadoop 日志收集器和展示器,它提供了用户角度的Hadoop集群可视化。
    Logstash - 一个开源的日志收集管理工具,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源。
    Netflix Suro - Netflix 开源的一款工具,它能够在数据被发送到不同的数据平台(如Hadoop、Elasticsearch)之前,收集不同应用服务器上的事件数据。
    Pinterest Secor - 实现 Kafka 日志持久性的服务
    Linkedin Gobblin -一套分布式数据集成框架,旨在简化大数据集成工作当中的各类常见任务,具体包括数据流与批量生态系统的提取、复制、组织与生命周期管理。
    Skizze - 一种概率数据结构服务和存储。
    StreamSets Data Collector - 使用一个简单的 IDE 来连续大数据摄取基础设施。
    Yahoo Pulsar - 由 Yahoo 开发并开源的一个企业级的发布订阅消息系统。
    Alooma - 实时的数据管道服务,支持将 MySQL 等数据源的数据移动到数据仓库中。

    服务编程

    Akka Toolkit - 基于 Actor 模型,提供了一个用于构建可扩展的(Scalable)、弹性的(Resilient)、快速响应的(Responsive)应用程序的平台。
    Apache Avro - 数据序列化系统。
    Apache Curator - 为 Apache ZooKeeper 开发的类库。
    Apache Karaf - Apache 旗下的一个开源项目,同时也是一个基于 OSGi 的运行环境,Karaf 提供了一个轻量级的 OSGi 容器,可以用于部署各种组件,应用程序。
    Apache Thrift - Facebook 开源的跨语言的 RPC 通信框架
    Apache Zookeeper - 一个分布式应用程序协调服务。
    Google Chubby - 一个分布式锁服务,Chubby 底层一致性实现就是以 Paxos 为基础的
    Hydrosphere Mist - 一个将 Apache Spark 分析任务和机器学习模型转换为实时、批处理或反应性 web 服务的服务。
    Linkedin Norbert - 集群管理系统。
    Mara - 一个轻量级的自定义ETL框架。
    OpenMPI - 消息传递框架。
    Serf - 去中心化的服务发现和编排解决方案。
    Spotify Luigi - 用于构建批处理作业的复杂管道的 Python 包。它处理依赖项解析、工作流管理、可视化、处理故障、命令行集成等等。
    Spring XD - 用于数据摄取、实时分析、批处理和数据导出的分布式和可扩展系统。
    Twitter Elephant Bird - 用于处理 lzop 压缩数据的库。
    Twitter Finagle - JVM的异步网络堆栈。

    调度

    Apache Airflow - Airbnb 开源的一个用 Python 编写的工作流管理平台。
    Apache Aurora - 长期运行服务和计划作业的 Mesos 框架。
    Apache Falcon - 数据管理框架。
    Apache Oozie - 工作流作业调度器。
    Azure Data Factory - 可大规模简化 ETL 的混合数据集成服务
    Chronos - 分布式和容错调度器。
    Linkedin Azkaban - 批处理工作流作业调度程序。
    Schedoscope - 用于 Hadoop 作业的敏捷调度 Scala DSL。
    Sparrow - 调度平台。

    机器学习

    Azure ML Studio - 基于云的 R、Python 机器学习平台。
    brain - JavaScript 中的神经网络。
    Cloudera Oryx - 实时大规模机器学习。
    Concurrent Pattern - Cascading 上的机器学习框架。
    convnetjs - Javascript 中的深入学习,可以在浏览器中训练卷积神经网络(或普通神经网络)。
    DataVec - 一个用于 Java 和 Scala 深度学习的矢量化和数据预处理库。Deeplearning4j生态系统的一部分。
    Deeplearning4j - 美国 AI 创业公司 Skymind 开源并维护的一个基于 Java/JVM 的深度学习框架,可使用CPU或GPU运行。
    Decider - Ruby中灵活且可扩展的机器学习。
    ENCOG - 支持多种高级算法的机器学习框架,以及支持规范化和处理数据的类。
    etcML - 在线免费文本分析工具是由美国的斯坦福大学计算机教授开发的基于成熟的文本分析引擎
    Etsy Conjecture - Scalding 中可扩展的机器学习。
    Feast - 用于管理、发现和访问机器学习特性的特性存储库。Feast 为模型训练和模型服务提供了一致的特征数据视图。
    GraphLab Create - Python 中的机器学习平台,包含大量 ML 工具包、数据工程和部署工具。
    H2O - 使用 Hadoop、R 和 Python 进行统计、机器学习和数学运行时。
    Keras - 一个高层神经网络API,Keras 由纯 Python 编写而成并基 Tensorflow、Theano 以及 CNTK 后端。受 Torch 启发。
    Lambdo 是一个工作流引擎,通过将一个分析管道(i)特征工程和机器学习(ii)模型训练和预测(iii)结合起来,通过用户定义(Python)函数实现表填充和列评估,大大简化了数据处理和分析。
    Mahout - 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。
    MLbase - 是Spark生态圈的一部分,专注于机器学习,包含三个组件:MLlib、MLI、ML Optimizer。
    MLPNeuralNet - 一个针对 iOS 和 Mac OS 系统的快速多层感知神经网络库,可通过已训练的神经网络预测新实例。
    MOA - 实时进行大数据流挖掘和大规模机器学习。
    MonkeyLearn - 让文本挖掘变得很容易,可以从文本中提取和分类数据。
    ND4J - JVM 的矩阵库,可以认为是 Java 中的 Numpy。
    nupic - 一个实现了HTM学习算法的机器智能平台。
    PredictionIO - 面向开发人员和数据科学家的开源机器学习服务,构建在 Hadoop, Mahout 和 Cascading 之上。
    RL4J - 一个与 Deeplearning4j 集成的强化学习框架
    SAMOA - 分布式流数据机器学习框架。
    scikit-learn - 专门面向机器学习的 Python 开源框架,实现了各种成熟的算法。
    Spark MLlib - 使用 Spark 实现一些常见的机器学习算法和实用程序,包括分类、回归、聚类、协同过滤、降维以及底层优化,
    Sibyl - 谷歌大型机器学习系统.
    TensorFlow - 一个采用数据流图(data flow graphs),用于数值计算的开源软件库。
    Theano - 蒙特利尔大学支持的以 Python 为核心的机器学习类库。
    Torch - 是一个基于 BSD License 的开源的机器学习的框架
    Velox - 服务于机器学习预测的系统。
    Vowpal Wabbit - 由微软和雅虎赞助的学习系统。
    WEKA - 一套机器学习软件。
    BidMach - CPU 和 GPU 加速库的机器学习库。

    Benchmarking

    Apache Hadoop Benchmarking - 测试 Hadoop 性能的微基准测试。
    Berkeley SWIM Benchmark - 真实大数据工作负载基准。
    Intel HiBench - Hadoop 基准套件。
    PUMA Benchmarking - MapReduce 应用程序的基准测试套件。
    Yahoo Gridmix3 - 来自 Yahoo 工程师团队的 Hadoop 集群基准测试。
    Deeplearning4j Benchmarks

    安全

    Apache Ranger - 是一个用在 Hadoop 平台上并提供操作、监控、管理综合数据安全的框架。
    Apache Eagle -由 eBay 公司开源的一个识别大数据平台上的安全和性能问题的开源解决方案。
    Apache Knox Gateway - Hadoop 集群中用于数据处理的 REST API 网关
    Apache Sentry - 为 Hadoop 集群中的元数据和数据存储提供集中、细粒度的访问控制。
    BDA - Hadoop 和 Spark 的漏洞检测器

    系统部署

    Apache Ambari - 一个集中部署、管理、监控Hadoop 分布式集群的工具。
    Apache Bigtop - 一个针对基础设施工程师和数据科学家的开源项目,旨在全面打包、测试和配置领先的开源大数据组件/项目,包括但不限于 Hadoop、HBase 和 Spark 。
    Apache Helix - 集群管理框架。
    Apache Mesos - 一个类似于 YARN 的集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行 Hadoop、MPI、Hypertable、Spark。
    Apache Slider - 是一个 YARN 应用程序,用于在 YARN 上部署现有的分布式应用程序。
    Apache Whirr - 运行云服务的一组 Java 类库。
    Apache YARN - 集群管理系统。
    Brooklyn - 简化应用程序部署和管理的库。
    Buildoop - 类似于 Apache BigTop,基于 Groovy 语言开发。
    Cloudera HUE - 用于与 Hadoop 交互的 web 应用程序。
    Facebook Prism - 多数据中心复制系统。
    Google Borg - Google 的内部大型集群管理系统。
    Google Omega - Google 内部第三代的集群管理框架。
    Hortonworks HOYA - 可以在 YARN 上部署 HBase 集群的应用程序。
    Kubernetes - Google 团队发起并维护的基于 Docker 的开源容器集群管理系统。
    Marathon - 一个 Mesos 框架,能够支持运行长服务。

    应用程序

    411 - 一个警报管理Web应用程序。
    Adobe spindle - 使用 Scala、Spark 和 Parquet 进行 web 分析的下一代系统。
    Apache Kiji - 基于 HBase 的实时数据采集与分析框架。
    Apache Metron - 一种多功能的安全遥测数据捕获、流分析和威胁响应平台,代表了安全数据平台的最新发展水平。
    Apache Nutch - 开源 web 爬虫程序。
    Apache OODT - NASA 开源的用于做数据管理的系统。
    Apache Tika - 使用 Java 编写的内容检测和分析框架。
    Argus - 时序监控报警平台。
    AthenaX - 一个流分析平台,允许用户使用结构化查询语言(SQL)运行生产质量的大规模流分析。
    Atlas - 用于管理维度时间序列数据的系统。
    Countly - 基于 Node.js 和 MongoDB 的开源移动和 web 分析平台。
    Domino - 运行、扩展、共享和部署模型——不需要任何基础设施。
    Eclipse BIRT - 基于 Eclipse 的报告系统。
    ElastAert - 为 ES 打造的报警监控工具。
    Eventhub - 开源事件分析平台。
    Hermes - 构建在 Kafka 之上的异步消息代理。
    HIPI Library - 使用 Hadoop 的 MapReduce 来执行图像处理任务的API。
    Hunk - Hadoop 的分析工具。
    Imhotep - 大型分析平台。
    Jupyter - 基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。
    MADlib - RDBMS 的数据处理库,用于分析数据。
    Kapacitor - 用于对时间序列数据进行处理、监视和警报的开源框架。
    Kylin - 一个开源的分布式分析引擎,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay Inc. 开发并贡献至开源社区,能在亚秒内查询巨大的Hive表。
    PivotalR - 支持在 Pivotal HD / HAWQ 以及 PostgreSQL 上运行 R。
    Rakam - 开源实时自定义分析平台,由 Postgresql, Kinesis 和 PrestoDB 提供支持。
    Qubole - 能够自动扩展 Hadoop 集群以及内置的链接器。
    Sense - 数据科学和大数据分析的云平台。
    SnappyData - 一个统一 OLTP+OLAP +流式写入的内存分布式数据库。
    Snowplow - 由 Hadoop,Kinesis,Redshift 和 Postgres 支持的企业级 Web 和事件分析。
    SparkR - 用于 Spark 的 R 前端。
    Splunk - 一款成熟的商业化日志处理分析产品。
    Sumo Logic - 基于云的日志处理分析产品。
    Talend - YARN、Hadoop、HBASE、Hive、HCatalog 和 Pig 的统一开源环境。
    Warp - 大数据示例查询工具(OS X 应用)

    搜索引擎和框架

    Apache Lucene - 一套用于全文检索和搜索的开放源码程序库
    Apache Solr - 是 Apache Lucene 项目的开源企业搜索平台。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。
    Elassandra - 是 ElasticSearch 的一个分支,经过修改,可以作为 Apache Cassandra 的插件运行,具有可扩展和灵活的点对点架构。
    ElasticSearch - 一个基于 Lucene 库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。
    Enigma.io – 免费增值的 Web 应用程序,用于对 Web 上抓取的海量数据集进行浏览,过滤,分析,搜索和导出。
    Facebook Unicorn - 社交图搜索平台.
    Google Caffeine - 一个高性能、出色的缓存类库。
    Google Percolator - 由 Google 公司开发的、为大数据集群进行增量处理更新的系统,主要用于 google 网页搜索索引服务。
    TeraGoogle - 大型搜索索引。
    HBase Coprocessor - HBase 的协处理器,Percolator 的实现。
    Lily HBase Indexer - 一款快速、简单的 HBase 的内容检索方案,它可以帮助你在 Solr 中建立 HBase 的数据索引,从而通过 Solr 进行数据检索。
    LinkedIn Bobo - 完全用 Java 编写的 Faceted Search 实现,是 Apache Lucene 的扩展。
    LinkedIn Cleo -一个灵活的软件库,用于处理一些预输入和自动完成的搜索功能。
    LinkedIn Galene - LinkedIn 的搜索架构。
    LinkedIn Zoie - 一个用 Java 编写的实时搜索/索引系统。
    MG4J - MG4J (Managing Gigabytes for Java) 是一个用 Java 编写的大型文档集合的全文搜索引擎,它是高度可定制的,高性能的,并提供了最先进的功能和新的研究算法。
    Sphinx Search Server - 全文搜索引擎。
    Vespa - 在大型数据集上进行低延迟计算的引擎。它存储和索引数据,以便可以在服务时执行对数据的查询,选择和处理。

    MySQL 分支和演进

    Amazon RDS - AWS 的 MySQL 数据库。
    Drizzle - MySQL 6.0的演进。
    Google Cloud SQL - Google 云中的 MySQL 数据库。
    MariaDB - MySQL 的一个分支,采用GPL授权许可。目的是完全兼容 MySQL,包括 API 和命令行。
    MySQL Cluster - 使用 NDB 集群存储引擎实现 MySQL 集群。
    Percona Server - MySQL 增强版,可以替代它。
    ProxySQL - MySQL 的高性能代理。
    TokuDB - TokuDB 是 MySQL 和 MariaDB 的存储引擎。
    WebScaleSQL - WebScaleSQL 是 Facebook、 Google、Twitter 和 Linkedin 四家公司的MySQL 团队发起的 MySQL 开源组织,旨在改进 MySQL 在规模和性能等方面的问题。

    PostgreSQL 分支和演进

    HadoopDB - MapReduce 和 DBMS 的混合体。
    IBM Netezza - 高性能数据仓库设备。
    Postgres-XL - 可伸缩的基于 PostgreSQL 的开源数据库集群。
    RecDB - 完全在 PostgreSQL 内部构建的开源推荐引擎。
    Stado - 仅针对数据仓库和数据集市应用程序的开源 MPP 数据库系统。
    Yahoo Everest - 由 PostgreSQL 派生的 PB 级数据库/MPP。
    TimescaleDB - 针对快速摄取和复杂查询而优化的开源时间序列数据库。
    PipelineDB - 开源的流式数据库,基于 PostgreSQL 数据库改造的,允许我们通过 SQL 的方式,对数据流做操作,并把操作结果储存起来。

    Memcached 分支和演进

    Facebook McDipper - 用于闪存的键/值缓存,设计目的在于提高闪存存储的使用效率。
    Facebook Memcached - Memcache 的分支。
    Twemproxy - 一个快速、轻量级的 memcached 和 redis 代理。
    Twitter Fatcache - 用于闪存的键/值缓存。
    Twitter Twemcache - Memcache 的分支。

    嵌入式数据库

    Actian PSQL - 由 Pervasive Software 开发的符合 ACID 的 DBMS,针对嵌入应用程序进行了优化。
    BerkeleyDB - 可为键/值数据提供高性能的嵌入式数据库。
    HanoiDB - Erlang LSM BTree 存储。
    LevelDB - Google 开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能。
    LMDB - 由 Symas 开发的基于 Btree-based 的高性能 mmap key-value 数据库
    RocksDB - Facebook 公司基于 LevelDB 开发的一款开源嵌入式数据库引擎。

    商业智能

    BIME Analytics - 商业智能云平台。
    Blazer - 使商业智能变得简单。
    Chartio - 商业智能平台,可以可视化和浏览我们的数据。
    datapine - 自助式商业智能工具。
    GoodData - 商业智能和大数据分析软件。
    Jaspersoft - 强大的商业智能套件。
    Jedox Palo - 可定制的商业智能平台.
    Jethrodata - 交互式大数据分析。
    Metabase - 一个简单、开源的方式,通过给公司成员提问,从得到的数据中进行分析、学习。
    Microsoft - 商业智能软件及平台。
    Microstrategy - 用于商业智能、移动智能和网络应用程序的软件平台。
    Numeracy - SQL 客户端和商业智能。
    Pentaho - 商业智能平台。
    Qlik - 商业智能及分析平台。
    Redash - 开源商业智能平台,支持多个数据源和计划查询。
    Saiku - 开源分析平台。
    SpagoBI - 开源商业智能平台。
    SparklineData SNAP - 基于 Apache Spark 的商业智能平台。
    Tableau - 商业智能平台。
    Zoomdata - 大数据分析平台。

    数据可视化

    Airpal - PrestoDB 的 Web UI。
    AnyChart - 一套灵活的 JavaScript (HTML5) 库,可满足您的所有数据可视化需求。
    Arbor - 一个使用 web workers 和 jQuery 创建的图可视化库。
    Banana - 可视化存储在 Solr 中的日志和带时间戳的数据,是 Kibana 的一部分。
    Bloomery - Impala 的 Web UI。
    Bokeh - 一个 Python 交互式可视化库,支持现代化 Web 浏览器,提供非常完美的展示功能。
    C3 - 基于 D3 的可重用图表库
    CartoDB - 开源的云上地理空间数据库,允许存储和可视化 web 上的数据。使用 CartoDB 可以快速创建基于地图的可视化效果。
    chartd - 响应式、视网膜兼容图表,仅需要一个 img 标签。
    Chart.js - 一套开源、简单、干净并且有吸引力的基于 HTML5 技术的 JavaScript 图表工具。
    Chartist.js - 非常简单而且实用的 JavaScript 前端图表生成器。
    Crossfilter - 一个 JavaScript 库,用于在 JavaScript 中制作交互式的仪表板,可以与 dc.js 、d3.js 一起工作。
    Cubism - 用于时间序列可视化的 JavaScript 库。
    Cytoscape - 一个专注于网络可视化和分析的开源软件。
    DC.js - 一个用于网页作图、生成互动图形的 JavaScript 函数库。
    D3 - 目前最流行的数据可视化库之一,小型,灵活,高效的数据可视化库,用来创建和操作基于数据的交互式文档。
    D3.compose - 由可重复使用的图表和组件组成复杂的、数据驱动的可视化文件。
    D3Plus - d3.js 的一组相当强大的可重用图表和样式。
    DevExtreme React Chart - 基于高性能插件的 React 图表,用于 Bootstrap 和 Material Design。
    Echarts - 一款由百度前端技术部开发的,基于Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。
    Envisionjs - 一个基于 HTML5 技术的数据可视化库
    FnordMetric - 一个开源的 Web 应用,可用于创建实时仪表板,方便可视化任何数据。
    Frappe Charts - 一个受 Github 启发的轻量级 SVG 图表库,它不依赖任何类库和框架。
    Freeboard - 让用户创建他们自己的用来监控物联网部署的仪表盘,该代码在 GitHub上免费提供,你可以通过这些仪表板展示跟踪空气质量、住宅电器、酿酒情况和实时环境条件变化。
    Gephi - 一款开源免费跨平台基于 JVM 的网络分析领域的数据可视化处理软件
    Google Charts - 一种交互式 Web 服务,可根据用户提供的数据创建图形图表
    Grafana - 一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。
    Graphite - 一款开源的监控绘图工具。
    Highcharts - 兼容 IE6+、完美支持移动端、图表类型丰富、方便快捷的 HTML5 交互性图表库。
    IPython - 一种基于 Python 的交互式解释器。相较于原生的 Python Shell,IPython 提供了更为强大的编辑和交互功能。
    Kibana - Elasticsearch 的开源数据可视化插件。
    Lumify - 开源大数据分析可视化平台。
    Matplotlib - Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。
    Metricsgraphic.js - 一个建立在 D3 基础上,为可视化和时间序列化的数据而优化的库。
    NVD3 - d3.js 的图表组件。
    Peity - 渐进式 SVG 条形图,折线图和饼图。
    Plot.ly - Plotly 为个人和协作提供在线图形,分析和统计工具,以及 Python,R,MATLAB,Perl,Julia,Arduino 和 REST 的科学图形库。
    Plotly.js 一个开源的交互式 JavaScript 图形库,建立在 d3.js 和 webgl 之上,并支持 20 多种类型的交互式图表。
    Recline - 简单而强大的库,可以使用纯 Javascript 和 HTML 构建数据应用程序。
    Redash - 查询和可视化数据的开源平台。
    ReCharts - 一个基于React组件的可组合图表库。
    Shiny - R 的 Web 应用程序框架。
    Sigma.js - 专门用于图形绘制的 JavaScript 库。
    Superset - 由 Airbnb 开发并开源一个数据探索和可视化平台,设计用来提供直观的,可视化的,交互式的分析体验。
    Vega - 一个可视化的语法。
    Zeppelin - 一个基于 Web 的 notebook,提供交互数据分析和可视化。
    Zing Charts - 一个功能强大的 JavaScript 图表。

    物联网和传感器数据

    Apache Edgent (Incubating) - 一种编程模型和具有微内核风格的运行时,可嵌入到网关和小型的物联网设备中。
    Azure IoT Hub - 托管服务,支持 IoT 设备与 Azure 之间的双向通信。
    TempoIQ - 基于云计算的传感器分析。.
    2lemetry - 物联网平台。
    Pubnub - 数据流网络。
    ThingWorx - 可用于查找数据来源,使数据与情境相关,合成数据,同时协调流程,以提供强大的Web、移动和AR 体验的平台。
    IFTTT - 一个新生的网络服务平台,通过其他不同平台的条件来决定是否执行下一条命令。
    Evrything- 使产品智能化。
    NetLytics - 用于在Spark上处理网络数据的分析平台。

    展开全文
  • 为了让大家更好地学习交流,过往记忆大数据花了一个周末的时间把Awesome Big Data里近 600 个大数据相关的调度、存储、计算、数据库以及可视化等介绍全部翻译了一遍,供大家学习交流。 关系型数据库管理系统 ...

    为了让大家更好地学习交流,过往记忆大数据花了一个周末的时间把 Awesome Big Data 里近 600 个大数据相关的调度、存储、计算、数据库以及可视化等介绍全部翻译了一遍,供大家学习交流。

    关系型数据库管理系统

    • MySQL 世界上最流行的开源数据库。
    • PostgreSQL 世界上最先进的开源数据库。
    • Oracle Database - 对象关系数据库管理系统。
    • Teradata - 高性能 MPP 数据仓库平台。

    框架

    • Bistro - 用于批处理和流分析的通用数据处理引擎。它基于一种新的数据模型,该模型通过函数来表示数据,并通过列操作来处理数据,而不仅仅使用 MapReduce 或 SQL 等传统方法来设置操作。
    • IBM Streams - 分布式处理和实时分析平台。可以和大数据生态系统中的许多流行技术 (KafkaHDFSSpark等) 集成
    • Apache Hadoop -分布式处理框架。集成了 MapReduce(并行处理)、YARN(作业调度)和HDFS(分布式文件系统)。
    • Tigon - 高吞吐的实时流处理框架。
    • Pachyderm - Pachyderm 是一个基于 Docker 和 Kubernetes 的数据存储平台,可以用在重复的数据处理和分析场景。
    • Polyaxon - 一个可复制、可扩展的机器学习和深度学习平台。

    分布式编程

    • AddThis Hydra - 分布式数据处理和存储系统,最初由 AddThis 开发。
    • AMPLab SIMR - 在 Hadoop MapReduce v1 上运行 Spark
    • Apache APEX - 用于大数据流和批处理的统一企业平台。
    • Apache Beam - 用于定义和执行数据处理工作流的统一模型和一组特定于语言的sdk。
    • Apache Crunch - 一个简单的Java API,用于处理 Join 和数据聚合之类的任务,这些任务在普通 MapReduce 上实现起来很繁琐。
    • Apache DataFu - 由 LinkedIn 为 Hadoop 和 Pig 开发的用户定义函数的集合。
    • Apache Flink - 分布式处理引擎框架,用于在无界和有界数据流上进行有状态计算。
    • Apache Gearpump -基于 Akka 的实时大数据流引擎。
    • Apache Gora - 内存数据模型和持久性框架。
    • Apache Hama - BSP(Bulk Synchronous Parallel)计算框架。
    • Apache MapReduce -在集群上使用并行分布式算法处理大型数据集的编程模型。
    • Apache Pig - 用于表达 Hadoop 数据分析程序的高级语言。
    • Apache REEF - 用来简化和统一低层大数据系统的保留性评估执行框架
    • Apache S4 - 一个常规用途的、分布式的、可伸缩的、容错的、可插入式的平台,主要用于处理连续的数据流
    • Apache Spark - 快速、通用的大规模数据处理引擎
    • Apache Spark Streaming - 实时流处理引擎,属于 Spark 的一部分.
    • Apache Storm - Twitter 开发的,可在 YARN 上进行流处理的框架。
    • Apache Samza -基于 Kafka 和 YARN 的流处理的框架
    • Apache Tez - 基于 YARN 的,可执行复杂 DAG (有向无环图)任务的应用程序框架。
    • Apache Twill - YARN 上的抽象,减少了开发分布式应用程序的复杂性。
    • Baidu Bigflow - 一个允许编写分布式计算程序的接口,它提供了许多简单、灵活、强大的 API 来轻松处理任何规模的数据。
    • Cascalog - 数据处理和查询库。
    • Cheetah - MapReduce 之上的高性能,用户自定义数据仓库。
    • Concurrent Cascading - Hadoop 上的数据管理/分析框架。
    • Damballa Parkour - 为 Clojure 开发的 MapReduce 库。
    • Datasalt Pangool - 可替代 MapReduce 范式.
    • DataTorrent StrAM -实时计算引擎,旨在以一种尽可能畅通的方式支持分布式、异步、实时的内存大数据计算,同时最小化开销和对性能的影响。
    • Facebook Corona - Hadoop 的增强,可以消除单点故障。
    • Facebook Peregrine - Map Reduce 框架.
    • Facebook Scuba - 分布式内存数据存储。
    • Google Dataflow - 创建数据管道来帮助我们摄取、转换和分析数据。
    • Google MapReduce - map reduce 框架.
    • Google MillWheel - 容错流处理框架。
    • IBM Streams - 用于分布式处理和实时分析的平台。 提供开箱即用的高级分析工具包,如地理空间,时间序列等。
    • JAQL - 声明式编程语言,用于处理结构化、半结构化和非结构化数据。
    • Kite - 一组库、工具、示例和文档,重点在于简化在 Hadoop 生态系统之上构建系统的过程。
    • Metamarkets Druid - 用于实时分析大型数据集的框架。
    • Netflix PigPen - 是 Clojure 语音的 Map-Reduce,可以编译到 Apache Pig 或者 Cascading 中
    • Nokia Disco - 诺基亚开发的 MapReduce 框架。
    • Onyx - 云的分布式计算。
    • Pinterest Pinlater - 异步作业执行系统。
    • Pydoop - 用 Python 编写,并采用 MapReduce 和 HDFS 技术对 Hadoop 进行扩展的 API。
    • Ray - 用于构建和运行分布式应用程序的快速而简单的框架。
    • Rackerlabs Blueflood - 多租户分布式度量处理系统
    • Skale - NodeJS 上的高性能分布式数据处理框架。
    • Stratosphere - 通用集群计算框架。
    • Streamdrill - streamdrill 在计算不同时间窗口上的事件流活动非常有用,并找出最活跃的时间窗口。
    • streamsx.topology - 用于在 Java,Python 或 Scala 中构建 IBM Streams 应用程序的库。
    • Tuktu - 易于使用的批处理和流式计算平台,可以使用 Scala,Akka 和 Play 构建!
    • Twitter Heron - 由 Twitter 开发的一个实时、分布式、容错的流处理引擎,主要用于代替 Storm。
    • Twitter Scalding - 用于 Map Reduce 作业的 Scala 库,基于 Cascading 构建。
    • Twitter Summingbird - Summingbird 是一个类库,它允许我们编写看起来像原生 Scala 或 Java 集合转换的 MapReduce 程序,并在许多着名的分布式 MapReduce 平台上执行,包括 Storm 和 Scalding,由 Twitter 开发。
    • Twitter TSAR - Twitter 开发的时间序列聚合器
    • Wallaroo - 超快弹性数据处理引擎,可以使有状态、分析、流处理和事件驱动的 AI 应用程序能够快速投入生产,而无需考虑规模。它为开发人员提供了几种语言的 api 来实现他们的自定义业务逻辑。

    分布式文件系统

    分布式索引

    • Pilosa 开源的分布式位图索引,极大地加速了跨多个大规模数据集的查询。

    文档数据模型

    • Actian Versant - 面向对象的商业数据库管理系统。
    • Crate Data - 是一个开源的大规模可扩展数据存储,它不需要任何管理。
    • Facebook Apollo - Facebook 的类似于 Paxos 的 NoSQL 数据库。
    • jumboDB - 基于 Hadoop 的面向文档的数据存储。
    • LinkedIn Espresso - 可水平扩展的面向文档 NoSQL 数据存储。
    • MarkLogic - 模式无关的企业 NoSQL 数据库技术。
    • Microsoft Azure DocumentDB - NoSQL 云数据库服务,支持 MongoDB 协议
    • MongoDB - 面向文档的数据库系统。
    • RavenDB - 支持事务的开源文档数据库。
    • RethinkDB - 支持表 join 和 group by 等查询的文档数据库。

    Key Map 数据模型

    注意: 业界存在一些术语混淆,存在两种不同的东西被称为“列式数据库”。这里列出的一些是围绕“键 - 映射”数据模型构建的分布式持久性数据库:所有数据都有一个(可能是组合的)键,键值对的映射与之关联。在某些系统中,多个这样的值映射可以与一个键关联,这些映射称为“列族”(值映射键称为“列”)。

    另一种也称为“列式数据库”的技术,特点是它在磁盘或内存中如何存储数据。这些系统将所有行的相同列值数据存储在一起。因此,需要做更多的工作来获得给定键的所有列,但是需要更少的工作来获得给定列的所有值。

     

    前一种在这里称为“键映射数据模型”。这些和 Key-value Data Model 存储之间的界限相当模糊。

    后者更多地是关于存储格式而不是数据模型,这些数据库我们把它归到 Columnar Databases 里面去了。

    你可以到 Prof. Daniel Abadi 的博文: 了解更多关于如何区分这两存储系统的讨论。.

    • Apache Accumulo - 构建在 Hadoop 之上的分布式键值存储系统。
    • Apache Cassandra - 受 BigTable 启发的、面向列的分布式数据存储。
    • Apache HBase - 受 BigTable 启发的、面向列的分布式数据存储。
    • Baidu Tera - 受 BigTable 启发的一种大型分布式表格存储系统,具有高性能、可伸缩等存储特点,最初的设计是为了管理万亿量级的超链和网页信息。
    • Facebook HydraBase - 由 Facebook 开发的 HBase 演化版本。
    • Google BigTable - 面向列的分布式数据存储。
    • Google Cloud Datastore - 一个完全托管的无模式数据库,用于在 BigTable 上存储非关系数据。
    • Hypertable - 受 BigTable 启发的、面向列的分布式数据存储。
    • InfiniDB - 通过MySQL接口访问,并使用大规模并行处理来并行化查询。
    • Tephra - 使 HBase 支持事务
    • Twitter Manhattan - Twitter 开发的实时、多租户分布式数据库。
    • ScyllaDB - 使用 C++ 编写的面向列的分布式数据存储,完全兼容 Apache Cassandra

    Key-value 数据模型

    • Aerospike - 一个分布式,高可用的 K-V 类型的 NOSQL 数据库。提供类似传统数据库的ACID操作。
    • Amazon DynamoDB - 分布式 key/value 存储, Dynamo 论文的实现。
    • Badger - 一个快速、简单、高效和持久的键值存储,是用 Go 编写。
    • Bolt - 可在 Go 语言中使用的嵌入式键值数据库.
    • BTDB - .Net 中的 Key Value 数据库,包含 Object DB Layer, RPC, dynamic IL 等等。
    • BuntDB - Go 语言的一个快速,可嵌入,基于内存的键/值数据库,支持自定义索引和地理空间。
    • Edis - 协议兼容 Redis 的数据库,可替代 Redis。
    • ElephantDB - 专门用于从 Hadoop 导出数据的分布式数据库。
    • EventStore - 分布式时间序列数据库。
    • GridDB - 一款高度可扩展的 NoSQL 数据库,非常适用于物联网和大数据领域,还具有高可靠性和高性能这些特性。
    • HyperDex - 可扩展的下一代键值和文档存储,具有多种功能,包括一致性,容错性和高性能。
    • Ignite - 分布式内存网格数据库,具有可持久化,分布式事务,分布式计算等特点,此外还支持丰富的键值存储以及SQL语法。
    • LinkedIn Krati - 一个简单的持久化数据存储,具有非常低的延迟和高吞吐量。
    • Linkedin Voldemort - 分布式 key/value 存储系统。
    • Oracle NoSQL Database - Oracle 公司开发的分布式 key/value 存储系统。.
    • Redis -一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。
    • Riak - 去中心化的数据库存储。
    • Storehaus -Twitter 开发的用于异步 key/value 存储的类库。
    • SummitDB - 基于内存的 NoSQL 键/值数据库,具有磁盘持久性,并支持 Raft 一致性算法。
    • Tarantool - 一个高效的 NoSQL 数据库和一个 Lua 应用服务器。
    • TiKV - 一个基于 Rust 的分布式键值数据库,并受谷歌 Spanner 和 HBase 的启发。
    • Tile38 - 具有空间索引和实时地理围栏的地理位置数据库。支持各种对象类型,包括纬度/经度点,边界框,XYZ切片,Geohashes和GeoJSON
    • TreodeDB - key-value 存储,支持数据副本、分片以及提供原子多行写。

    图数据模型

    • AgensGraph - 基于 PostgreSQL 的新一代多模型图数据库。
    • Apache Giraph - 一个可伸缩的分布式迭代图处理系统, 基于 Hadoop 平台,灵感来自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。
    • Apache Spark Bagel - Bagel 是谷歌 Pregel 图处理框架的 Spark 实现,支持基本的图形计算、组合器(combiners)和聚合器(aggregators)。目前已经被 GraphX 替代,在 Spark 2.0.0 版本已经被移除。
    • ArangoDB - 多模型分布式数据库。
    • DGraph - 一个可伸缩的、分布式的、低延迟的、高吞吐量的图数据库,旨在提供谷歌生产级别的规模和吞吐量,具有足够低的延迟,可以在 TB 级的结构化数据上为实时用户查询提供服务。
    • EliasDB - 一个轻量级的基于图的数据库,不需要任何第三方库。
    • Facebook TAO - TAO 是 facebook 广泛使用的分布式数据存储,用于存储和服务社交图。
    • GCHQ Gaffer - Gaffer 是 GCHQ(英国政府通讯总部)于2015年12月14日在 GitHub 上公布的第一个开源项目,Gaffer 是个大规模图形数据库,可以方便存储大规模图的框架,节点和边界有数据统计,比如计数,直方图和草图。这些统计数据是时间窗口的节点和边界属性,可以根据时间动态更新。
    • Google Cayley - 开源的图数据库。
    • Google Pregel - 图处理框架。
    • GraphLab PowerGraph - 包含 C++ 实现的 GraphLab API以及一组基于GraphLab API 构建的高性能机器学习和数据挖掘工具包。
    • GraphX - 一个分布式图处理框架,它是基于 Spark 平台提供对图计算和图挖掘简洁易用的而丰富的接口,极大的方便了对分布式图处理的需求。
    • Gremlin - 图遍历语言。
    • Infovore - 一个 map/reduce 框架,用来处理大量的 RDF 数据集,注入 Freebase 和 DBpedia,基于 Hadoop 构建。
    • Intel GraphBuilder - 基于 Hadoop 构造的大型图工具。
    • JanusGraph - 开源分布式图形数据库,后端存储可以选择多种组件包括 Bigtable、HBase、Cassandra等,同时索引后端也可以选择很多种,包括 Elasticsearch、Solr、Lucene 等。
    • MapGraph - 一个高级的 API 用于快速开发基于 GPU 的高性能图形分析应用。
    • Microsoft Graph Engine - 一个基于内存的分布式大规模图数据处理引擎,能够帮助用户更方便地构建实时查询应用和高吞吐量离线分析平台。在此之前,它在学术界更广为人之的名称是 Trinity。
    • Neo4j - 一个高性能的 NOSQL图数据库,完全由 Java 实现。
    • OrientDB - 文档图形数据库。
    • Phoebus - 大型图处理框架。
    • Titan - 建立在 Cassandra 之上的分布式图数据库。
    • Twitter FlockDB - 分布式图数据库。
    • NodeXL - Microsoft® Excel® 2007, 2010, 2013 and 2016 免费开源的模板,可以很容易的探索网络图。

    列式数据库

    注意 请读一下 Key-Map Data Model 章节的说明。

    • Columnar Storage - 解释什么是列式存储,以及我们什么时候需要它。
    • Actian Vector - 面向列的分析数据库。
    • C-Store - 面向列的 DBMS.
    • ClickHouse - 一个开源的列式数据库(DBMS),主要用于在线分析处理查询(OLAP)。
    • EventQL - 为大规模事件收集和分析而构建的分布式、面向列的数据库。
    • MonetDB - 列式存储数据库。
    • Parquet - 灵感来自于2010年 Google 发表的 Dremel 论文,是一种列式存储格式,与语言、平台无关,并且不需要和任何一种数据处理框架绑定。
    • Pivotal Greenplum - 为特定目的而构建的专用分析数据仓库,它提供了一个列式存储引擎和一个传统的基于行的引擎。
    • Vertica - 设计用于管理大量快速增长的数据,提供非常快的查询性能。
    • SQream DB - 以色列大数据公司开发的跑在 GPU 上的大数据数据库,设计用于分析和数据仓库,使用 ANSI-92 SQL,适用于10TB到1PB的数据集。
    • Google BigQuery - Google 推出的一项 Web 服务,该服务让开发者可以使用 Google 的架构来运行 SQL 语句对超级大的数据库进行操作。
    • Amazon Redshift - 一个支持 SQL 查询的、快速、可扩展的列式存储数据库,它支持 PB 级的数量查询,是适用于企业级的数据仓库。
    • IndexR - 一个开源的大数据存储格式,于 2017 年 1 月初正式开源,旨在通过添加索引、优化编码方式、提高 IO 效率等各种优化方式来提高计算层和存储层的数据交换效率,从而提升整体性能。
    • LocustDB - 一个大规模并行且高性能的分析数据库 (analytics database),可快速处理你的所有数据,目前处于实验性阶段。

    NewSQL 数据库

    • Actian Ingres - 商业支持,开源 SQL 关系数据库管理系统。
    • ActorDB - 分布式的 SQL 数据库,可实现可伸缩的 K/V 存储系统。ActorDB 基于 Actor 计算模型,与传统的集中式数据库不同,ActorDB 由任意数量的被成为 actor 的独立和并发 SQL 数据库组成。
    • Amazon RedShift -基于 PostgreSQL 的数据仓库服务。
    • BayesDB - 一个贝叶斯数据库,内建贝叶斯查询语言 BQL,用户无需统计方面知识即可解决一些基本的科学数据问题
    • Bedrock - 构建在 SQLite 之上的简单、模块化、网络化、分布式事务层。
    • CitusDB - 通过分片和副本扩展 PostgreSQL。
    • Cockroach - 可伸缩、地理复制、事务性数据存储。
    • Comdb2 - 一个基于乐观并发控制技术的集群 RDBMS。
    • Datomic - 分布式数据库旨在支持可伸缩、灵活和智能的应用程序。
    • FoundationDB - 分布式数据库,受 F1 启发。
    • Google F1 - 构建在 Spanner 之上的分布式 SQL 数据库。
    • Google Spanner - Google的全球级的分布式数据库,具有可扩展,多版本,全球分布式、同步复制等特性。
    • H-Store - 一个实验性的数据库管理系统。它专为驻线交易处理应用程序而设计。
    • Haeinsa - Haeinsa 是 HBase 可线性扩展的多行,多表事务库。使用两阶段锁定和乐观并发控制来实现事务。 事务的隔离级别是可序列化的。基于 Percolator 实现。
    • HandlerSocket - MySQL/MariaDB 的 NoSQL 插件。
    • InfiniSQL - 无限扩展的 RDBMS.
    • Map-D - GPU 内存数据库,大数据分析可视化平台.
    • MemSQL - 一款内存数据库,它通过将数据存在内存中,将 SQL 语句预编译为 C++ 而获得极速执行效率。
    • NuoDB - 符合 SQL/ACID 的分布式数据库。
    • Oracle TimesTen in-Memory Database - 基于内存的关系数据库管理系统,具有持久性和可恢复性。
    • Pivotal GemFire XD - 低延迟、基于内存、分布式 SQL 数据存储。为内存表数据提供 SQL 接口,可在 HDFS 中持久存储。
    • SAP HANA - 基于内存、面向列、关系数据库管理系统。
    • SenseiDB - 分布式、实时、半结构化的数据库。
    • Sky - 用于灵活、高性能的行为数据分析的数据库。
    • SymmetricDS - 用于文件和数据库同步的开源软件。
    • TiDB - 一款定位于在线事务处理/在线分析处理的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。受 Google F1 启发。
    • VoltDB - 声称是最快的内存数据库.

    时间序列数据库

    • Axibase Time Series Database - 基于 HBase 的时间序列数据库,内置可视化、规则引擎和 SQL 支持。
    • Chronix - 一种时间序列存储器,用于存储高度压缩的时间序列,并支持快速访问数据。
    • Cube - 使用 MongoDB 来存储时间序列数据。
    • Heroic - 基于 Cassandra 和 Elasticsearch 的可扩展时间序列数据库。
    • InfluxDB - 分布式时间序列数据库。
    • IronDB - 可扩展、通用时间序列数据库。
    • Kairosdb - 和 OpenTSDB 类似,但是构建在 Cassandra 之上。
    • M3DB - 一个分布式时间序列数据库,可用于长期存储实时指标。
    • Newts -基于 Apache Cassandra 的时间序列数据库。
    • OpenTSDB -构建在 HBase 之上的分布式时间序列数据库。
    • Prometheus - 时间序列数据库和服务监控系统。
    • Beringei - Facebook 的内存时间序列数据库。
    • TrailDB - 用于存储和查询一系列事件的有效工具。
    • Druid MetaMarket 公司研发,专为海量数据集上的做高性能 OLAP (OnLine Analysis Processing)而设计的数据存储和分析系统
    • Riak-TS Riak TS 是唯一专为物联网和时间序列数据优化的企业级 NoSQL 时间序列数据库。
    • Akumuli 一个数值型时间序列数据库,可以存储、处理时序列数据
    • Rhombus Cassandra的时间序列对象存储。
    • Dalmatiner DB 快速分布式度量数据库
    • Blueflood 一种用于摄取和处理时间序列数据的分布式系统。
    • Timely 是一个时间序列数据库应用程序,它提供了基于 Accumulo 和 Grafana 的对时间序列数据的安全访问。
    • SiriDB 具有集群功能的高扩展性、健壮性和快速的开源时间序列数据库。
    • Thanos - Thanos 是一组组件,可以使用多个 Prometheus 部署创建具有无限存储容量的高可用度量系统。
    • VictoriaMetrics - 与 Prometheus 兼容的快速,可扩展的开源 TSDB,包括单节点和群集版本。

    类 SQL 处理系统

    • Actian SQL for Hadoop - 高性能交互式 SQL,可以利用它访问 Hadoop 上的数据。
    • Apache Drill - 一个低延迟的分布式海量数据交互式查询引擎,使用 ANSI SQL 兼容语法,本质上是一个分布式的 MPP 查询层。目的在于支持更广泛的数据源,数据格式,以及查询语言。受 Google的Dremel 启发。
    • Apache HCatalog - Hadoop的表存储管理工具。
    • Apache Hive - 基于 Hadoop 的一个数据仓库工具,可以将结构化数据文件映射为一张数据库表,并提供类 SQL 查询功能.
    • Apache Calcite - 一款开源 SQL 解析工具, 可以将各种 SQL 语句解析成抽象语法术AST(Abstract Syntax Tree), 之后通过操作 AST 就可以把 SQL 中所要表达的算法与关系体现在具体代码之中。
    • Apache Phoenix - 构建在 HBase 之上的关系型数据库层,可以对 HBase 中的数据进行低延迟访问。
    • Aster Database - 类 SQL 分析处理。
    • Cloudera Impala - 实时交互 SQL 大数据查询工具,受 Dremel 启发。
    • Concurrent Lingual - Cascading 上的 SQL 查询语言。
    • Datasalt Splout SQL - 针对大数据集的完整 SQL 查询引擎。
    • Facebook PrestoDB -分布式 SQL 查询引擎。
    • Google BigQuery - Google 推出的一项 Web 服务,该服务让开发者可以使用 Google 的架构来运行 SQL 语句对超级大的数据库进行操作,是 Dremel 的实现。
    • PipelineDB - 一个开源的关系数据库,它可以在实时流数据上执行 SQL 查询,并将结果增量地存储在表中。
    • Pivotal HDB - Hadoop 上的类 SQL 数据仓库系统。/li>
    • RainstorDB - 用于存储 PB 级结构化和半结构化数据量的数据库。
    • Spark Catalyst - Apache Spark 的查询优化框架。
    • SparkSQL - 使用 Spark 操作结构化的数据。
    • Splice Machine - 兼具了 SQL 和 NoSQL 的各自优势,且能对操作型和分析型应用进行实时处理,具有 ACID 特性。
    • Stinger - 由 Hortonworks 开发的一个彻底提升 Hive 效率的工具
    • Tajo - Hadoop 之上的分布式数据仓库系统。
    • Trafodion - 由惠普开发并开源的基于 Hadoop 平台的事务数据库引擎。提供了一个基于 Hadoop 平台的交易型 SQL 引擎,是一个擅长处理交易型负载的 Hadoop 大数据解决方案。

    数据摄取

    • Amazon Kinesis - 一种在 AWS 上流式处理数据的平台,让您可以轻松地加载和分析流数据,同时还可让您根据具体需求来构建自定义流数据应用程序。
    • Amazon Web Services Glue - 一项完全托管的提取、转换和加载 (ETL) 服务,让用户能够轻松准备和加载数据进行分析。
    • Apache Chukwa - 数据采集系统。
    • Apache Flume - 一个分布式的、可靠的、易用的系统,可以有效地将来自很多不同源系统的大量日志数据收集、汇总或者转移到一个数据中心存储。
    • Apache Kafka - 分布式发布订阅消息系统。
    • Apache NiFi - 一个易用、强大、可靠的数据处理与分发系统
    • Apache Sqoop - 是一款开源的工具,主要用于在 Hadoop/Hive 与传统的数据库(Mysql、Oracle...)间进行数据的传递
    • Cloudera Morphlines - 帮助将 ETL 的数据加载到 Solr、HBase 或 Hadoop 中的框架。
    • Embulk - 开源的批量数据加载器,帮助在各种数据库、存储、文件格式和云服务之间传输数据。
    • Facebook Scribe - 流日志数据聚合器。
    • Fluentd - 用于收集事件和日志的工具。
    • Google Photon - 地理分布式系统,用于实时连接多个连续流动的数据流,具有高可伸缩性和低延迟。
    • Heka - 开源流处理系统。
    • HIHO - 用于将不同数据源的数据和 Hadoop 进行连接的框架。
    • Kestrel - 分布式消息队列系统。
    • LinkedIn Databus - LinkedIn 开源的一个低延迟、可靠的、支持事务的、保持一致性的数据变更抓取系统。
    • LinkedIn Kamikaze - 一种实用工具包,对 document lists 提供一系列的实现。
    • LinkedIn White Elephant - 一个 Hadoop 日志收集器和展示器,它提供了用户角度的Hadoop集群可视化。
    • Logstash - 一个开源的日志收集管理工具,可以采集来自不同数据源的数据,并对数据进行处理后输出到多种输出源。
    • Netflix Suro - Netflix 开源的一款工具,它能够在数据被发送到不同的数据平台(如Hadoop、Elasticsearch)之前,收集不同应用服务器上的事件数据。
    • Pinterest Secor - 实现 Kafka 日志持久性的服务
    • Linkedin Gobblin -一套分布式数据集成框架,旨在简化大数据集成工作当中的各类常见任务,具体包括数据流与批量生态系统的提取、复制、组织与生命周期管理。
    • Skizze - 一种概率数据结构服务和存储。
    • StreamSets Data Collector - 使用一个简单的 IDE 来连续大数据摄取基础设施。
    • Yahoo Pulsar - 由 Yahoo 开发并开源的一个企业级的发布订阅消息系统。
    • Alooma - 实时的数据管道服务,支持将 MySQL 等数据源的数据移动到数据仓库中。

    服务编程

    • Akka Toolkit - 基于 Actor 模型,提供了一个用于构建可扩展的(Scalable)、弹性的(Resilient)、快速响应的(Responsive)应用程序的平台。
    • Apache Avro - 数据序列化系统。
    • Apache Curator - 为 Apache ZooKeeper 开发的类库。
    • Apache Karaf - Apache 旗下的一个开源项目,同时也是一个基于 OSGi 的运行环境,Karaf 提供了一个轻量级的 OSGi 容器,可以用于部署各种组件,应用程序。
    • Apache Thrift - Facebook 开源的跨语言的 RPC 通信框架
    • Apache Zookeeper - 一个分布式应用程序协调服务。
    • Google Chubby - 一个分布式锁服务,Chubby 底层一致性实现就是以 Paxos 为基础的
    • Hydrosphere Mist - 一个将 Apache Spark 分析任务和机器学习模型转换为实时、批处理或反应性 web 服务的服务。
    • Linkedin Norbert - 集群管理系统。
    • Mara - 一个轻量级的自定义ETL框架。
    • OpenMPI - 消息传递框架。
    • Serf - 去中心化的服务发现和编排解决方案。
    • Spotify Luigi - 用于构建批处理作业的复杂管道的 Python 包。它处理依赖项解析、工作流管理、可视化、处理故障、命令行集成等等。
    • Spring XD - 用于数据摄取、实时分析、批处理和数据导出的分布式和可扩展系统。
    • Twitter Elephant Bird - 用于处理 lzop 压缩数据的库。
    • Twitter Finagle - JVM的异步网络堆栈。

    调度

    机器学习

    • Azure ML Studio - 基于云的 R、Python 机器学习平台。
    • brain - JavaScript 中的神经网络。
    • Cloudera Oryx - 实时大规模机器学习。
    • Concurrent Pattern - Cascading 上的机器学习框架。
    • convnetjs - Javascript 中的深入学习,可以在浏览器中训练卷积神经网络(或普通神经网络)。
    • DataVec - 一个用于 Java 和 Scala 深度学习的矢量化和数据预处理库。Deeplearning4j生态系统的一部分。
    • Deeplearning4j - 美国 AI 创业公司 Skymind 开源并维护的一个基于 Java/JVM 的深度学习框架,可使用CPU或GPU运行。
    • Decider - Ruby中灵活且可扩展的机器学习。
    • ENCOG - 支持多种高级算法的机器学习框架,以及支持规范化和处理数据的类。
    • etcML - 在线免费文本分析工具是由美国的斯坦福大学计算机教授开发的基于成熟的文本分析引擎
    • Etsy Conjecture - Scalding 中可扩展的机器学习。
    • Feast - 用于管理、发现和访问机器学习特性的特性存储库。Feast 为模型训练和模型服务提供了一致的特征数据视图。
    • GraphLab Create - Python 中的机器学习平台,包含大量 ML 工具包、数据工程和部署工具。
    • H2O - 使用 Hadoop、R 和 Python 进行统计、机器学习和数学运行时。
    • Keras - 一个高层神经网络API,Keras 由纯 Python 编写而成并基 Tensorflow、Theano 以及 CNTK 后端。受 Torch 启发。
    • Lambdo 是一个工作流引擎,通过将一个分析管道(i)特征工程和机器学习(ii)模型训练和预测(iii)结合起来,通过用户定义(Python)函数实现表填充和列评估,大大简化了数据处理和分析。
    • Mahout - 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。
    • MLbase - 是Spark生态圈的一部分,专注于机器学习,包含三个组件:MLlib、MLI、ML Optimizer。
    • MLPNeuralNet - 一个针对 iOS 和 Mac OS 系统的快速多层感知神经网络库,可通过已训练的神经网络预测新实例。
    • MOA - 实时进行大数据流挖掘和大规模机器学习。
    • MonkeyLearn - 让文本挖掘变得很容易,可以从文本中提取和分类数据。
    • ND4J - JVM 的矩阵库,可以认为是 Java 中的 Numpy。
    • nupic - 一个实现了HTM学习算法的机器智能平台。
    • PredictionIO - 面向开发人员和数据科学家的开源机器学习服务,构建在 Hadoop, Mahout 和 Cascading 之上。
    • RL4J - 一个与 Deeplearning4j 集成的强化学习框架
    • SAMOA - 分布式流数据机器学习框架。
    • scikit-learn - 专门面向机器学习的 Python 开源框架,实现了各种成熟的算法。
    • Spark MLlib - 使用 Spark 实现一些常见的机器学习算法和实用程序,包括分类、回归、聚类、协同过滤、降维以及底层优化,
    • Sibyl - 谷歌大型机器学习系统.
    • TensorFlow - 一个采用数据流图(data flow graphs),用于数值计算的开源软件库。
    • Theano - 蒙特利尔大学支持的以 Python 为核心的机器学习类库。
    • Torch - 是一个基于 BSD License 的开源的机器学习的框架
    • Velox - 服务于机器学习预测的系统。
    • Vowpal Wabbit - 由微软和雅虎赞助的学习系统。
    • WEKA - 一套机器学习软件。
    • BidMach - CPU 和 GPU 加速库的机器学习库。

    Benchmarking

    安全

    • Apache Ranger - 是一个用在 Hadoop 平台上并提供操作、监控、管理综合数据安全的框架。
    • Apache Eagle -由 eBay 公司开源的一个识别大数据平台上的安全和性能问题的开源解决方案。
    • Apache Knox Gateway - Hadoop 集群中用于数据处理的 REST API 网关
    • Apache Sentry - 为 Hadoop 集群中的元数据和数据存储提供集中、细粒度的访问控制。
    • BDA - Hadoop 和 Spark 的漏洞检测器

    系统部署

    • Apache Ambari - 一个集中部署、管理、监控Hadoop 分布式集群的工具。
    • Apache Bigtop - 一个针对基础设施工程师和数据科学家的开源项目,旨在全面打包、测试和配置领先的开源大数据组件/项目,包括但不限于 Hadoop、HBase 和 Spark 。
    • Apache Helix - 集群管理框架。
    • Apache Mesos - 一个类似于 YARN 的集群管理器,提供了有效的、跨分布式应用或框架的资源隔离和共享,可以运行 Hadoop、MPI、Hypertable、Spark。
    • Apache Slider - 是一个 YARN 应用程序,用于在 YARN 上部署现有的分布式应用程序。
    • Apache Whirr - 运行云服务的一组 Java 类库。
    • Apache YARN - 集群管理系统。
    • Brooklyn - 简化应用程序部署和管理的库。
    • Buildoop - 类似于 Apache BigTop,基于 Groovy 语言开发。
    • Cloudera HUE - 用于与 Hadoop 交互的 web 应用程序。
    • Facebook Prism - 多数据中心复制系统。
    • Google Borg - Google 的内部大型集群管理系统。
    • Google Omega - Google 内部第三代的集群管理框架。
    • Hortonworks HOYA - 可以在 YARN 上部署 HBase 集群的应用程序。
    • Kubernetes - Google 团队发起并维护的基于 Docker 的开源容器集群管理系统。
    • Marathon - 一个 Mesos 框架,能够支持运行长服务。

    应用程序

    • 411 - 一个警报管理Web应用程序。
    • Adobe spindle - 使用 Scala、Spark 和 Parquet 进行 web 分析的下一代系统。
    • Apache Kiji - 基于 HBase 的实时数据采集与分析框架。
    • Apache Metron - 一种多功能的安全遥测数据捕获、流分析和威胁响应平台,代表了安全数据平台的最新发展水平。
    • Apache Nutch - 开源 web 爬虫程序。
    • Apache OODT - NASA 开源的用于做数据管理的系统。
    • Apache Tika - 使用 Java 编写的内容检测和分析框架。
    • Argus - 时序监控报警平台。
    • AthenaX - 一个流分析平台,允许用户使用结构化查询语言(SQL)运行生产质量的大规模流分析。
    • Atlas - 用于管理维度时间序列数据的系统。
    • Countly - 基于 Node.js 和 MongoDB 的开源移动和 web 分析平台。
    • Domino - 运行、扩展、共享和部署模型——不需要任何基础设施。
    • Eclipse BIRT - 基于 Eclipse 的报告系统。
    • ElastAert - 为 ES 打造的报警监控工具。
    • Eventhub - 开源事件分析平台。
    • Hermes - 构建在 Kafka 之上的异步消息代理。
    • HIPI Library - 使用 Hadoop 的 MapReduce 来执行图像处理任务的API。
    • Hunk - Hadoop 的分析工具。
    • Imhotep - 大型分析平台。
    • Jupyter - 基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。
    • MADlib - RDBMS 的数据处理库,用于分析数据。
    • Kapacitor - 用于对时间序列数据进行处理、监视和警报的开源框架。
    • Kylin - 一个开源的分布式分析引擎,提供 Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay Inc. 开发并贡献至开源社区,能在亚秒内查询巨大的Hive表。
    • PivotalR - 支持在 Pivotal HD / HAWQ 以及 PostgreSQL 上运行 R。
    • Rakam - 开源实时自定义分析平台,由 Postgresql, Kinesis 和 PrestoDB 提供支持。
    • Qubole - 能够自动扩展 Hadoop 集群以及内置的链接器。
    • Sense - 数据科学和大数据分析的云平台。
    • SnappyData - 一个统一 OLTP+OLAP +流式写入的内存分布式数据库。
    • Snowplow - 由 Hadoop,Kinesis,Redshift 和 Postgres 支持的企业级 Web 和事件分析。
    • SparkR - 用于 Spark 的 R 前端。
    • Splunk - 一款成熟的商业化日志处理分析产品。
    • Sumo Logic - 基于云的日志处理分析产品。
    • Talend - YARN、Hadoop、HBASE、Hive、HCatalog 和 Pig 的统一开源环境。
    • Warp - 大数据示例查询工具(OS X 应用)

    搜索引擎和框架

    • Apache Lucene - 一套用于全文检索和搜索的开放源码程序库
    • Apache Solr - 是 Apache Lucene 项目的开源企业搜索平台。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。
    • Elassandra - 是 ElasticSearch 的一个分支,经过修改,可以作为 Apache Cassandra 的插件运行,具有可扩展和灵活的点对点架构。
    • ElasticSearch - 一个基于 Lucene 库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有 HTTP Web 接口和无模式 JSON 文档。
    • Enigma.io – 免费增值的 Web 应用程序,用于对 Web 上抓取的海量数据集进行浏览,过滤,分析,搜索和导出。
    • Facebook Unicorn - 社交图搜索平台.
    • Google Caffeine - 一个高性能、出色的缓存类库。
    • Google Percolator - 由 Google 公司开发的、为大数据集群进行增量处理更新的系统,主要用于 google 网页搜索索引服务。
    • TeraGoogle - 大型搜索索引。
    • HBase Coprocessor - HBase 的协处理器,Percolator 的实现。
    • Lily HBase Indexer - 一款快速、简单的 HBase 的内容检索方案,它可以帮助你在 Solr 中建立 HBase 的数据索引,从而通过 Solr 进行数据检索。
    • LinkedIn Bobo - 完全用 Java 编写的 Faceted Search 实现,是 Apache Lucene 的扩展。
    • LinkedIn Cleo -一个灵活的软件库,用于处理一些预输入和自动完成的搜索功能。
    • LinkedIn Galene - LinkedIn 的搜索架构。
    • LinkedIn Zoie - 一个用 Java 编写的实时搜索/索引系统。
    • MG4J - MG4J (Managing Gigabytes for Java) 是一个用 Java 编写的大型文档集合的全文搜索引擎,它是高度可定制的,高性能的,并提供了最先进的功能和新的研究算法。
    • Sphinx Search Server - 全文搜索引擎。
    • Vespa - 在大型数据集上进行低延迟计算的引擎。它存储和索引数据,以便可以在服务时执行对数据的查询,选择和处理。

    MySQL 分支和演进

    • Amazon RDS - AWS 的 MySQL 数据库。
    • Drizzle - MySQL 6.0的演进。
    • Google Cloud SQL - Google 云中的 MySQL 数据库。
    • MariaDB - MySQL 的一个分支,采用GPL授权许可。目的是完全兼容 MySQL,包括 API 和命令行。
    • MySQL Cluster - 使用 NDB 集群存储引擎实现 MySQL 集群。
    • Percona Server - MySQL 增强版,可以替代它。
    • ProxySQL - MySQL 的高性能代理。
    • TokuDB - TokuDB 是 MySQL 和 MariaDB 的存储引擎。
    • WebScaleSQL - WebScaleSQL 是 Facebook、 Google、Twitter 和 Linkedin 四家公司的MySQL 团队发起的 MySQL 开源组织,旨在改进 MySQL 在规模和性能等方面的问题。

    PostgreSQL 分支和演进

    • HadoopDB - MapReduce 和 DBMS 的混合体。
    • IBM Netezza - 高性能数据仓库设备。
    • Postgres-XL - 可伸缩的基于 PostgreSQL 的开源数据库集群。
    • RecDB - 完全在 PostgreSQL 内部构建的开源推荐引擎。
    • Stado - 仅针对数据仓库和数据集市应用程序的开源 MPP 数据库系统。
    • Yahoo Everest - 由 PostgreSQL 派生的 PB 级数据库/MPP。
    • TimescaleDB - 针对快速摄取和复杂查询而优化的开源时间序列数据库。
    • PipelineDB - 开源的流式数据库,基于 PostgreSQL 数据库改造的,允许我们通过 SQL 的方式,对数据流做操作,并把操作结果储存起来。

    Memcached 分支和演进

    嵌入式数据库

    • Actian PSQL - 由 Pervasive Software 开发的符合 ACID 的 DBMS,针对嵌入应用程序进行了优化。
    • BerkeleyDB - 可为键/值数据提供高性能的嵌入式数据库。
    • HanoiDB - Erlang LSM BTree 存储。
    • LevelDB - Google 开源的持久化KV单机数据库,具有很高的随机写,顺序读/写性能。
    • LMDB - 由 Symas 开发的基于 Btree-based 的高性能 mmap key-value 数据库
    • RocksDB - Facebook 公司基于 LevelDB 开发的一款开源嵌入式数据库引擎。

    商业智能

    • BIME Analytics - 商业智能云平台。
    • Blazer - 使商业智能变得简单。
    • Chartio - 商业智能平台,可以可视化和浏览我们的数据。
    • datapine - 自助式商业智能工具。
    • GoodData - 商业智能和大数据分析软件。
    • Jaspersoft - 强大的商业智能套件。
    • Jedox Palo - 可定制的商业智能平台.
    • Jethrodata - 交互式大数据分析。
    • Metabase - 一个简单、开源的方式,通过给公司成员提问,从得到的数据中进行分析、学习。
    • Microsoft - 商业智能软件及平台。
    • Microstrategy - 用于商业智能、移动智能和网络应用程序的软件平台。
    • Numeracy - SQL 客户端和商业智能。
    • Pentaho - 商业智能平台。
    • Qlik - 商业智能及分析平台。
    • Redash - 开源商业智能平台,支持多个数据源和计划查询。
    • Saiku - 开源分析平台。
    • SpagoBI - 开源商业智能平台。
    • SparklineData SNAP - 基于 Apache Spark 的商业智能平台。
    • Tableau - 商业智能平台。
    • Zoomdata - 大数据分析平台。

    数据可视化

    • Airpal - PrestoDB 的 Web UI。
    • AnyChart - 一套灵活的 JavaScript (HTML5) 库,可满足您的所有数据可视化需求。
    • Arbor - 一个使用 web workers 和 jQuery 创建的图可视化库。
    • Banana - 可视化存储在 Solr 中的日志和带时间戳的数据,是 Kibana 的一部分。
    • Bloomery - Impala 的 Web UI。
    • Bokeh - 一个 Python 交互式可视化库,支持现代化 Web 浏览器,提供非常完美的展示功能。
    • C3 - 基于 D3 的可重用图表库
    • CartoDB - 开源的云上地理空间数据库,允许存储和可视化 web 上的数据。使用 CartoDB 可以快速创建基于地图的可视化效果。
    • chartd - 响应式、视网膜兼容图表,仅需要一个 img 标签。
    • Chart.js - 一套开源、简单、干净并且有吸引力的基于 HTML5 技术的 JavaScript 图表工具。
    • Chartist.js - 非常简单而且实用的 JavaScript 前端图表生成器。
    • Crossfilter - 一个 JavaScript 库,用于在 JavaScript 中制作交互式的仪表板,可以与 dc.js 、d3.js 一起工作。
    • Cubism - 用于时间序列可视化的 JavaScript 库。
    • Cytoscape - 一个专注于网络可视化和分析的开源软件。
    • DC.js - 一个用于网页作图、生成互动图形的 JavaScript 函数库。
    • D3 - 目前最流行的数据可视化库之一,小型,灵活,高效的数据可视化库,用来创建和操作基于数据的交互式文档。
    • D3.compose - 由可重复使用的图表和组件组成复杂的、数据驱动的可视化文件。
    • D3Plus - d3.js 的一组相当强大的可重用图表和样式。
    • DevExtreme React Chart - 基于高性能插件的 React 图表,用于 Bootstrap 和 Material Design。
    • Echarts - 一款由百度前端技术部开发的,基于Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。
    • Envisionjs - 一个基于 HTML5 技术的数据可视化库
    • FnordMetric - 一个开源的 Web 应用,可用于创建实时仪表板,方便可视化任何数据。
    • Frappe Charts - 一个受 Github 启发的轻量级 SVG 图表库,它不依赖任何类库和框架。
    • Freeboard - 让用户创建他们自己的用来监控物联网部署的仪表盘,该代码在 GitHub上免费提供,你可以通过这些仪表板展示跟踪空气质量、住宅电器、酿酒情况和实时环境条件变化。
    • Gephi - 一款开源免费跨平台基于 JVM 的网络分析领域的数据可视化处理软件
    • Google Charts - 一种交互式 Web 服务,可根据用户提供的数据创建图形图表
    • Grafana - 一个跨平台的开源的度量分析和可视化工具,可以通过将采集的数据查询然后可视化的展示,并及时通知。
    • Graphite - 一款开源的监控绘图工具。
    • Highcharts - 兼容 IE6+、完美支持移动端、图表类型丰富、方便快捷的 HTML5 交互性图表库。
    • IPython - 一种基于 Python 的交互式解释器。相较于原生的 Python Shell,IPython 提供了更为强大的编辑和交互功能。
    • Kibana - Elasticsearch 的开源数据可视化插件。
    • Lumify - 开源大数据分析可视化平台。
    • Matplotlib - Python 编程语言及其数值数学扩展包 NumPy 的可视化操作界面。
    • Metricsgraphic.js - 一个建立在 D3 基础上,为可视化和时间序列化的数据而优化的库。
    • NVD3 - d3.js 的图表组件。
    • Peity - 渐进式 SVG 条形图,折线图和饼图。
    • Plot.ly - Plotly 为个人和协作提供在线图形,分析和统计工具,以及 Python,R,MATLAB,Perl,Julia,Arduino 和 REST 的科学图形库。
    • Plotly.js 一个开源的交互式 JavaScript 图形库,建立在 d3.js 和 webgl 之上,并支持 20 多种类型的交互式图表。
    • Recline - 简单而强大的库,可以使用纯 Javascript 和 HTML 构建数据应用程序。
    • Redash - 查询和可视化数据的开源平台。
    • ReCharts - 一个基于React组件的可组合图表库。
    • Shiny - R 的 Web 应用程序框架。
    • Sigma.js - 专门用于图形绘制的 JavaScript 库。
    • Superset - 由 Airbnb 开发并开源一个数据探索和可视化平台,设计用来提供直观的,可视化的,交互式的分析体验。
    • Vega - 一个可视化的语法。
    • Zeppelin - 一个基于 Web 的 notebook,提供交互数据分析和可视化。
    • Zing Charts - 一个功能强大的 JavaScript 图表。

    物联网和传感器数据

    • Apache Edgent (Incubating) - 一种编程模型和具有微内核风格的运行时,可嵌入到网关和小型的物联网设备中。
    • Azure IoT Hub - 托管服务,支持 IoT 设备与 Azure 之间的双向通信。
    • TempoIQ - 基于云计算的传感器分析。.
    • 2lemetry - 物联网平台。
    • Pubnub - 数据流网络。
    • ThingWorx - 可用于查找数据来源,使数据与情境相关,合成数据,同时协调流程,以提供强大的Web、移动和AR 体验的平台。
    • IFTTT - 一个新生的网络服务平台,通过其他不同平台的条件来决定是否执行下一条命令。
    • Evrything- 使产品智能化。
    • NetLytics - 用于在Spark上处理网络数据的分析平台。

    有趣的阅读材料

    有趣的论文

    2015 - 2016

    • 2015 - Facebook - One Trillion Edges: Graph Processing at Facebook-Scale.

    2013 - 2014

    • 2014 - Stanford - Mining of Massive Datasets.
    • 2013 - AMPLab - Presto: Distributed Machine Learning and Graph Processing with Sparse Matrices.
    • 2013 - AMPLab - MLbase: A Distributed Machine-learning System.
    • 2013 - AMPLab - Shark: SQL and Rich Analytics at Scale.
    • 2013 - AMPLab - GraphX: A Resilient Distributed Graph System on Spark.
    • 2013 - Google - HyperLogLog in Practice: Algorithmic Engineering of a State of The Art Cardinality Estimation Algorithm.
    • 2013 - Microsoft - Scalable Progressive Analytics on Big Data in the Cloud.
    • 2013 - Metamarkets - Druid: A Real-time Analytical Data Store.
    • 2013 - Google - Online, Asynchronous Schema Change in F1.
    • 2013 - Google - F1: A Distributed SQL Database That Scales.
    • 2013 - Google - MillWheel: Fault-Tolerant Stream Processing at Internet Scale.
    • 2013 - Facebook - Scuba: Diving into Data at Facebook.
    • 2013 - Facebook - Unicorn: A System for Searching the Social Graph.
    • 2013 - Facebook - Scaling Memcache at Facebook.

    2011 - 2012

    • 2012 - Twitter - The Unified Logging Infrastructure
      for Data Analytics at Twitter.
    • 2012 - AMPLab - Blink and It’s Done: Interactive Queries on Very Large Data.
    • 2012 - AMPLab - Fast and Interactive Analytics over Hadoop Data with Spark.
    • 2012 - AMPLab - Shark: Fast Data Analysis Using Coarse-grained Distributed Memory.
    • 2012 - Microsoft - Paxos Replicated State Machines as the Basis of a High-Performance Data Store.
    • 2012 - Microsoft - Paxos Made Parallel.
    • 2012 - AMPLab - BlinkDB: Queries with Bounded Errors and Bounded Response Times on Very Large Data.
    • 2012 - Google - Processing a trillion cells per mouse click.
    • 2012 - Google - Spanner: Google’s Globally-Distributed Database.
    • 2011 - AMPLab - Scarlett: Coping with Skewed Popularity Content in MapReduce Clusters.
    • 2011 - AMPLab - Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center.
    • 2011 - Google - Megastore: Providing Scalable, Highly Available Storage for Interactive Services.

    2001 - 2010

    • 2010 - Facebook - Finding a needle in Haystack: Facebook’s photo storage.
    • 2010 - AMPLab - Spark: Cluster Computing with Working Sets.
    • 2010 - Google - Pregel: A System for Large-Scale Graph Processing.
    • 2010 - Google - Large-scale Incremental Processing Using Distributed Transactions and Notifications base of Percolator and Caffeine.
    • 2010 - Google - Dremel: Interactive Analysis of Web-Scale Datasets.
    • 2010 - Yahoo - S4: Distributed Stream Computing Platform.
    • 2009 - HadoopDB: An Architectural Hybrid of MapReduce and DBMS Technologies for Analytical Workloads.
    • 2008 - AMPLab - Chukwa: A large-scale monitoring system.
    • 2007 - Amazon - Dynamo: Amazon’s Highly Available Key-value Store.
    • 2006 - Google - The Chubby lock service for loosely-coupled distributed systems.
    • 2006 - Google - Bigtable: A Distributed Storage System for Structured Data.
    • 2004 - Google - MapReduce: Simplied Data Processing on Large Clusters.
    • 2003 - Google - The Google File System.

    视频

    • Spark in Motion - Spark in Motion 教你如何使用 Spark 进行批处理和流数据分析。

    图书

    Streaming

    • Data Science at Scale with Python and Dask - Data Science at Scale with Python and Dask teaches you how to build distributed data projects that can handle huge amounts of data.
    • Streaming Data - Streaming Data introduces the concepts and requirements of streaming and real-time data systems.
    • Storm Applied - Storm Applied is a practical guide to using Apache Storm for the real-world tasks associated with processing and analyzing real-time data streams.
    • Fundamentals of Stream Processing: Application Design, Systems, and Analytics - This comprehensive, hands-on guide combining the fundamental building blocks and emerging research in stream processing is ideal for application designers, system builders, analytic developers, as well as students and researchers in the field.
    • Stream Data Processing: A Quality of Service Perspective - Presents a new paradigm suitable for stream and complex event processing.
    • Unified Log Processing - Unified Log Processing is a practical guide to implementing a unified log of event streams (Kafka or Kinesis) in your business
    • Kafka Streams in Action - Kafka Streams in Action teaches you everything you need to know to implement stream processing on data flowing into your Kafka platform, allowing you to focus on getting more from your data without sacrificing time or effort.
    • Big Data - Big Data teaches you to build big data systems using an architecture that takes advantage of clustered hardware along with new tools designed specifically to capture and analyze web-scale data.
    • Spark in Action & Spark in Action 2nd Ed. - Spark in Action teaches you the theory and skills you need to effectively handle batch and streaming data using Spark. Fully updated for Spark 2.0.
    • Kafka in Action - Kafka in Action is a fast-paced introduction to every aspect of working with Kafka you need to really reap its benefits.
    • Fusion in Action - Fusion in Action teaches you to build a full-featured data analytics pipeline, including document and data search and distributed data clustering.
    • Reactive Data Handling - Reactive Data Handling is a collection of five hand-picked chapters, selected by Manuel Bernhardt, that introduce you to building reactive applications capable of handling real-time processing with large data loads--free eBook!

    Distributed systems

    Graph Based approach

    Data Visualization

    展开全文
  • 深度解析 Twitter Heron 大数据实时分析系统

    2015年6月1号, Twitter 对外宣讲了他们的Heron系统, 从ppt和论文中,看起来完爆storm。昨天,抽空把论文,仔细读了一遍, 把个人笔记和心得分享一下:

    摘要:

    Heron更适合超大规模的机器, 超过1000台机器以上的集群。 在稳定性上有更优异的表现, 在性能上,表现一般甚至稍弱一些,在资源使用上,可以和其他编程框架共享集群资源,但topology级别会更浪费一些资源。

    而从应用的角度,应用更偏向于大应用,小应用的话,会多一点点资源浪费, 对于大应用,debug-ability的重要性逐渐提升。 另外对于task的设计, task会走向更重更复杂, 而JStorm的task是向更小更轻量去走。

    未来JStorm可以把自动降级策略引入, 通过实现阿里妈妈的ASM, debug-ability应该远超过storm, 不会逊色于Heron, 甚至更强。

     现状:

    所有的老的生产环境的topology已经运行在Heron上, 每天大概处理几十T的数据, billions of消息

    为什么要重新设计Heron:

    【题外话】这里完全引用作者吐槽的问题, 不少问题,其实JStorm已经解决

    (1)debug-ability 很差, 出现问题,很难发现

    1.1 多个task运行在一个系统进程中, 很难定位问题。需要一个清晰的逻辑计算单元到物理计算单元的关系

    (2)需要一种更高级的资源池管理系统

    2.1 可以和其他编程框架共享资源, 说白了,就是类似yarn/mesos, 而在Twitter就是Aurora
    2.2 更简单的弹性扩容和缩容 集群
    2.3 因为不同task,对资源需求是不一样的, 而storm会公平对待每个worker, 因此会存在worker浪费内存问题。当worker内存特别大时, 进行jstack或heap dump时,特别容易引起gc,导致被supervisor干掉
    2.4 经常为了避免性能故障,常常进行超量资源分配, 原本100个core,分配了200个

    (3)认为Storm设计不合理的地方

    3.1 一个executor 存在2个线程, 一个执行线程, 一个发送线程, 并且一个executor运行多个task, task的调度完全依赖来源的tuple, 很不方便确认哪个task出了问题。
    3.2 因为多种task运行在一个worker中, 无法明确出每种task使用的资源, 也很难定位出问题的task,当出现性能问题或其他行为时, 常用就是重启topology, 重启后就好了,因为task进行了重新调度
    3.3 日志打到同一个文件中,也很难查找问题,尤其是当某个task疯狂的打印日志时
    3.4 当一个task挂掉了,直接会干掉worker,并强迫其他运行好的task被kill掉
    3.5 最大的问题是,当topology某个部分出现问题时, 会影响到topology其他的环节
    3.6 gc引起了大量的问题
    3.7 一条消息至少经过4个线程, 4个队列, 这会触发线程切换和队列竞争问题
    3.8 nimbus功能太多, 调度/监控/分发jar/metric report, 经常会成为系统的bottleneck
    3.9 storm的worker没有做到资源保留和资源隔离, 因此存在一个worker会影响到另外的worker。 而现有的isolation调度会带来资源浪费问题。 Storm on Yarn也没有完全解决这个问题。
    3.10 zookeeper成为系统的瓶颈, 当集群规模增大时。 有些系统为了降低zk心态,新增了tracker,但tracker增加了系统运维难度。
    3.11 nimbus是系统单点
    3.12 缺乏反压机制
    3.12.1 当receiver忙不过来时, sender就直接扔弃掉tuple,
    3.12.2 如果关掉acker机制, 那无法量化drop掉的tuple
    3.12.3 因为上游worker执行的计算就被扔弃掉。
    3.12.4. 系统会变的难以预测(less predictable.)
    3.13 常常出现性能问题, 导致tuple fail, tuple replay, 执行变慢
    3.13.1 不良的replay, 任意一个tuple失败了,都会导致整个tuple tree fail, 不良的设计时(比如不重要的tuple失败),会导致tuple轻易被重发
    3.13.2 当内存很大时,长时间的gc,导致处理延时,甚至被误杀
    3.13.3 队列竞争

    Heron设计原则:

    (1)兼容老的storm api

    (2)实现2种策略, At most once/At least once

    架构:

    调度器

    Aurora是一个基于mesos的通用service scheduler, Hero基于Aurora 实现了一套Topology Scheduler, 并且这个调度器已经提供了一定的抽象,可以移植到yarn/mesos/ec2(我的理解应该稍加修改就可以运行在其他通用型调度器上)
    2/ 第一个container 运行 Topology Manager(TM), 其他的container 内部会运行一个Stream manager/Metrics Manager 和多个Heron Instance。 这里一个container类似一个docker感念,表示一个资源集合,是Aurora的调度单元, 多个container可以运行在一台机器上, 分配多少container由Aurora根据现有资源情况进行分配, 另外一个container设置了cgroup

    Topology Manager

    1. tm伴随整个topology生命周期, 提供topology状态的唯一contact (类似yarn的app master)
    2. 可以一主多备, 大家抢占zk 节点, 谁胜出,谁为master, 其他为standby

    Stream manager(SM)

    最大的改变就是源自Stream manager, Stream manager就相当于一个container的tuple的总线(hub)。 所有的Hero Instance(HI)都连接SM进行send/receive
    如果container内部一个HI 发送数据到另外一个HI,走的是本地快速通道。

    Backpressure 反压机制

    当下游处理速度变慢后,通过反压机制,可以通知上游进行减速, 避免数据因buffer被塞满而丢失,并因此带来资源浪费。

    TCP 反压:

    当一个HI 处理慢了后,则该HI的接收buffer会被填满, 紧接着本地SM的sending buffer被填满, ? 然后会传播到其他的SM和上游HI。
    这个机制很容易实现,但在实际使用中,存在很多问题。因为多个HI 共用SM, 不仅将上游的HI 降速了,也把下游的HI 降速。从而整个topology速度全部下架,并且长时间的降级。

    Spout 反压。

    这个机制是结合TCP 反压机制, 一旦SM 发现一个或多个HI 速度变慢,立刻对本地spout进行降级, 停止从这些spout读取数据。并且受影响的SM 会发送一个特殊的start backpressure message 给其他的sm,要求他们对spout进行本地降级。一旦出问题的HI 恢复速度后,本地的SM 会发送 stop backpressure message 解除降级。

    Stage-by-Stage 反压

    这个类似spout反压,但是一级一级向上反压。
    Heron最后采用的是spout反压, 因为实现比较简单,而且降级响应非常迅速。 并且可以很快定位到那个HI 处理速度慢了。 每个socket channel都绑定了一个buffer, 当buffer 的 queue size超过警戒水位时,触发反压,减少时,接触反压。
    这种机制,不会丢弃tuple,除了机器宕机。
    topology可以设置打开或关闭。

    Heron Instance

    (1) 一个task 一个进程,
    (2) 所有的进程之间通信都是使用protocol buffer
    (3) 一个gateway线程, 一个执行线程。 gateway线程负责和外围通信, sm/mm。 执行线程和现有storm的执行线程非常类似。执行线程会收集所有的metrics,然后发送给gateway线程。
    (4)这个data-in/data-out队列会限定大小, 当data-in 队列满了的时候, gateway线程停止从local SM 读取数据。同理如果data-out队列满,gateway会认为local SM不想接受更多的数据。 执行线程就不再emit或执行更多的tuple。
    (5)data-in/data-out队列大小不是固定, 如果是固定时, 当网络颠簸时,会导致内存中大量数据堆积无法发送出去,并触发GC, 并导致进一步的降级。因此是动态调整, 定期调整队列大小。 如果队列的capacity超过阀值时, 对其进行减半。这个操作持续进行指导队列的capacity维持在一个稳定的水位或0。这种方式有利避免GC的影响。 当队列的capcity小于某个阀值时, 会缓慢增长到配置大小或最大capacity值。

    Metrics manager(mm)

    收集所有的metrics,包括系统的和用户的metrics, 也包含SM的。 mm会发送metrics 给monitor系统(类似ganglia系统),同样也会给TM.

    流程:

    (1)提交任务, Aurora分配必要的资源和在一些机器上调度container
    (2)TM 在一个container上运行起来,并注册到ZK
    (3)每个container的SM 查询ZK 找到TM, 向TM 发送心跳。
    (4)当所有的SM 连上TM后, TM 执行分配算法, 不同的compoent到不同的container。 这个阶段叫物理执行计划(类似SQL解析和执行过程)。并将执行计划放到ZK。
    (5)SM 下载执行计划,并开始相互之间进行连接, 与此同时, 启动HI, hi开始发现container,下载他们的执行计划,并开始执行
    (6)整个topology完成初始化,开始正式的发送和接收数据。

    三种failure case

    1. 进程挂了
    1.1 如果TM 挂了, container会重启TM, TM 会从ZK 上重新下载执行计划。如果有一主多备,则备机会被promotion。 所有SM 会切到新的TM
    1.2 如果SM 挂了, container依旧会重启TM, 并从ZK 下载执行计划, 并检查是否有变化。其他的SM 会连到新的SM
    1.3 如果HI 挂了, 重启并下载执行计划,并重新执行。

    外围系统

    外围系统就介绍一下Heron Tracker

    Heron Tracker

    负责收集topology的信息, 类似一个gateway的角色。 通过watch zk,发现新的TM, 并获取topology的一些原数据。是一种Aurora service, 提供load balance在多个instance之间。
    可以提供REST API。可以获取
    (1) 逻辑和物理执行计划
    (2) 各种metrics, 系统的和用户的
    (3)日志link

    Heron UI/VIZ

    UI 提供传统的UI 方式。
    VIZ 提供全新的UI, 可以看到更多的metrics, 曲线和健康检查。比UI 炫酷很多。

    性能报告和测试过程:

    了解整个系统架构和工作流程后, 后面的性能测试报告, 没有看了, 也差不多有个概念了。

    个人思考和总结:

    (1) 相对于JStorm, Heron把角色剥离的更清晰明了。

    (1.1)调度器

    scheduler 负责container的调度,这个调度非常的纯粹,可以直接复用yarn/mesos/, 现有的TM 其实就是nimbus,唯一一点变化就是这个TM 只负责自己topology的信息, 不是负责所有topology。这个TM 就相当于yarn下的app master, 非常适合目前主流的调度系统。 当集群规模非常大的时候, 并且每个应用都比较大的时候, 这个架构会非避免nimbus成为瓶颈。 不过storm-on-yarn模式下, 可能通过一个nimbus管理一个小的逻辑集群,也可以解决这个问题, 并且当topology 比较小的时候, 可以通过大家公用一个nimbus,节省一些资源。

    (1.2) container

    这里特别要把container拿出来仔细说一下, 这个container是Auron的一个资源单元。如果将Auron类似JStorm的worker, 你就会发现角色和架构是多么的类似。
    (1.2.1) container和jstorm的worker都可以设置cgroup,达到一定的资源隔离
    (1.2.2)container内部的SM/MM 其实就类似jstorm worker内部drainer/dispatcher/metricsreport线程。
    但container 相对jstorm 的worker 还有一些其他的优缺点:
    优点:
    (1.2.3)这个粒度可以控制的更自由, 这个container 可以控制cpu 到更多的核,更多的内存上限。 但jstorm的worker 基本上最多10个核, 而且当内存太大,在core dump和gc的时候压力会比较大。
    (1.2.4)container还带一定的supervisor的功能,当container内部任何进程挂了, container都会负责把它重启, 因此整个系统的心态逻辑会非常的简单。 ?Auron <–> container, ? ?Container <– > tm/sm/mm/hi. ?整个系统的心跳压力模型会更简单, 心跳压力(对ZK)也更小

    性能:

    ppt和文档里面说性能有15倍以上的提升, 这个在某些设置下是可以达到这种效果, 但通常情况性能应该比JStorm还要差一点点。
    如何达到这种效果呢,
    (1)前提条件是, grouping方式不是选择localOrShuffle或者localFirst
    ?就是把container设置的尽可能的大, 最好是独占一台机器。这样SM和SM 之间的通信就会大幅减少, 而一个container内部的HI 通信走内部通道。因此会有更多的HI走内部通道。而jstorm/storm, worker比较多的时候, worker和worker之间会创建netty connection, 更多的netty connection会带来更多的内存消耗和线程切换。 尤其是worker数超过200个以上时。
    但为什么说通常情况下,性能应该还要比JStorm差一点点呢。
    因为在生产环境, container 是不可能占有这么多资源, 否则Auron的调度太粗粒度,一台机器只跑一个大container, 会导致更严重的资源浪费。正常情况下, 一个container绑定2 ~ 4个核, 这个时候,和一个普通的jstorm worker没有什么区别, 但jstorm worker内部task之间数据传输的效率会远远高于Heron, 因为Heron的HI 之间即使是走进程间通信方式, 也逃脱不了序列化和反序化的动作, 这个动作肯定会耗时, 更不用说IPC 之间的通信效率和进程内的通信效率。

    资源利用率:

    Heron 可以非常精准的控制资源使用情况, 能够保证, 申请多少资源,就会用多少资源。 在大集群这个级别会节省资源,在topology级别浪费资源。
    如果JStorm-on-yarn这种系统下, 因为每个逻辑集群会超量申请一些资源, 因此资源可能会多有少量浪费。无法做到像Heron一样精准。 如果改造nimbus成为topology level 类似TM(腾讯在jstorm基础上实现了这个功能), 这个问题就可以很好的解决。在普通standalone的JStorm模式下, jstorm不会浪费资源, 但因为Standalone,导致这些机器不能被其他编程框架使用, 因此也可以说浪费一定的资源。 但这种情况就是 资源隔离性– 资源利用率的一种平衡, 现在这种根据线上运行情况,浪费程度可以接受。
    在topology这个粒度进行比较时, Heron应该会消耗掉更多的资源。 最大的问题在于, Heron中一个task就是一个process, 论文中没有描叙这个process的公共线程, 可以肯定的是, 这个process比如还有大量的公共线程, 比如ZK-client/network-thread/container-heartbeat-thread, 一个task一个process,这种设计,相对于一个worker跑更多的task而言,肯定浪费了更多的CPU 和内存。
    至于吐槽在Storm和JStorm,超量申请资源问题, 比如一个topology只要100 个cpu core能完成, 申请了600个core, 这个问题,在jstorm中是绝对不存在的, jstorm的cgroup设置是share + limit方式, 也就是上限是600 core,但topology如果用不到600个core, 别的topology可以抢占到cpu core。 在内存方面, jstorm的worker 内存申请量,是按照worker最大内存申请, 但现代操作系统早就做到了, 给你一个上限, 当你用不了这么多的时候, 其他进程可以抢占。

    在稳定性和debug-ability这点上:

    Heron 优势非常大, 主要就是通过2点:
    (1) 自动降级策略, 也就是论文说的backpressure, 这个对于大型应用是非常有效的, 也很显著提高稳定性。
    (2) 一个task一个process, 这个结合降级策略,可以非常快速定位到出错的task, 另外因为一个task 一个process, task之间的影响会非常快, 另外也避免了一个进程使用过大的内存,从而触发严重的GC 问题。

    最后总结:

    Heron更适合超大规模的机器, 超过1000台机器以上的集群。 在稳定性上有更优异的表现, 在性能上,表现一般甚至稍弱一些,在资源使用上,可以和其他编程框架共享资源,但topology级别会更浪费一些资源。
    另外应用更偏向于大应用,小应用的话,会多一点点资源浪费, 对于大应用,debug-ability的重要性逐渐提升。 另外对于task的设计, task会走向更重更复杂, 而JStorm的task是向更小更轻量去走。
    未来JStorm可以把自动降级策略引入, 通过实现阿里妈妈的ASM, debug-ability应该远超过storm, 不会逊色于Heron, 甚至更强。

    其他流式编程框架

    1.S4 Distributed Stream Computing Platform.?http://incubator.apache.org/s4/
    2. Spark Streaming. https://spark.apache.org/streaming/?
    3. Apache Samza. http://samza.incubator.apache.org
    4. Tyler Akidau, Alex Balikov, Kaya Bekiroglu, Slava Chernyak, Josh?Haberman, Reuven Lax, Sam McVeety, Daniel Mills, Paul?Nordstrom, Sam Whittle: MillWheel: Fault-Tolerant Stream?Processing at Internet Scale.?PVLDB 6(11): 1033-1044 (2013)
    5.?Mohamed H. Ali, Badrish Chandramouli, Jonathan Goldstein,Roman Schindlauer: The Extensibility Framework in Microsoft?StreamInsight.?ICDE?2011: 1242-1253
    6. Rajagopal Ananthanarayanan, Venkatesh Basker, Sumit Das, Ashish?Gupta, Haifeng Jiang, Tianhao Qiu, Alexey Reznichenko, Deomid?Ryabkov, Manpreet Singh, Shivakumar Venkataraman: Photon:?Fault-tolerant and Scalable Joining of Continuous Data Streams.?SIGMOD?2013: 577-588
    8. Simon Loesing, Martin Hentschel, Tim Kraska, Donald Kossmann:?Stormy: An Elastic and Highly Available Streaming Service in the?Cloud. EDBT/ICDT Workshops 2012: 55-60
    注:转载文章均来自于公开网络,仅供学习使用,不会用于任何商业用途,如果侵犯到原作者的权益,请您与我们联系删除或者授权事宜,联系邮箱:contact@dataunion.org。转载数盟网站文章请注明原文章作者,否则产生的任何版权纠纷与数盟无关。

    展开全文
  • 很多人在学习大数据的时候比较迷茫,不知从何学起,也不能够比较系统、全面的了解大数据框架。为此,过往记忆花了一个周末的时间把 Awesome Big Data (https...
  • PUN在使用过程中常遇到的问题和疑问,本篇文章可以帮你... 不过,可以推荐以下内容帮你进行选择:PhotonPUN说明Photon产品说明“Photon Cloud或Photon Server如果您仍然有疑问,请随时与我联系,直接进行留言,帮...
  • 《区块链技术(去中心化的数据库)》 《区块链技术(去中心化的数据库)》 版本 作者 参与者 完成日期 备注 YanlzFramework_... 2019.10.2...
  • 在 Spark AI Summit 的第一天会议中,数砖重磅发布了 Delta Engine。这个引擎 100% 兼容 Apache Spark 的向量化查询引擎,并且利用了现代化的 C...
  • 5.1容器典型应用场景 Docker技术的出现和迅猛发展,已成为云计算产业的新的热点。容器使用范围也由互联网厂商快速向传统企业扩展,大量传统企业开始测试和尝试部署容器云。相比于企业对容器技术的逐步接受与认同,...
  • 今天给大家分享第四范式在推荐系统大规模特征工程与Spark基于LLVM优化方面的实践,主要包括以下四个主题。 大规模推荐系统特征工程介绍 SparkSQL与FESQL架构设计 基于LLVM的Spark性能优化 推荐系统与Spark优化总结 ...
  • wordpress用cdnSpeeding up a website load time is one of the most crucial factors today that leads to its success. So, if want to accelerate your WordPress site speed probably you might choose to ...
  • 云原生应用程序 Niraj Tolia是Kasten的联合创始人兼首席执行官。 普遍的误解是Kubernetes尚未为MySQL和MongoDB等有状态应用程序做好准备,其半衰期非常长。 这种误解是由最初对社区内无状态应用程序的关注与相对...
  • javascript网络 对于物联网而言,2015年是重要的一年。 我们已经看到了设备尺寸和功能的巨大进步,像微软和三星这样的大型公司确实正在进入这个领域,整个物联网社区正在开始变得越来越大! 在过去的两年里,在...
  • 本周六下午,上海会场的讲师已经准备就绪~SPARK + AI SUMMIT 2020 中文精华版线上峰会,十四位来自北京、上海、杭州、硅谷的PMC和意见领袖,一一还原英文现场的经典分享。...
  • 本周六下午,上海会场的讲师已经准备就绪~SPARK + AI SUMMIT 2020 中文精华版线上峰会,十四位来自北京、上海、杭州、硅谷的PMC和意见领袖,一一还原英文现场的经典分享。...
  • 开源物联网平台

    2018-07-30 10:35:57
    物联网(IoT)是帮助人工智能(AI)以更好的方式控制和理解事物的未来技术。 我们收集了一些最有名的物联网平台,帮助您以受控方式开发物联网项目。 物联网平台是帮助设置和管理互联网连接设备的组件套件。...
  • 开源软件中有大量专家构建的代码,大大节省了开发人员的时间和成本,热衷于开源的大厂们总是能够带给我们新的惊喜。2016年9月GitHub报告显示,GitHub已经有超过 520 万的用户和超 30 万的组织。...
  • 物联网(IoT)是帮助人工智能(AI)以更好的方式控制和理解事物的未来技术。 我们收集了一些最有名的物联网平台,帮助您以受控方式开发物联网项目。物联网平台是帮助设置和管理互联网连接设备的组件套件。...
1 2 3
收藏数 45
精华内容 18
关键字:

photon 传输大数据