PB级分布式大数据的处理和分析应用
- 2013-10-16 12:35:49 | 新闻来源:叶凡网络 | 点击量:945
开源软件完全免费且不需要支付高贵的许可费用,相比于商业软件。另外在其面前还拥有庞大的开源团队的支持。但是能否完全跟得上市场的需求和发展速度是关键性的问题,终究这些软件不像商业软件那样有巨大的利益驱动推动它发展。
串行的处置方式难以满足人们要求,对于大数据。现在主要采用并行计算方式。现有的并行计算可以分为两种:
- 细粒度的并行计算。这里细粒度主要是指指令或进程级别,由于GPU比CPU拥有更强的并行处置能力,人们将一些任务交给GPU并行处置,一些GPU制造商也推出了方便顺序员使用的编程模型,如NVIDIA 推出的CUDA 等。
- 粗粒度的并行计算。这里粗粒度指的任务级别,人们将工作分布到不同机器中执行,最近流行的网格计算、分布式计算都属于粗粒度级别。
开发人员需要考虑大量的并行细节且任务较重,由于现有GPU编程模型还未完善。因此未得到流行。而一些新推出的分布式编程模型以其简单、方便等特点受到开发人员的欢迎并变得炙手可热,这里我主要讨论粗粒度的并行计算。
因此对数据的处置和分析需要在集群中进行,由于大数据都分布在集群中。但是多台机器上对分布式数据进行分析会发生巨大的性能开销,即使采用千兆比特或万兆比特带宽的网络,随机读取速度和连续读取速度都会比内存慢几个数量级。但是现在高速局域网技术使得网络读取速度比硬盘读取要快很多。因此,将数据存储在其他节点上比存储在硬盘上的性能要好,而且还可以在多个节点上并行处置数据集。
首先就是节点间通信对并行处理的代价,对大数据分布处置会带来一些问题。一些操作如搜索、计数、局部聚集、联合等可以在每个节点上独立执行。单个节点处置后的结果需要合并,因此节点间的通信是不可防止的但是并不是所有的聚集操作都能分散成可以独立操作的子操作,如求得所有数据的中位数。不过,大部分重要的操作都有分布式算法来减少节点间的通信。
每个节点的计算量是相同的否则工作量最大的节点将决定整个任务的完成时间,节点间负载不平衡也是呈现的主要问题。理想情况下。这个时间往往比负载平衡情况下的时间要长。最坏的情况下,所有的工作都集中在某个机器上,无法体现出并行的优势。数据在节点间如何分布对负载平衡发生影响,例如,一个包含1000个传感器10年内的观测值的数据集,传感器每15秒收集一次数据,这样一个传感器10年内将发生两千多万个观测值。将数据根据传感器并按时间顺序分布到10个节点上,每个节点包括100个传感器的观测值,如果对某个传感器收集的数据进行操作,那么大部分节点将处于闲置状态。如果先按时间顺序对数据进行分布,那么根据时间的操作也会造成负载不平衡。
一个拥有10个节点的集群很容易出现节点故障。这可以通过在节点间复制数据来解决,分布式系统的另一个问题就是可靠性。就像拥有四个引擎的飞机比拥有两个引擎的飞机更容易出现引擎故障一样。对数据进行复制,既可以提高数据分析的效率,也可以通过冗余来应对节点故障。当然,数据集越大,对数据副本的管理和维护也越困难。
目前对大数据处置和分析的应用更多的集中在数据仓库技术、预测分析、实时分析、商业智能、数据统计等方面。这些需求对企业有巨大的协助。
但是如何进行高效的存储并不简单。首先要考虑的如何组织数据的结构使其能够更多地支持上层的软件,将PB级的数据存储起来并不是一件困难的事情。而不需要对数据进行转储和重新组织。当数据需要发生转换的时候防止因转储、抽取、整合等而带来的延迟。
尤其是实时分析对企业的决策有很大的协助。例如,有效的预测分析技术。超市可以根据庞大的用户历史消费记录来预测某一用户下次购买商品的倾向,从而在结账的时候可以专门针对某一用户打印其关心的优惠券。足球队管理层可以根据用户的购票记录为其推荐更人性化的月票、季票等套票。
像SA SSPSS等激进数据分析软件因其数据处置能力受限于单机的计算能力,目前。对大数据的处置显得力不从心。IBMNetezza等新兴的数据分析软件往往需要支付高贵的许可费用,因此HadoopMapReducR等开源的大数据分析工具受到越来越多的关注和青睐。
上一篇:新加坡选美皇后在巴基斯坦被绑匪撕票
下一篇:外交部:强烈谴责达赖集团制造“藏族孤儿”事件