前言
我们生活在大数据时代,正以前所未有的速度和规模产生数据。数据资产正成为和土地、资本、人力并驾齐驱的关键生产要素,并在社会、经济、科学研究等方面颠覆人们探索世界的方法、驱动产业间的融合与分立。
大数据是用来描述数据规模巨大、数据类型复杂的数据集,它本身蕴含着丰富的价值。比如:在金融行业,企业和个人的一些信用记录、消费记录、客户点击数据集、客户刷卡、存取款、电子银行转账、微信评论等行为数据组合为金融大数据,他们利用大数据技术为财富客户推荐产品,利用客户行为数据设计满足客户需求的金融产品,利用金融行业全局数据了解业务运营薄弱点并加快内部数据处理速度,利用决策树技术进入抵押贷款管理,利用数据分析报告实施产业信贷风险控制,利用客户社交行为记录实施信用卡反欺诈,依据客户消费习惯、地理位置、销售时间进行推荐(精准营销)。不仅仅金融行业,政府部门会根据大数据分析结果来做预算,企业也会根据大数据来进行市场策略调整。
Gartner指出,64%的受访企业表示他们正在或是即将进行大数据工作,然而其中一些企业却并不知道他们能够使用大数据做些什么。这正好印证了大数据领域的最主要的两个挑战:如何从大数据中获取价值以及如何定义大数据战略。这是本书首先需要解释的内容。
谷歌、Amazon、Facebook等全球知名互联网企业作为大数据领域的先驱者,凭借自身力量进行大数据探索,甚至在必要时创造出相关工具。这些工具目前已经被视为大数据技术的基础,其中最知名的当数MapReduce与Hadoop。Hadoop是目前处理大规模结构化与非结构数据的首选平台,它提供了分布式处理框架与开发环境。MapReduce是一种计算框架,它实现了将大型数据处理任务分解成很多单个的、可以在服务器集群中并行执行的任务,这些任务的计算结果可以合并在一起来计算最终的结果。在Hadoop问世以来的十年间,新的组件(如:Spark)层出不穷,极大地扩张了整个Hadoop生态圈。
大数据技术有别于传统数据处理工具和技术,而且大数据技术很难掌握,一般需要1-2年的反复尝试,在实际使用中解决了大量问题之后才能正确理解它。我们编写这本书的目的是,以硅谷大数据实战为基础,让读者略过那些不重要的大数据的细枝末节,通过实际的案例,帮助读者快速掌握大数据技术领域最能商用的大数据工具和软件平台,从而帮助读者轻松实施大数据方案。在本书中,我们将阐述如下最为硅谷所熟知的大数据相关技术:
·框架:Hadoop、Spark。
·集群管理:MapReduce、Yarn、Mesos。
·开发语言:Java、Python、Scala、Pig、Hive、Spark SQL。
·数据库:NoSQL、HBase、Cassandra、Impala。
·文件系统:HDFS、Ceph。
·搜索系统:Elastic Search。
·采集系统:Flume、Sqoop、Kafka。
·流式处理:Spark Streaming、Storm。
·发行版:HortonWorks、Cloudera、MapR。
·管理系统:Ambari、大数据管理平台。
·机器学习:Spark MLlib、Mahout。
上面的列表也说明了,Hadoop生态圈有几十个软件组成。这些软件提供了什么功能?到底在什么情况下使用什么软件?软件之间怎么组合使用?这些问题正是本书想要回答的。本书与市场上其他大数据书籍的区别是,我们不是专注某一个软件(比如:Spark),而是阐述整个生态圈中的主流软件,通过实例让你理解这些软件是什么,在什么场合使用,相互的区别是什么。如果我们把这几十个软件比喻成几十种厨房工具,那就是让你避免拿着菜刀去削苹果,或者拿着水果刀去剁肉。
除了阐述大数据的定义、前景和各类Hadoop发行版之外,本书主要是按照大数据处理的几个大步骤来组织内容的。
(1)大数据存储:探究HDFS和HBase作为大数据存储方式的优劣。
(2)大数据访问:探究SQL引擎层中Hive、Phoenix、Spark SQL等组件的功能,并阐述了全文搜索的ElasticSearch,也探究了Spark的高速访问能力。
(3)大数据采集:大数据的采集是指接收各类数据源(比如:Web、行业应用系统或者传感器等)的数据。大数据采集的主要特点和挑战是导入的数据量大(每秒钟的导入量经常会达到百兆,甚至千兆级别)、并发数高和数据源的异构。采集端可能会有很多数据库(或文件),有时需要在导入基础上做一些简单的清洗和预处理工作。在这个部分,我们探究了Flume、Kafka、Sqoop等技术,也探究了如何使用Storm和Spark Streaming来对数据进行流式计算,来满足部分业务的实时和准实时计算需求。
(4)大数据管理:探究数据模型、安全控制、数据生命周期等数据管理内容。
(5)大数据的统计和分析:探究了如何利用分布式计算集群来对存储于其内的海量数据进行统计分析,重点探究了机器学习和Spark MLlib,也阐述了多种分析算法。
参加本书编写的同志还有:余飞、邵敏华、欧阳涛、杨正礼、王娜、李祥、刘毕操、彭勃、李招、张剑、杨磊等人。由于我们水平有限,书中难免存在纰漏之处,敬请读者批评指正。杨正洪的邮件地址为yangzhenghong@yahoo.com。
杨正洪
2016年5月于San Jose