资源描述
大数据平台框架选型分析
一、 需求
城市大数据平台,首先是作为一个数据管理平台,核心需求是数据的存和取,然后因为海量数据、多数据类型的信息需要有丰富的数据接入能力和数据标准化处理能力,有了技术能力就需要纵深挖掘附加价值更好的服务,如信息统计、分析挖掘、全文检索等,考虑到面向的客户对象有的是上层的应用集成商,所以要考虑灵活的数据接口服务来支撑。
二、 平台产品业务流程
三、 选型思路
必要技术组件服务:
ETL > 非/关系数据仓储 > 大数据处理引擎 > 服务协调 > 分析BI > 平台监管
四、 选型要求
1. 需要满足我们平台的几大核心功能需求,子功能不设局限性。如不满足全部,需要对未满足的其它核心功能的开放使用服务支持
2. 国内外资料及社区尽量丰富,包括组件服务的成熟度流行度较高
3. 需要对选型平台自身所包含的核心功能有较为深入的理解,易用其API或基于源码开发
4. 商业服务性价比高,并有空间脱离第三方商业技术服务
5. 一些非功能性需求的条件标准清晰,如承载的集群节点、处理数据量及安全机制等
五、 选型需要考虑
简单性:亲自试用大数据套件。这也就意味着:安装它,将它连接到你的Hadoop安装,集成你的不同接口(文件、数据库、B2B等等),并最终建模、部署、执行一些大数据作业。自己来了解使用大数据套件的容易程度——仅让某个提供商的顾问来为你展示它是如何工作是远远不够的。亲自做一个概念验证。
广泛性:是否该大数据套件支持广泛使用的开源标准——不只是Hadoop和它的生态系统,还有通过SOAP和REST web服务的数据集成等等。它是否开源,并能根据你的特定问题易于改变或扩展?是否存在一个含有文档、论坛、博客和交流会的大社区?
特性:是否支持所有需要的特性?Hadoop的发行版本(如果你已经使用了某一个)?你想要使用的Hadoop生态系统的所有部分?你想要集成的所有接口、技术、产品?请注意过多的特性可能会大大增加复杂性和费用。所以请查证你是否真正需要一个非常重量级的解决方案。是否你真的需要它的所有特性?
陷阱:请注意某些陷阱。某些大数据套件采用数据驱动的付费方式(“数据税”),也就是说,你得为自己处理的每个数据行付费。因为我们是在谈论大数据,所以这会变得非常昂贵。并不是所有的大数据套件都会生成本地Apache Hadoop代码,通常要在每个Hadoop集群的服务器上安装一个私有引擎,而这样就会解除对于软件提供商的独立性。还要考虑你使用大数据套件真正想做的事情。某些解决方案仅支持将Hadoop用于ETL来填充数据至数据仓库,而其他一些解决方案还提供了诸如后处理、转换或Hadoop集群上的大数据分析。ETL仅是Apache Hadoop和其生态系统的一种使用情形。
六、 方案分析
自建套件
hortonworks
国内类exadoop
TDW+fineBI
成本
100%开源
培训服务3k/人
授权支持100K
性能
单集群最大规模达到5600台,处理数据量可达百P级
功能
按需整合
HDFS和YARN数据管理
从各种引擎访问数据
根据策略加载和管理数据
身份验证、授权和数据保护
大规模配置、管理、监控和运营 Hadoop 群集
与您的数据分析工具集成
跨平台配置部署
易操作性
安装复杂,操作需要专业培训。
图形设计界面,参数配置,易上手。
应用成熟度
国外大客户较多
文档/社区支持
文档较多,社区一般,相关专业培训较多。
官方社区比较活跃(英文)中文社区有1个文档较少,多为英文文档
文档较少,无商用服务,无任何技术支持
扩展性
开源开放
开源开放
开源开放
移植性
支持多操作系统
支持多操作系统
支持多操作系统
支持多操作系统
监控
监控功能强大Armbri
元
无
优势
1、 跟随产品阶段逐步完善整合自定义套件
2、 自选流行组件,资料丰富
1、 开源强大支持的开源套件
2、 配套商业服务支持
1、 国产套件
2、 交流支持方便
3、 商业服务较灵活
1、开源中文支持
2、基于大数据处理核心,灵活组合其它组件来适应不同产品阶段及项目
劣势
整合周期不可控
商业成本较高
依赖于打包服务公司的支持
半定制套件,预学现用
七、 相关资料
https://prestodb.io/
HDP (hortonworks)
A Complete Enterprise Hadoop Data Platform
开源工具汇总整理
类别
名称
备注
查询引擎
Phoenix
Salesforce公司出品,Apache HBase之上的一个SQL中间层,完全使用Java编写
Stinger
原叫Tez,下一代Hive,Hortonworks主导开发,运行在YARN上的DAG计算框架
Presto
Facebook开源
Shark
Spark上的SQL执行引擎
Pig
基于Hadoop MapReduce的脚本语言
Cloudera Impala
参照Google Dremel实现,能运行在HDFS或HBase上,使用C++开发
Apache Drill
参照Google Dremel实现
Apache Tajo
一个运行在YARN上支持SQL的分布式数据仓库
Hive
基于Hadoop MapReduce的SQL查询引擎
流式计算
Facebook Puma
实时数据流分析
Twitter Rainbird
分布式实时统计系统,如网站的点击统计
Yahoo S4
Java开发的一个通用的、分布式的、可扩展的、分区容错的、可插拔的无主架构的流式系统
Twitter Storm
使用Java和Clojure实现
迭代计算
Apache Hama
建立在Hadoop上基于BSP(Bulk Synchronous Parallel)的计算框架,模仿了Google的Pregel。
Apache Giraph
建立在Hadoop上的可伸缩的分布式迭代图处理系统,灵感来自BSP(bulk synchronous parallel)和Google的Pregel
HaLoop
迭代的MapReduce
Twister
迭代的MapReduce
离线计算
Hadoop MapReduce
经典的大数据批处理系统
Berkeley Spark
使用Scala语言实现,和MapReduce有较大的竞争关系,性能强于MapReduce
DataTorrent
基于Hadoop2.X构建的实时流式处理和分析平台,每秒可以处理超过10亿个实时事件
键值存储
LevelDB
Google开源的高效KV编程库,注意它只是个库
RocksDB
Facebook开源的,基于Google的LevelDB,但提高了扩展性可以运行在多核处理器上
HyperDex
下一代KV存储系统,支持strings、integers、floats、lists、maps和sets等丰富的数据类型
TokyoCabinet
日本人Mikio Hirabayashi(平林干雄)开发的一款DBM数据库,注意它只是个库(大名鼎鼎的DBM数据库qdbm就是Mikio Hirabayashi开发的),读写非常快
Voldemort
一个分布式键值存储系统,是Amazon Dynamo的一个开源克隆,LinkedIn开源
Amazon Dynamo
亚马逊的KV模式的存储平台,无主架构
Tair
淘宝出品的高性能、分布式、可扩展、高可靠的KV结构存储系统,专为小文件优化,并提供简单易用的接口(类似Map),Tair支持Java和C版本的客户端
Apache Accumulo
一个可靠的、可伸缩的、高性能的排序分布式的KV存储系统,参照Google Bigtable而设计,建立在Hadoop、Thrift和Zookeeper之上。
Redis
使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、单机版KV数据库。从2010年3月15日起,Redis的开发工作由VMware主持
OceanBase
支持海量数据的高性能分布式数据库系统,实现了数千亿条记录、数百TB数据上的跨行跨表事务
Amazon SimpleDB
一个可大规模伸缩、用 Erlang 编写的高可用数据存储
Vertica
惠普2011收购Vertica,Vertica是传统的关系型数据库,基于列存储,同时支持MPP,使用标准的SQL查询,可以和Hadoop/MapReduce进行集成
Cassandra
Hadoop成员,Facebook于2008将Cassandra开源,基于O(1)DHT的完全P2P架构
HyperTable
搜索引擎公司Zvents针对Bigtable的C++开源实现
FoundationDB
支持ACID事务处理的NoSQL数据库,提供非常好的性能、数据一致性和操作弹性
HBase
Bigtable在Hadoop中的实现,最初是Powerset公司为了处理自然语言搜索产生的海量数据而开展的项目
文件存储
CouchDB
面向文档的数据存储
MongoDB
文档数据库
Tachyon
加州大学伯克利分校的AMPLab基于Hadoop的核心组件开发出一个更快的版本Tachyon,它从底层重构了Hadoop平台。
KFS
GFS的C++开源版本
HDFS
GFS在Hadoop中的实现
资源管理
Twitter Mesos
Google Borg的翻版
Hadoop Yarn
类似于Mesos
日志收集系统
Facebook Scribe
Facebook开源的日志收集系统,能够从各种日志源上收集日志,存储到一个中央存储系统(可以是NFS,分布式文件系统等)上,以便于进行集中统计分析处理,常与Hadoop结合使用,Scribe用于向HDFS中Push日志
Cloudera Flume
Cloudera提供的日志收集系统,支持对日志的实时性收集
logstash
日志管理、分析和传输工具,可配合kibana、ElasticSearch组建成日志查询系统
kibana
为日志提供友好的Web查询页面
消息系统
StormMQ
ZeroMQ
很底层的高性能网络库
RabbitMQ
在AMQP基础上完整的,可复用的企业消息系统
Apache ActiveMQ
能力强劲的开源消息总线
Jafka
开源的、高性能的、跨语言分布式消息系统,最早是由Apache孵化的Kafka(由LinkedIn捐助给Apache)克隆而来
Apache Kafka
Linkedin于2010年12月份开源的分布式消息系统,它主要用于处理活跃的流式数据,由Scala写成
分布式服务
ZooKeeper
分布式锁服务,PoxOS算法的实现,对应Google的Chubby
RPC
Apache Avro
Hadoop中的RPC
Facebook Thrift
RPC,支持C++/Java/PHP等众多语言
集群管理
Nagios
监视系统运行状态和网络信息的监视系统
Ganglia
UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。
Apache Ambari
Hadoop成员,管理和监视Apache Hadoop集群的开源框架
基础设施
LevelDB
Google顶级大牛开发的单机版键值数据库,具有非常高的写性能
SSTable
源于Google,orted String Table
RecordIO
源于Google
Flat Buffers
针对游戏开发的,高效的跨平台序列化库,相比Proto Buffers开销更小,因为Flat Buffers没有解析过程
Protocol Buffers
Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。
Consistent Hashing
1997年由麻省理工学院提出,目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似,基本解决了在P2P环境中最为关键的问题——如何在动态的网络拓扑中分布存储和路由。
Netty
JBOSS提供的一个java开源框架,提供异步的、事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络服务器和客户端程序。
BloomFilter
布隆过滤器,1970年由布隆提出,是一个很长的二进制矢量和一系列随机映射函数,可以用于检索一个元素是否在一个集合中,优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。
搜索引擎
Nutch
开源Java 实现的搜索引擎,诞生Hadoop的地方。
Lucene
一套信息检索工具包,但并不包含搜索引擎系统,它包含了索引结构、读写索引工具、相关性工具、排序等功能。
SolrCloud
基于Solr和Zookeeper的分布式搜索, Solr4.0 的核心组件之一,主要思想是使用 Zookeeper 作为集群的配置信息中心
Solr
Solr是基于Lucene的搜索。
ElasticSearch
开源的(Apache2协议),分布式的,RESTful的,构建在Apache Lucene之上的的搜索引擎。
Sphinx
一个基于SQL的全文检索引擎,可结合MySQL、PostgreSQL做全文检索,可提供比数据库本身更专业的搜索功能,单一索引可达1亿条记录,1000万条记录情况下的查询速度为0.x秒(毫秒级)。
SenseiDB
Linkin公司开发的一个开源分布式实时半结构化数据库,在全文索引的基础封装了Browse Query Language (BQL,类似SQL)的查询语法。
数据挖掘
Mahout
Hadoop成员,目标是建立一个可扩展的机器学习库
Iaas
OpenStack
美国国家航空航天局和Rackspace合作研发的,以Apache许可证授权云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作,旨在为公共及私有云的建设与管理提供软件的开源项目。6个核心项目:Nova(计算,Compute),Swift(对象存储,Object),Glance(镜像,Image),Keystone(身份,Identity),Horizon(自助门户,Dashboard),Quantum & Melange(网络&地址管理),另外还有若干社区项目,如Rackspace(负载均衡)、Rackspace(关系型数据库)。
Docker
应用容器引擎,让开发者可打包应用及依赖包到一个可移植的容器中,然后发布到Linux机器上,也可实现虚拟化。
Kubernetes
Google开源的容器集群管理系统
Imctfy
Google开源的Linux容器
监控管理
Dapper
Google生产环境下的大规模分布式系统的跟踪系统
Zipkin
Twitter开源的参考Google Dapper而开发,使用Apache Cassandra做为数据存储系统
展开阅读全文