大数据平台框架选型分析一、需求城市大数据平台,首先是作为一个数据管理平台,核心需求是数据的存和取,然后因为海量数据、多数据类型的信息需要有丰富的数据接入能力和数据标准化处理能力,有了技术能力就需要纵深挖掘附加价值更好的服务,如信息统计、分析挖掘、全文检索等,考虑到面向的客户对象有的是上层的应用集成商,所以要考虑灵活的数据接口服务来支撑。二、平台产品业务流程三、选型思路必要技术组件服务:ETL非/关系数据仓储大数据处理引擎服务协调分析BI平台监管四、选型要求1.需要满足我们平台的几大核心功能需求,子功能不设局限性。如不满足全部,需要对未满足的其它核心功能的开放使用服务支持2.国内外资料及社区尽量丰富,包括组件服务的成熟度流行度较高3.需要对选型平台自身所包含的核心功能有较为深入的理解,易用其API或基于源码开发4.商业服务性价比高,并有空间脱离第三方商业技术服务5.一些非功能性需求的条件标准清晰,如承载的集群节点、处理数据量及安全机制等五、选型需要考虑简单性:亲自试用大数据套件。这也就意味着:安装它,将它连接到你的Hadoop安装,集成你的不同接口(文件、数据库、B2B等等),并最终建模、部署、执行一些大数据作业。自己来了解使用大数据套件的容易程度——仅让某个提供商的顾问来为你展示它是如何工作是远远不够的。亲自做一个概念验证。广泛性:是否该大数据套件支持广泛使用的开源标准——不只是Hadoop和它的生态系统,还有通过SOAP和RESTweb服务的数据集成等等。它是否开源,并能根据你的特定问题易于改变或扩展?是否存在一个含有文档、论坛、博客和交流会的大社区?特性:是否支持所有需要的特性?Hadoop的发行版本(如果你已经使用了某一个)?你想要使用的Hadoop生态系统的所有部分?你想要集成的所有接口、技术、产品?请注意过多的特性可能会大大增加复杂性和费用。所以请查证你是否真正需要一个非常重量级的解决方案。是否你真的需要它的所有特性?陷阱:请注意某些陷阱。某些大数据套件采用数据驱动的付费方式(“数据税”),也就是说,你得为自己处理的每个数据行付费。因为我们是在谈论大数据,所以这会变得非常昂贵。并不是所有的大数据套件都会生成本地ApacheHadoop代码,通常要在每个Hadoop集群的服务器上安装一个私有引擎,而这样就会解除对于软件提供商的独立性。还要考虑你使用大数据套件真正想做的事情。某些解决方案仅支持将Hadoop用于ETL来填充数据至数据仓库,而其他一些解决方案还提供了诸如后处理、转换或Hadoop集群上的大数据分析。ETL仅是ApacheHadoop和其生态系统的一种使用情形。六、方案分析自建套件hortonworks国内类exadoopTDW+fineBI成本100%开源培训服务3k/人授权支持100K性能单集群最大规模达到5600台,处理数据量可达百P级功能按需整合HDFS和YARN数据管理从各种引擎访问数据根据策略加载和管理数据身份验证、授权和数据保护大规模配置、管理、监控和运营Hadoop群集与您的数据分析工具集成跨平台配置部署易操作性安装复杂,操作需要专业培训。图形设计界面,参数配置,易上手。应用成熟度国外大客户较多文档/社区支持文档较多,社区一般,相关专业培训较多。官方社区比较活跃(英文)中文社区有1个文档较少,多为英文文档文档较少,无商用服务,无任何技术支持扩展性开源开放开源开放开源开放移植性支持多操作系统支持多操作系统支持多操作系统支持多操作系统监控监控功能强大Armbri元无优势1、跟随产品阶段逐步完善整合自定义套件2、自选流行组件,资料丰富1、开源强大支持的开源套件2、配套商业服务支持1、国产套件2、交流支持方便3、商业服务较灵活1、开源中文支持2、基于大数据处理核心,灵活组合其它组件来适应不同产品阶段及项目劣势整合周期不可控商业成本较高依赖于打包服务公司的支持半定制套件,预学现用七、相关资料://(hortonworks)ACompleteEnterpriseHadoopDataPlatform开源工具汇总整理类别名称备注查询引擎PhoenixSalesforce公司出品,ApacheHBase之上的一个SQL中间层,完全使用Java编写Stinger原叫Tez,下一代Hive,Hortonworks主导开发,运行在YARN上的DAG计算框架PrestoFacebook开源SharkSpark上的SQL执行引擎Pig基于HadoopMapReduce的脚本语言ClouderaImpala参照GoogleDremel实现,能运行在HDFS或HBase上,使用C++开发ApacheDrill参照GoogleDremel实现ApacheTajo一个运行在YARN上支持SQL的分布式数据仓库Hive基于HadoopMapReduce的SQL查询引擎流式计算FacebookPuma实时数据流分析TwitterRainbird分布式实时统计系统,如网站的点击统计YahooS4Java开发的一个通用的、分布式的、可扩展的、分区容错的、可插拔的无主架构的流式系统TwitterStorm使用Java和Clojure实现迭代计算ApacheHama建立在Hadoop上基于BSP(BulkSynchronousParallel)的计算框架,模仿了Google的Pregel。ApacheGiraph建立在Hadoop上的可伸缩的分布式迭代图处理系统,灵感来自BSP(bulksynchronousparallel)和Google的PregelHaLoop迭代的MapReduceTwister迭代的MapReduce离线计算HadoopMapReduce经典的大数据批处理系统BerkeleySpark使用Scala语言实现,和MapReduce有较大的竞争关系,性能强于MapReduceDataTorrent基于Hadoop2.X构建的实时流式处理和分析平台,每秒可以处理超过10亿个实时事件键值存储LevelDBGoogle开源的高效KV编程库,注意它只是个库RocksDBFacebook开源的,基于Google的LevelDB,但提高了扩展性可以运行在多核处理器上HyperDex下一代KV存储系统,支持strings、integers、floats、lists、maps和sets等丰富的数据类型TokyoCabinet日本人MikioHirabayashi(平林干雄)开发的一款DBM数据库,注意它只是个库(大名鼎鼎的DBM数据库qdbm就是MikioHirabayashi开发的),读写非常快Voldemort一个分布式键值存储系统,是AmazonDynamo的一个开源克隆,LinkedIn开源AmazonDynamo亚马逊的KV模式的存储平台,无主架构Tair淘宝出品的高性能、分布式、可扩展、高可靠的KV结构存储系统,专为小文件优化,并提供简单易用的接口(类似Map),Tair支持Java和C版本的客户端ApacheAccumulo一个可靠的、可伸缩的、高性能的排序分布式的KV存储系统,参照GoogleBigtable而设计,建立在Hadoop、Thrift和Zookeeper之上。Redis使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、单机版KV数据库。从2010年3月15日起,Redis的开发工作由VMware主持OceanBase支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务AmazonSimpleDB一个可大规模伸缩、用Erlang编写的高可用数据存储Vertica惠普2011收购Vertica,Vertica是传统的关系型数据库,基于列存储,同时支持MPP,使用标准的SQL查询,可以和Hadoop/MapReduce进行集成CassandraHadoop成员,Facebook于2008将Cassandra开源,基于O(1)DHT的完全P2P架构HyperTable搜索引擎公司Zvents针对Bigtable的C++开源实现FoundationDB支持ACID事务处理的NoSQL数据库,提供非常好的性能、数据一致性和操作弹性HBaseBigtable在Hadoop中的实现,最初是Powerset公司为了处理自然语言搜索产生的海量数据而开展的项目文件存储CouchDB面向文档的数据存储MongoDB文档数据库Tachyon加州大学伯克利分校的AMPLab基于Hadoop的核心组件开发出一个更快的版本Tachyon,它从底层重构了Hadoop平台。KFSGFS的C++开源版本HDFSGFS在Hadoop中的实现资源管理TwitterMesosGoogleBorg的翻版HadoopYarn类似于Mesos日志收集系统FacebookScribeFacebook开源的日志收集系统,能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理,常与Hadoop结合使用,Scribe用于向HDFS中Push日志ClouderaFlumeCloudera提供的日志收集系统,支持对日志的实时性收集logstash日志管理、分析和传输工具,可配合kibana、ElasticSearch组建成日志查询系统kibana为日志提供友好的Web查询页面消息系统StormMQZeroMQ很底层的高性能网络库RabbitMQ在AMQP基础上完整的,可复用的企业消息系统ApacheActiveMQ能力强劲的开源消息总线Jafka开源的、高性能的、跨语言分布式消息系统,最早是由Apache孵化的Kafka(由LinkedIn捐助给Apache)克隆而来ApacheKafkaLinkedin于2010年12月份开源的分布式消息系统,它主要用于处理活跃的流式数据,由Scala写成分布式服务ZooKeeper分布式锁服务,PoxOS算法的实现,对应Google的ChubbyRPCApacheAvroHadoop中的RPCFacebookThriftRPC,支持C++/Java/PHP等众多语言集群管理Nagios监视系统运行状态和网络信息的监视系统GangliaUCBerkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。ApacheAmbariHadoop成员,管理和监视ApacheHadoop集群的开源框架基础设施LevelDBGoogle顶级大牛开发的单机版键值数据库,具有非常高的写性能SSTable源于Google,ortedStringTableRecordIO源于GoogleFlatBuffers针对游戏开发的,高效的跨平台序列化库,相比ProtoBuffers开销更小,因为FlatBuffers没有解析过程ProtocolBuffersGoogle公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。ConsistentHashing1997年由麻省理工学院提出,目标是为了解决因特网中的热点(Hotspot)问题,初衷和CARP十分类似,基本解决了在P2P环境中最为关键的问题——如何在动态的网络拓扑中分布存储和路由。NettyJBOSS提供的一个java开源框架,提供异步的、事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络服务器和客户端程序。BloomFilter布隆过滤器,1970年由布隆提出,是一个很长的二进制矢量和一系列随机映射函数,可以用于检索一个元素是否在一个集合中,优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。搜索引擎Nutch开源Java实现的搜索引擎,诞生Hadoop的地方。Lucene一套信息检索工具包,但并不包含搜索引擎系统,