作者:阿里云MVP 翟永东
大数据的由来
最早提出大数据时代到来的是麦肯锡:“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。”
业界(IBM最早定义)将大数据的特征归纳为4个“V”(体量Volume,多样Variety,价值Value,速度Velocity),或者说特点有四个层面:
- 数据体量巨大,大数据的起始计量单位至少是P(1000个T)、E(100万个T)或Z(10亿个T);
- 数据类型繁多,比如,网络日志、视频、图片、地理位置信息等等;
- 价值密度低,商业价值高;
- 处理速度快。最后这一点也是和传统的数据挖掘技术有着本质的不同;
为了更好地理解大数据的价值和理念,建议大家去学习舍恩伯格的《大数据时代》和阿里云创始人王坚博士的《在线》这两本书。
舍恩伯格在《大数据时代》一书中举了百般例证,都是为了说明一个道理:在大数据时代已经到来的时候要用大数据思维去发掘大数据的潜在价值。什么是大数据思维?维克托·迈尔-舍恩伯格认为:
- 需要全部数据样本而不是抽样;
- 关注效率而不是精确度;
- 关注相关性而不是因果关系。
阿里云创始人王坚博士在《在线》中对于大数据有一些独特的见解,比如:
- “今天的数据不是大,真正有意思的是数据变得在线了,这个恰恰是互联网的特点。”
- “非互联网时期的产品,功能一定是它的价值,今天互联网的产品,数据一定是它的价值。”
- “你千万不要想着拿数据去改进一个业务,这不是大数据。你一定是去做了一件以前做不了的事情。”
为了更好地理解大数据,建议去学习阿里云大学推出的免费课程:大数据简史,对于系统地理解大数据有很大的帮助。
大数据的入门
经常听别人说“我要去学习大数据”,乍一听大数据应该是某个技术。而通俗来讲,大数据就是大到难以处理的数据集合,是社会技术发展过程中碰到的棘手问题。因此“我要去学习大数据”完整的说法应该是“我要去学习处理大数据问题的技术”,而大数据相关技术需要要学的又太多无从下手,如下图所示:
在做大数据开发之前需要了解相关的编程语言,并且掌握至少一门的编程语言,比如:Hadoop开源生态主要是使用Java语言的;Spark本身是用Scala语言,同时支持Java语言和Python语言;近几年比较火的数据分析和机器学习主要使用的是Python语言;如果没有开发背景的同学,推荐首选去学习Python语言,一个是入门比较快,另外就是Python的开发周期相对比较短;关于Python语言,推荐学习《Python核心编程(第3版)》,可以系统地掌握Python语言。
除此之外,给大家推荐两个很好的学习途径:
- GitHub上最火的Python学习项目:Python - 100天从新手到大师
- 阿里云大学精心打造的免费系列课程:Python学习路线
同时,在解决大数据问题的时候,最简单方便的方式是通过SQL语句来满足数据分析的需求,这也是各种大数据分析平台都是支持通过SQL调用的;因此需要具备SQL编写的能力,推荐如下三本书来提升SQL的能力:
- 《深入浅出SQL》:这本对所有没SQL基础的人来说都是本好书,着重基本语法的理解和基本概念的阐述;
- 《SQL反模式》:介绍了如何避免在SQL的使用和开发中陷入一些常见却经常被忽略的误区,对于提升SQL能力有很大的帮助;
- 《高性能MySQL》:深入讲解高级技巧从而让你能够受益于MySQL的全部威力。你将学到如何设计模板、索引、查询和令性能最大化的高级MySQL特性。虽然是针对于MySQL数据库的,但是对于理解其他的关系型数据库的SQL也是有帮助的;
对于很多刚接触大数据的同学,经常听到的一个名词是Hadoop,因此对于学习大数据技术,Hadoop及其生态是不可不知道的。Hadoop用到的一些技术有:
- HDFS: Hadoop分布式文件系统(Hadoop Distributed File System) - HDFS
- MapReduce:并行计算框架
- HBase: 类似Google BigTable的分布式NoSQL列数据库。
- Hive:数据仓库工具,由Facebook贡献。
- Zookeeper:分布式锁设施,提供类似Google Chubby的功能,由Facebook贡献。
- Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。
- Pig:大数据分析平台,为用户提供多种接口。
- Ambari:Hadoop管理工具,可以快捷的监控、部署、管理集群。
- Sqoop:用于在Hadoop与传统的数据库间进行数据的传递。
对于Hadoop的学习,推荐学习以下的内容:
- 《Hadoop权威指南(第四版)》:这是最适合Hadoop入门者的书,可以让初学者快速领略Hadoop的全貌而不至于迷茫不知所措。
大数据的进阶
时至今日,随着业务的不断发展,大数据计算大体分为3个方向——离线计算、流式计算和即席查询。
- 离线计算:即批处理,建议大家去学习开源的MapReduce和Spark;
- 在线计算:也称为即席查询,建议大家去学习Presto、Impala和Drill;
- 流式计算:目前业界关注最多的场景,建议大家重点去学习Flink,阿里云的实时计算服务也是基于Flink之上提供服务的,推荐去学习Flink社区推出的系列培训:Flink-training-course
企业完整的大数据架构如下所示:
在企业中应用大数据技术主要是为了搭建企业的数据仓库,以便于实现业务的创新;关于数据仓库,推荐学习企业大数据平台仓库架构建设思路 和阿里云大学推出的免费课程:数据分析系统之数据管理与数据仓库。
云上的大数据服务
由于云计算技术的普及和云上大数据服务的便利性,越来越多的企业开始使用云上的大数据计算服务,因此了解云上大数据相关服务也是必备的技能。我们以阿里云为例,看下如何学习云上的服务:
阿里云的离线计算
- 大数据计算服务MaxCompute:是一种快速、完全托管的EB级数据仓库解决方案,主要应对于离线计算和云上数仓的搭建;MaxCompute帮助文档;
- E-MapReduce:基于开源的Apache Hadoop和Apache Spark,可以方便地使用Hadoop 和Spark生态系统中的其他周边系统(如 Apache Hive、Apache Pig、HBase 等)来分析和处理自己的数据,相当于阿里云将开源的大数据相关技术部署好让用户去使用;E-MapReduce帮助文档
阿里云的在线计算
- 分析型数据库MySQL版:是阿里巴巴自主研发的海量数据实时高并发在线分析(Realtime OLAP),完全兼容MySQL;帮助文档
- 分析型数据库PostgreSQL版:通过分析型数据库PostgreSQL版可以实现对海量数据的即席查询分析、ETL 处理及可视化探索,是各行业有竞争力的云上数据仓库解决方案;帮助文档
阿里云的流式计算
- 实时计算:是一套基于Apache Flink构建的一站式、高性能实时大数据处理平台,广泛适用于流式数据处理、离线数据处理等多种场景;实时计算帮助文档
阿里云专门提供的一站式大数据开发平台
- 阿里云数据工场DataWorks(原DataIDE):提供统一的web管理页面,实现统一的大数据开发、管理和运维的可视化操作平台;DataWorks帮助文档
阿里云上的大数据服务是通过【数加平台】统一进行输出的,可以通过数加体验馆 学习不同的使用场景。
在阿里云上进行大数据处理,建议的完整流程是:
如果对于阿里云的大数据技术感兴趣的同学,建议去学习阿里云大数据团队编写的《阿里巴巴大数据实践-大数据之路》这本书,将会对于阿里云上的数据分析架构和流程有更加深入的理解。
总结
大数据技术的学习重点在于实践,需要大家在平时工作中不断地积累实践的经验或者在开源社区中贡献自己的力量,这样大家对于大数据的理解将会更加深刻,而不只是停留在理论层面。
同时,大数据技术并不止于文章中给出的内容,由于大数据技术迭代更新的速度很快,需要大家持续地关注和学习新的技术,比如:数据可视化、机器学习和深度学习等。
对于企业用户来说,完整的数据分析流程应该为:
最后分享王坚博士对于大数据计算应用的理解:
更多云计算、大数据、实战架构等优质、热门内容,微信搜索“拜托了王教授”公众号添加关注获取~
更有优质技术交流社群、技术大牛一对一接触机会等众多福利等你来撩~