大数据环境下Clearinghouse应具备的特性
实时查询
快速响应查询,并实时返回查询结果
较低的分析延迟
业务需求变化时,能快速反应;对数据进行复杂分析时,能在合理时间范围内完成
高容错性
查询和数据分析失败时,只需重做部分工作
高度可扩展性
横向大规模可扩展
较低成本
较高的性价比
下面通过比较数据库和Hadoop,提出结合数据库和hadoop各自优点设计Clearinghouse。
1)较低的分析延迟
当系统按需服务的需求发生变化时,系统能够动态地适应按需服务环境的变化,能在合理的时间范围内处理海量数据。
2)高容错性
海量数据的处理通常是通过并行系统来解决,因此要求在处理处理过程中,当部分节点失效的情况下,不需要重做整个任务,只需要重做部分工作。在大规模机群环境下,节点的失败将不再是稀有事件,根据google报告,平均每个MapReduce数据处理任务就有1.2个工作节点失效,因此在大规模机群环境下,系统不能依赖于硬件来保证容错性,要更多地考虑软件级容错。
并行数据库容错能力较差。当一个查询运行于并行数据库上时,一旦一个节点出现故障,并行数据库就必须重新执行该查询。因此,当一个集群中的单点故障发生率较高时,并行数据仓库的性能就会下降。在存储海量数据的大规模机群环境下,查询失败将会变为一个普通事件,在极端情况下,有可能会出现不停重做查询的情况。
hadoop有较好的容错性,如果某个节点失败,只需要重新调度执行该节点的任务即可,不需要重新提交全部任务。
3)容易横向扩展
为了支持海量数据并行处理,不能依靠一台或少数几台机器的升级(纵向扩展)满足数据量的快速增长,而是希望系统能够通过横向可扩展来实现此目标。
普遍认为无共享结构(shared nothing每个节点拥有私有内存和磁盘,并且通过高速网络同其它节点互连)具备较好的扩展性,分析型操作往往涉及大规模的并行扫描、多维聚集及星型连接操作,这些操作也比较适合在无共享结构的网络环境运行。
并行数据库大多支持有限扩展。一方面,并行数据库需要高端硬件来保证其可靠性,如果并行数据库要进行大规模扩展,其代价会很高,从而限制了并行数据库的扩展性。
另一方面从CAP理论考虑,一个分布式系统不可能同时满足数据一致性、可用性和分区容忍性这三个需求,选择其中任两项,便会损害另一项,而并行数据库追求的是数据一致性和系统的可用性,从而影响了它的扩展能力。
Hadoop由于各节点的松耦合性,使其具有卓越的扩展能力。Hadoop集群中的节点可以被任意地移除,而几乎不影响现有任务的运行,同时其扩展能力已在工业界得到了充分验证,如Google、Facebook、百度、阿里巴巴等。
4)较低成本:较高的性价比
在满足需求的前提下,某技术成本越低,其生命力就越强,需要指出的是成本是一个综合指标,不仅仅是硬件或软件的代价,还应包括日常运维成本(网络费用、电费、建筑等)和管理人员成本等,据报告,数据中心的主要成本不是硬件的购置成本,而是日常运维成本,因此,在设计系统时需要更多地关注此项内容。
并行数据库大部分是商业化的,需要高端硬件的支持和购买昂贵的软件系统。
Hadoop对硬件的要求较低,可以基于异构的廉价硬件来搭建机群,同时Hadooop是免费开源的,因此其构建成本比并行数据库低。
5)实时查询
Clearinghouse的基本功能是能够根据用户的需求查询空间元数据,并快速返回查询结果。这在海量数据环境下,对数据的更新、查询提取了新的需求。
并行数据库由于采用了许多先进的技术手段和算法,如索引、数据压缩、视图等,使其查询性能很高。
在同等硬件条件下,Hadoop的查询性能远低于并行数据库,这是由其最初的设计定位决定的,MapReduce的设计初衷是面向非结构化数据的处理,这些数据具有数据量大,处理复杂等特点,而且往往是一次性处理,为了获得较好的扩展能力和容错能力,MapReduce采取了基于扫描的处理模式和对中间结果步步物化的执行策略,从而导致较高的I/O代价,为了减少数据预处理时间,MapReduce没有使用模式、索引、物化视图等技术手段,其数据预处理仅是一次数据加载操作,但由此导致了一个问题———较高的元组解析代价。MapReduce环境下,每个查询都是直接从文件系统中读入原始数据文件,而非传统的从数据库中读入经处理过的文件,因此其元组解析代价远高于关系数据库,对数据分析领域来说,连接是关键操作(如传统的星型查询和雪花查询均是依赖于连接来处理查询),但MapReduce处理连接的性能尤其不尽如人意,原因在于MapReduce最初是针对单数据集设计的处理模型,而连接操作往往涉及多个数据集,在利用MapReduce实现连接时,最直接的方式是每个任务执行一个属性上的连接操作,然后将多个MapReduce任务通过物化的中间结果串接起来,这种实现方式往往涉及中间结果的读写,从而导致大量的I/O操作和网络传输。
6) 数据导入
在海量数据导入方面,hadoop比并行数据库更高效。因为并行数据库需要先把数据装载到数据库中,按特定的格式存储成特定的页文件,然后才能查询。
而基于Hadoop平台的数据分析,无需复杂的数据预处理和写入数据库的过程,而是可以直接基于平面文件进行分析,同时hadoop支持多种文件格式,并且可以使用用户定制的格式实现),这样大大节省了数据导入的开销。同时hadoop能够导入非结构化数据,这为空间元数据和非结构化数据进行关系分析提供了保障。