今天你开始扫盲`大数据`了吗?

近期BIG DATA相关的技术层出不穷,让人目不暇接。作为深入Web前端开发的程序猿也难免脑子一日,想去细致了解一番。一个星期的学习,认识到想要深入了解`大数据`相关技术,你必须首先了解分布式平台、分布式数据库以及数据挖掘的相关知识。

第一部分:大数据

何为大数据?
大数据(big data),或称巨量资料,指的是所涉及的资料量规模巨大到无法通过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。大数据具有4个关键特征,分别是海量化(Volume),多样化(Variety),快速化(Velocity)和价值化(Value)。我想海量化、多样化和价值化很容易理解,这里我想说下大数据的快速化。快速化是对大数据处理速度的需求。原先针对传统数据的分析挖掘,主要是实现对过往发展的总结,而通过对大数据的分析,我们将能够快速地、准确地预测业务发展的趋势和方向,实时地调整业务重心,从而实现对未来市场的可预判性。

大数据的发展历程怎么样?
【~ 2011】技术研发、概念推广、解决方案推广、商业模式尝试
【2012 ~ 2015】 生态环境完善、行业应用案例增多、用户认可度高、基于大数据应用的业务创新加快、数据资产化进程加快
【2016 ~】 大数据解决方案成熟、大数据应用渗透社会各行业、数据驱动决策、信息化智能化程度大幅度提升

什么是结构化数据、什么是非结构化数据?
结构化数据是指属性固定、能够严格用关系模型刻画的数据,一般存放在关系数据库中。结构化数据的每一个属性一般不能再进一步分解,具有明确的定义。
非结构化数据是指没有固定属性结构的数据,数据本身包含的信息不能简单地从不同的属性角度观察。比如一封邮件,包含标题、发送者、正文,但是要了解这封邮件的内容,必须对正文部分做进一步的分析才能获得,而正文的内容无法通过几个固定属性来进行刻画。

大数据的技术特点是什么?
提高数据处理的能力和容量是所有数据处理技术致力解决的问题。理想的数据处理技术在一致性、分区容忍性以及可用性等方面都应该得到很好的满足,但实际上这些特性从实现角度看往往具有冲突,比如对容量的追求会要求数据存放于不同的节点,但一旦位于不同的节点,数据的一致性操作就需要跨节点协作,引入的网络I/O延迟以及不可靠性导致操作的效率和成功率相比在一个节点内部都会大大降低,这是大规模数据处理不可避免的问题。大数据技术本质上是放弃了一些数据处理的要求,比如牺牲一致性要求很高的事务处理(多个操作的组合),仅提供最简单地读/写来达到超大规模的存储和访问能力。可以说,简单与大规模是大数据技术的重要特点。

大数据有哪些处理模式?
根据数据源的性质以及分析目标不同,数据处理大致分为离线/批量和在线/实时两种模式。所谓离线或批量,是指数据积累到一定程度之后再进行批量处理,这多用于事后分析,比如分析用户的消费模式。所谓在线或实时处理,是指数据产生后立即需要进行分析,比如用户在网络中发布的微博或其他消息。这两种模式的处理技术完全不同,所使用的方法也不一样。比如,离线模式需要强大的存储能力配合,在分析前先积累大量的数据,容许的分析时间也相对比较宽。而在线分析要求实时计算能力非常强大,容许的分析时间也相对很窄,基本上要求在新的数据到达前处理完早期数据。两种分析模式导致了目前两种主流的平台Hadoop和Storm的产生,前者是强大的离线数据处理平台,后者是强大的在线数据处理平台。

大数据的硬件架构特点是什么?
经典的数据处理架构一般包括服务器设备、存储设备以及必要的组网设备(如交换机),数据的访问多通过数据库实现,对多节点系统数据的访问往往需要跨物理服务器。对于重要系统,服务器一般采用高端小型机(每台价格在数十万到百万不等)。存储一般采用SAN存储,其价格也在数十万以上。大数据技术采用了完全不同的理念,它使用大量廉价的PC Server构建集群,每个节点同时承担计算和存储的角色。尽管每台PC Server的稳定性和性能无法与小型机相比,但是通过高冗余设计以及大规模的并行处理,使得这种集群的最终处理能力要远远胜于小型机集群。放弃高端存储、高端服务器,转而使用PC Server构建大规模集群式目前大数据典型的硬件平台方案。

大数据的软件架构特点是什么?
尽管大数据的处理能力非常强大,但大多数大数据的软件架构都比较简单,这是由大数据面临的问题特点所决定的。“简单”体现在架构设计简单以及使用简单两个方面。架构设计简单多体现在多节点的通信方式简单,功能定位明确,尽可能减少节点间的依赖。比如经典的分布式文件系统GFS架构,它直接使用过去常常被大型系统否定的集中式架构,使用一台服务器(名字节点)专门存放目录信息,其他节点(数据节点)集中与名字节点通信获得数据存放位置信息。再比如MapReduce计算框架,其理念是将需要处理的数据进行分块,然后将每块计算结果再进行汇总,这是应用系统在处理多任务时采用的一种模式,只是MapReduce进行了抽象,使得这种模式可以更广泛地被使用,用户不需要从头编写程序。所以说大数据软件架构其实相对简单地,也正是因为简单地设计才使得系统具有强大的扩展能力和快速实现能力。

大数据与云计算有什么关系?
从目标看,大数据主要解决数据存储和分析问题,尤其是强调后者,大数据最终目的是从数据中挖掘出价值。云计算致力于将计算能力作为服务提供,这种能力体现在基础设施层是主机和存储服务提供,体现在平台层是开发环境托管,体现在应用层是各种云化(主要是基于Web)应用。从服务模式看,大数据可以采用云化的理念去提供服务,从技术实现看,大数据也可以使用云计算提供的计算能力去实现各种该数据存储和分析。
从概念发展的先后看,云计算要先于大数据出现,并且更加体系化,但云计算中一种提供超级计算能力的技术天然成为大数据领域的一个基石,这部分云计算的元素成为大数据和云计算概念交叠的区域。

大数据适合哪些应用?
理论上,任何行业在足够大的范围内都能产生大数据问题,有些需要覆盖范围足够大,有些需要时间范围足够长。典型的需要大数据技术的行业有金融、医疗、交通、互联网、通信等。


第二部分:分布式平台

何为分布式平台?
分布式平台是指将数据存储、数据分析和计算等构建在由多个主机构成的集群上的软件平台。分布式平台相对于单机构成的系统,其分布式平台主要区别在于处理问题的规模上,包括数据计算的规模和数据存储的规模。从物理层次上看,分布式平台运行在由多台不共享内存的机器构成的集群上,但是从逻辑层上来看,分布式平台对用户而言就好像一个单机系统,完全感觉不到物理上分布式的存在。
分布式平台相对于单机构成的系统:

  • 资源共享(硬件、软件、数据资源和计算资源)
  • 用户透明性
  • 高性价比
  • 高可靠(容错机制)
  • 高度灵活性(兼容中低配置)
什么是分布式文件系统?
分布式文件系统(Distributed File System, DFS)是指文件系统管理的物理存储资源不都是直接连接在本地节点上,而是分布在由高速内部网络连接的一组机器节点上,这些机器节点共同构成了一个集群。分布式文件系统在设计上一般都是基于客户机/服务器模型,即传统的C/S模型。在分布式的环境下,服务器不再是单机系统,而是可以供多个用户从网络上访问的物理集群。同分布式平台一样,分布式文件系统在设计上充分考虑用户的使用习惯,尽量做到对外表表现得就和本地文件系统一样。用户访问分布式文件系统和访问本地文件系统的使用方法相同,用户感觉不到物理上分布式的存在。
常见的分布式文件系统有网络文件系统(DNF)、Andrew文件(AFS)、Google的分布式文件系统(GFS)等。

分布式文件系统的集群中一般有一个或多个控制节点,如上图中Tracker Cluster。它主要负责分布式文件系统的元数据(目录信息、文件存储位置、命名空间信息等)的管理,监控存储集群的运行状态和健康状态。另外还有若干个数据节点,如图中的Storage Cluster,主要用来存放实际的文件数据。当客户端需要读/写分布式文件系统的时候,客户端首先连接到控制节点,以获取要读/写的数据的实际存放位置等信息,然后,客户端根据控制节点返回的信息连接相应的数据节点,进行实际的数据读/写操作,读/写完成后,存储节点需要向集群的控制节点报告此次操作的结果,以便告诉客户端读/写是否成功。

什么是分布式计算?
分布式计算是一门计算机科学,它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,并由许多相互独立的计算机进行协同处理,以得到最终结果。
分布式计算是让几个物理上独立的组件作为一个单独的系统协同工作,这些组件可能指多个CPU或者网络中的多台计算机。
对于分布式编程而言,其核心问题是如何把一个大的应用程序分解成若干个可以并行处理的子程序。有两种可能的处理方法:一种是分割计算,即把应用程序的功能分割成若干个模块,由网络上的多台计算机协同完成;另一个是分割数据,即把数据集分割成小块,由网络上的多台计算机分别计算。对于海量数据分析等数据密集型问题,通常采取分割数据的分布式计算方法;对于大规模分布式系统,则可能同时采取这两种方法。

如果想要详细了解分布式系统方面的知识,切入点可以是Hadoop(Hadoop 是一个由Apache基金会开发的分布式系统开源架构)。


第三部分:分布式数据库

分布式数据库的基本概念?
指利用高速计算机网络将物理上分散的多个数据存储单元连接起来组成一个逻辑上统一的数据库。分布式数据库的基本思想是将原本集中式数据库中的数据分散存储到多个通过网络连接的数据存储节点上,以获取更大的存储容量和更高的并发访问量。NoSQL类型数据库正日渐成为大数据时代下分布式数据库领域的主力。

什么是关系型数据库?
关系型数据库是指建立在关系模型基础上的数据库。因为数据库中的数据都是通过各种关系来组织存放和管理的,所以叫关系型数据库。毫无疑问,关系型数据库是数据存储的传统标准。

什么是NoSQL数据库?
NoSQL也成Not only SQL,是对不同于传统的关系型数据库的数据库系统的统称,它具有非关系型、分布式、不提供ACID的数据库设计模式等特性。
NoSQL数据库和关系型数据库存在许多显著的不同,其中一个最重要的不同点就是,NoSQL数据库不再使用SQL作为自己的查询语言,而且数据的存储模式也不再是表格模型。
NoSQL数据库一般都具有水平高可扩展性和支持高并发的用户访问量。常见的NoSQL数据库有key-value存储系统(如BigTable, MecacheDB, Dynamo)和文档型数据库(MongoDB,SimpleDB,CouchDB)。

为什么需要分布式数据库?
由于分布式数据库相对于传统数据库有更大的存储能力、更强的可扩展性和更高的并发访问量。运用分布式数据库技术能够很好地解决当前大数据时代海量数据的存储和处理问题。

大数据时代分布式数据库的特征是什么?
高可扩展性:分布式数据库必须具有高可扩展性,能够动态地增添存储节点以实现存储容量的线性扩展
高并发性:分布式数据库必须及时响应大规模用户的读/写请求,能对海量数据进行随机读/写。
高可用性:分布式数据库必须提供容错机制,能够实现对数据的冗余备份,保证数据和服务的高度可靠性。

分布式数据库相对传统集中式数据库的优点有哪些?
  1. 更高的数据访问速度
  2. 更强的可扩展性
  3. 更高的并发访问量
什么是CAP定义?
CAP原理是一致性(Consistency)、可用性(Availability)、分区容忍性(Partition Tolerance)
  • 一致性:在分布式系统中的所有数据备份在同一时刻是否具有同样的值
  • 可用性:在集群中一部分节点发生故障后,集群是否还能响应客户的读写请求
  • 分区容忍性:集群中的某些节点在无法联系后,集群整体是否还能继续进行服务
而CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须要实现的。因此我们只能在一致性和可用性之间进行权衡,现在还没有NoSQL系统能同时保证这三点。

如果想要了解分布式数据库方面的知识,切入点可以是HBase(开源项目 HBase 是一个高可靠、高性能、面向列、可伸缩的分布式存储系统,属于NoSQL数据库家族的一员)。


第四部分:数据挖掘

什么是数据挖掘?
从技术角度看,数据挖掘是指从存放在数据库、数据仓库或者其他信息库中的大量数据中发现有趣知识的过程。从商业的角度看,数据挖掘是一种新的商业信息处理技术,其主要特点是对商业数据库的大量业务数据进行抽取、转换、分析(ETL操作)和其他模型处理,从中提取出辅助商业决策的关键性知识,即发现数据中的相关商业模式。数据挖掘融合了人工智能、统计学、机器学习、模式识别和数据库等多种学科的理论、方法和技术。

什么是机器学习?
机器学习室研究计算机怎样模拟或实现人类的学习行为,从经验中获取新的知识或技能,然后重新组织已有的知识结构,使之不断改善自身的性能。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值