大数据

大数据开发技术的演进

随着数据生成、采集方式的变化,我们收集到的数据越来越多,对这些数据进行分析所需的运算量早已远远超出了单台计算机处理能力。伴随而来的便是存储、分析环境等的变化与更新。文本针对想了解大数据分析环境的订阅用户,对相关内容进行了总结。

1、数据与存储环境

1.1、数据量的大小与过去不可同日而语

  • 大数据不再仅仅是指保存在数据库中的结构化数据,还包括类似xml普通格式的半结构化数据,以及视频、音频、图形图像、文本等众多的非结构化数据。
  • 从量级上来讲,数据更多的是用户生成的数据,如微信朋友圈、微博、论坛等内容,这些不再是由网站运营者发布,而是由众多的用户生成的,其内容丰富程度、数据量的大小是过去无法想象的。
  • 再者,还有众多的传感器采集数据,如机器运行的记录文件,也包括类似监控视频、网站或服务器后台生成的日志等。

1.2、并行分布式存储结构

由于数据量的暴增,势必使得保存数据的方式发生改变。简单来说,分布式存储就是利用分布式存储标准,将众多计算机中的存储介质,主要是硬盘,组成一个逻辑上的大规模存储空间。此逻辑空间需要达到一定的数据吞吐量,且兼顾数据的安全性。

  • 在大数据分析领域,最常见的分布式数据存储系统就是Hadoop的HDFS,它是一个利用并行技术的开源平台,主要是通过将大的文件拆分成小块,并且以多个副本的方式存储的系统,借此实现对海量数据的管理。
  • 数据库管理系统也是数据存储的重要一环,在大数据环境下,通常使用列式数据库或基于键值对的分布式数据库,如:HBase、MongoDB、Cassandra、Redis等。

2、常用大数据开发框架

分布加并行是大数据分析的核心理念,基于此,诞生了众多的数据分析框架,其中最主流的包括MapReduce、Storm,以及Spark等

  • MapReduce主要是将分析的步骤分为两个阶段:数据准备Map阶段、数据汇总Reduce阶段。目前的开发理念是在Map阶段把一组数据映射为一组键值对;在Reduce阶段,汇总Map阶段生成的各键对应的值的数据,并生成一组新的键值对。在一个分析任务中可能需要多个Map、Reduce阶段。采用这种方式,极大的简化了分布式数据分析程序的开发。MapReduce开发的主要语言为Java与Python。
  • MapReduce由于需要多次迭代,因此只适用于类似批处理的离线数据分析,在某些需要对流数据进行分析的情况下,可选择使用Strom框架。在Strom中,一般需定义一个用于实时计算的拓扑图,将此拓扑图提交给集群,然后由集群的主控节点分发代码,并将代码分配到工作节点上执行。与MapReduce类似,Storm也包含两种角色:Spout和Spark,其中Spout负责数据的发送,Bolt负责数据的处理与转换,Bolt在负责进行数据计算的同时,还可以将数据转发给其它Bolt。Storm本身使用Clojure开发,同时也包含Java和Python接口。
  • Spark是与Hadoop类似的一种开源计算环境,但是由于Spark在计算过程中数据均保存在内存中,因此效率远高于Hadoop,此外,通过Spark Streaming,也可以以极小的时间间隔来变相实现类似Strom的流处理功能,目前Spark已经逐渐成为大数据开发框架的主流。Spark使用Scala开发,同时预留Java和Python接口。

3、分析语言

主要包括Java、Python等传统开发语言,也包含最近异军突起的R语言,还有基于批处理脚本的Pig,以及用于Hive数据仓库的HQL等,它们共同的特点就是可以通过编程有效、高效的完成数据分析任务。

随着数据的骤增以及分析技术的发展,过去只在实验室进行的某些工作也成为了业界常见的分析目标,如大规模自然语言处理与语义理解、海量图像识别等。在今后我们将逐步对相关话题进行详细的讨论。

识别二维码,关注“格物课堂”微信公众号

2022-2023 Copyright © 深圳市意行科技开发有限公司 - All Rights Reserved.
深圳市南山区学苑大道1227号 
粤ICP备17013574号