- Hadoop平台搭建与应用
- 米洪 张鸰主编
- 12755字
- 2025-04-02 16:43:31
任务1.1 认知大数据,完成系统环境搭建
任务描述
(1)学习大数据相关知识,熟悉大数据的定义,大数据的基本特征及大数据处理与分析的相关技术、工具或产品等。
(2)完成系统环境搭建,为Hadoop的搭建做好准备。
任务目标
(1)熟悉大数据的概念和特征。
(2)熟悉大数据分析流程和工具使用。
(3)学会Ubuntu的安装。
(4)学会Ubuntu中常用命令的使用。
知识准备
1. 大数据背景知识
大数据是时下IT界备受追捧的技术,在全球引领了新一轮数据技术革命的浪潮,通过2012年的蓄势待发,2013年被称为“世界大数据元年”,标志着世界正式步入了大数据时代。移动互联网、物联网及传统互联网等每天都会产生海量的数据,人们可以使用适当的统计分析方法对收集来的大量数据进行分析,将它们加以汇总和理解,以求最大化地开发数据的功能,发挥数据的作用。Hadoop技术与大数据结合紧密,它最擅长的就是高效地处理海量规模的数据,它就是为大数据而生的。
想要系统地认知大数据,必须要全面而细致地分解它,接下来将从3个层面展开介绍,如图1-1所示。

图1-1 大数据的3个层面
第1个层面是理论。理论是认知的必经途径,也是被广泛认同和传播的基础。人们从大数据的特征定义出发,去理解行业对大数据的整体描绘和定性;从对大数据价值的探讨出发,去深入解析大数据的价值所在;从大数据的现在和未来出发,去洞悉大数据的发展趋势;从大数据隐私的视角出发,去审视人和数据之间的长久博弈。
第2个层面是技术。技术是大数据价值体现的手段和前进的基石。人们分别从云计算、分布式处理技术、存储技术和感知技术的发展出发,去说明大数据从采集、处理、存储到形成结果的整个过程。
第3个层面是实践。实践是大数据的最终价值体现。人们分别从互联网的大数据、政府的大数据、企业的大数据和个人的大数据4个方面出发,去描绘大数据已经展现的美好景象及即将实现的蓝图。
(1)从理论层面认知大数据
① 大数据的特征定义。最早提出大数据时代到来的是麦肯锡咨询公司,它是美国首屈一指的咨询公司,是研究大数据的先驱。在其报告Big data: The next frontier for innovation, competition, and productivity中给出了大数据的定义:大数据指的是大小超出常规的数据库工具获取、存储、管理和分析能力的数据集。
业界(IBM最早定义)将大数据的特征归纳为4个V。
a. 数据体量巨大(Volume):大数据的起始计量单位至少是PB(1 000TB)、EB(106TB)或ZB(109TB)。
b. 数据类型繁多(Variety):如网络日志、视频、图片、地理位置信息等。
c. 价值密度低,商业价值高(Value):由于数据采集的不及时,数据样本的不全面、数据不连续等,可能会导致数据失真,但当数据量达到一定规模时,可以通过更多的数据实现更真实、全面的反馈。
d. 处理速度快(Velocity):大数据处理对处理速度有较高要求,一般要在秒级时间范围内给出分析结果,时间太长就失去了价值。速度要求是大数据处理技术和传统的数据挖掘技术最大的区别。
本书认同大数据研究机构Gartner给出的定义——大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要使用新处理模式才能处理的具有更强决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
② 大数据的现在和未来。现在,大数据应用价值已在各行各业凸显。大数据能够帮助政府实现市场经济调控、公共卫生安全防范、灾难预警、社会舆论监督;大数据能够帮助城市预防犯罪、实现智慧交通、提升应急能力;大数据能够帮助医疗机构建立患者的疾病风险跟踪机制、帮助医药企业提升药品的临床使用效果;大数据能够帮助航空公司节省运营成本、帮助电信企业实现售后服务质量提升、帮助保险企业识别欺诈骗保行为、帮助快递公司监测分析运输车辆的故障险情以便提前预警维修、帮助电力公司有效识别即将发生故障的设备。
不管大数据的核心价值是不是预测,但是基于大数据形成决策的模式已经为不少企业带来了盈利和声誉。从大数据的价值链条来分析,存在以下3种情况。
a. 手握大数据,但是没有利用好:比较典型的是金融机构、电信行业、政府机构等。
b. 没有数据,但是知道如何帮助有数据的人利用它:比较典型的是IT咨询和服务企业,如埃森哲(Accenture)、IBM、甲骨文(Oracle)等。
c. 既有数据,又有大数据思维:比较典型的是谷歌、亚马逊(Amazon)、万事达(Mastercard)等。
未来,在大数据领域最具有价值的是以下两种事物。
a. 拥有大数据思维的人,这种人可以将大数据的潜在价值转换为实际利益。
b. 还没有被大数据触及的业务领域。这些是还未被挖掘的“金矿”,即所谓的“蓝海”。
③ 大数据带来的隐私问题。大数据时代,如何保护隐私是用户必须面对的问题,当人们在不同的网站上注册了个人信息后,可能这些信息已经被扩散出去。当人们莫名其妙地受到各种邮件、电话、短信的骚扰时,不会想到自己的电话号码、邮箱、生日、购买记录、收入水平、家庭住址、亲朋好友等私人信息,早就被各种商业机构非法存储、转卖给其他有需要的企业或个人了。当微博、微信、QQ等社交平台肆意地吞噬着数亿用户的各种信息时,就很难保护隐私了,就算用户删除了相关信息,但也许这些信息已经被其他人保存了,甚至有可能被保存为快照,可以提供给任意用户进行搜索。因此,在大数据的背景下,很多人在积极地抵制无底线的数字化,这种大数据和个体之间的博弈还会一直继续下去。
当很多互联网企业意识到隐私对于用户的重要性时,为了继续得到用户的信任,它们采取了很多办法,如谷歌公司承诺保留用户的搜索记录时间为9个月,有的浏览器厂商提供了无痕模式,社交网站拒绝使用公共搜索引擎的爬虫程序,并将提供出去的数据全部采取匿名方式进行处理等。
被誉为“大数据商业应用第一人”的维克托·舍恩伯格,在《大数据时代》一书中给出了一些在大数据背景下有效保护隐私的建议。
a. 减少信息的数字化。
b. 建立隐私权法。
c. 增强数字隐私权基础设施(类似于数字版权管理)。
d. 改变人类认知(接受忽略过去)。
e. 创造良性的信息生态。
f. 完全语境化。
(2)从技术层面认知大数据
① 云技术。大数据常被和云计算联系到一起,因为实时的大型数据集分析,需要分布式处理框架来向数十、数百甚至数万的计算机分配工作。云计算的特色在于对海量数据的挖掘。如今,在谷歌、亚马逊等一批互联网企业的引领下,创建了一种行之有效的模式,即云计算提供基础架构平台,大数据应用可以运行在这个平台上。
业内认为两者的关系如下:没有大数据的信息积淀,云计算的处理能力再强大,也难以找到用武之地;没有云计算的处理能力,大数据的信息积淀再丰富,终究也只是镜花水月。
云计算和大数据之间的关系如图1-2所示。

图1-2 云计算和大数据之间的关系
两者之间结合后会产生如下效应:可以提供更多基于海量业务数据的创新型服务,并通过云计算技术的不断发展降低大数据业务的创新成本。云计算与大数据最明显的区别在以下两个方面。
a. 在概念上两者有所不同。云计算改变了IT,而大数据改变了业务。然而,大数据必须有云计算作为基础架构,才能得以顺畅运营。
b. 大数据和云计算的目标受众不同。云计算是首席信息官(CIO)等关心的技术层,是一个进阶的IT解决方案。大数据是首席执行官(CEO)关注的、业务层的产品,而大数据的决策者是业务层。
② 分布式处理技术。分布式处理系统可以将位于不同地点、具有不同功能、拥有不同数据的多台计算机用通信网络连接起来,在控制系统的统一管理下,协调地完成信息处理任务。
大数据分布式处理系统的典型代表是Hadoop,它有一个MapReduce软件框架,能以一种可靠、高效、可伸缩的方式对大数据进行分布式处理。MapReduce是谷歌提出的一种云计算核心计算模式,是一种分布式运算技术,也是简化的分布式编程模式。MapReduce的主要思想是将要执行的问题(如程序)自动分割,拆解成Map(映射)和Reduce(规约),在数据被分割后,通过Map函数的程序将数据映射成不同的区块,分配给计算机集群处理,达到分布式运算的效果,再通过Reduce函数的程序将结果汇总,从而输出开发者需要的结果。
③ 存储技术。大数据可以抽象地分为大数据存储和大数据分析,这两者的关系如下:大数据存储的目的是支撑大数据分析。到目前为止,大数据存储和大数据分析是两种截然不同的计算机技术领域。大数据存储致力于研发可以扩展至PB甚至EB级别的数据存储平台;大数据分析关注如何在最短时间内处理大量不同类型的数据集。
大数据存储服务商的典型代表是亚马逊。亚马逊的S3是一种面向Internet的存储服务,旨在让开发人员更轻松地进行网络规模计算。亚马逊的S3提供了一个简明的Web服务界面,用户可以在任何地点通过访问Web服务界面,存储和检索任意大小的数据。此服务让所有开发人员都能访问同一个具备高扩展性、高可靠性、高安全性和高性价比的基础设施,亚马逊利用它来运行其全球的网站网络。亚马逊的S3云的存储对象已达到万亿级别,而且性能表现相当良好,目前已经拥有万亿跨地域存储对象,同时,亚马逊提供的专业云计算服务(Amazon Web Services,AWS)的对象执行请求也达到了百万的峰值数量。目前,全球范围内已经有数以十万计的企业在通过AWS运行自己的全部或者部分日常业务。这些企业用户遍布190多个国家和地区,几乎世界上的每个角落都有亚马逊用户的身影。
④ 感知技术。大数据的采集和感知技术的发展是紧密联系的。以传感器技术、指纹识别技术、RFID技术、坐标定位技术等为基础的感知能力提升,同样是物联网发展的基石。全世界的工业设备、汽车、电表上有着无数的数码传感器,随时测量和传递着有关位置、运动、震动、温度、湿度乃至空气中化学物质的变化,这些都会产生海量的数据信息。
而随着智能手机的普及,感知技术迎来了发展的高峰期,除了地理位置信息被广泛应用之外,一些新的感知手段也开始登上舞台,例如,指纹传感器和人脸识别系统等。其实,这些感知被逐渐捕获的过程就是世界被数据化的过程,一旦世界被完全数据化,那么世界的本质就是信息了。
所以说“人类以前延续的是文明,现在传承的是信息”。
(3)从实践层面认知大数据
① 互联网的大数据。互联网的数据每年增长50%,每两年便翻一番,而目前世界上90%以上的数据是最近几年才产生的。互联网是大数据发展的前哨阵地,随着Web 2.0时代的发展,人们似乎都习惯了将自己的生活通过网络进行数据化,以方便分享、记录和回忆。
互联网的大数据很难清晰地界定分类界限,先看看中国互联网公司三巨头——百度、阿里巴巴、腾讯的大数据。
百度拥有两种类型的大数据:用户搜索表征的需求数据、通过爬虫和阿拉丁获取的公共Web数据。百度通过对网页数据的爬取、网页内容的组织和解析,并进行语义分析,进而产生对搜索需求的精准理解,以便从海量数据中找准结果,实质上就是一个数据的获取、组织、分析和挖掘的过程。搜索引擎在大数据时代面临的挑战有:更多的深网数据,更多的Web化但是没有结构化的数据,和更多的Web化、结构化但是封闭的数据。
阿里巴巴拥有交易数据和信用数据。这两种数据更容易挖掘出商业价值。除此之外,阿里巴巴还通过投资等方式掌握了部分社交数据、移动数据,如微博社交数据和高德地图相关数据等。
腾讯拥有用户关系数据和基于此产生的社交数据。这些数据可以分析人们的生活和行为,从中挖掘出政治、社会、文化、商业、健康等领域的信息,甚至预测未来。
在信息技术更为发达的美国,除了谷歌等知名公司之外,已经涌现了很多专门经营大数据类型产品的公司,这里主要介绍以下几家公司。
a. Metamarkets:这家公司对推特(Twitter)用户的支付、签到和一些与互联网相关的问题进行了分析,为客户提供了很好的数据分析服务。
b. Tableau:主要集中于将海量数据以可视化的方式展现出来。Tableau为数字媒体提供了一个新的展示数据的方式,为用户提供了一个免费工具,任何人在没有编程知识背景的情况下都能制造出数据专用图表。它还能对数据进行分析,并提供有价值的建议。
c. ParAccel:ParAccel向美国执法机构提供了数据分析,例如,对15 000个有犯罪前科的人进行跟踪,从而向执法机构提供了参考价值较高的犯罪预测。这个公司被称为“犯罪的预言者”。
d. QlikTech:QlikTech旗下的QlikView是一个商业智能领域的自主服务工具,能够应用于科学研究和艺术等领域。为了帮助开发者对这些数据进行分析,QlikTech提供了对原始数据进行可视化处理等功能的工具。
e. GoodData:GoodData希望帮助客户从数据中挖掘财富。这家创业公司主要面向商业用户和IT企业高管,提供数据存储、性能报告、数据分析等工具。
下面简要归纳一下互联网中大数据的典型代表。
a. 用户行为数据:用于精准广告投放、内容推荐、行为习惯和喜好分析、产品优化等业务。
b. 用户消费数据:用于精准营销、信用记录分析、活动促销、理财等业务。
c. 用户地理位置数据:用于在线到离线/线上到线下推广、商家推荐、交友推荐等业务。
d. 互联网金融数据:用于小额贷款、支付、信用、供应链金融等业务。
e. 用户社交数据:用于潮流趋势分析、流行元素分析、受欢迎程度分析、舆论监控分析、社会问题分析等业务。
② 政府的大数据。美国政府曾宣布投资2亿美元拉动大数据相关产业发展,将“大数据战略”上升为国家意志。美国政府将数据定义为“未来的新石油”,并表示一个国家拥有数据的规模、活性及解释运用的能力将成为综合国力的重要组成部分。未来,对数据的占有和控制甚至将成为陆权、海权、空权之外的另一种国家核心资产。
在我国,政府各个部门都握有构成社会基础的原始数据,如气象数据、金融数据、信用数据、电力数据、煤气数据、自来水数据、道路交通数据、客运数据、安全刑事案件数据等。这些数据在每个政府部门中看起来都是单一的、静态的。但是,如果政府可以将这些数据关联起来,并对这些数据进行有效的关联分析和统一管理,这些数据必定获得新生,其价值是无法估量的。
具体来说,现在城市都在走向智能化,如智能电网、智慧交通、智慧医疗、智慧环保、智慧城市,这些都依托于大数据,可以说大数据是智慧的核心能源。从我国整体投资规模来看,自2012年中华人民共和国住房和城乡建设部发布《关于开展国家智慧城市试点工作的通知》至今,全国创建智慧城市的数量超过290个,通信网络和数据平台等基础设施建设投资规模接近5 000亿元。大数据为智慧城市的各个领域提供了决策支持。在城市规划方面,通过对城市地理、气象等自然信息,和经济、社会、文化、人口等人文社会信息的挖掘,可以为城市规划提供决策,强化城市管理服务的科学性和前瞻性;在交通管理方面,通过对道路交通信息的实时挖掘,能有效缓解交通拥堵,并快速响应突发状况,为城市交通的良性运转提供科学的决策依据;在舆情监控方面,通过网络关键词搜索及语义智能分析,能提高舆情分析的及时性、全面性,全面掌握社情民意,提高公共服务能力,应对网络突发的公共事件,打击违法犯罪;在安防与防灾方面,通过大数据的挖掘,可以及时发现人为或自然灾害、恐怖事件,提高应急处理能力和安全防范能力。
另外,作为国家的管理者,政府应该有勇气将手中的数据逐步开放,提供给更多有能力的机构组织或个人来分析并加以利用,以加速造福人类。例如,中华人民共和国国家统计局筹建的data.stats.gov.cn网站,实现了政府数据的公开。
③ 企业的大数据。电商企业首席体验官(CXO)最关注的还是报表曲线的背后有怎样的信息,他们该做怎样的决策,其实这一切都需要通过数据来传递和支撑。在理想的世界中,大数据是巨大的杠杆,可以改变公司的影响力、带来竞争差异、节省金钱、增加利润、愉悦买家、奖赏忠诚用户、将潜在客户转换为客户、增加吸引力、打败竞争对手、开拓用户群并创造市场。
那么,哪些传统企业最需要大数据服务呢?先来举几个例子。
a. 对大量消费者提供产品或服务的企业(精准营销)。
b. 做小而美模式的中长型企业(服务转型)。
c. 在互联网压力之下必须转型的传统企业(生死存亡)。
对于企业的大数据,还有一种预测:随着数据逐渐成为企业的一种资产,数据产业会向传统企业的供应链模式发展,最终形成“数据供应链”。这里有两个明显的现象。
a. 外部数据的重要性日益超过内部数据。在互连互通的网络时代,单一企业的内部数据与整个互联网数据相比只是沧海一粟。
b. 能提供包括数据供应、数据整合与加工、数据应用等多环节服务的公司会有明显的综合竞争优势。
对于提供大数据服务的企业来说,其等待的是合作机会,就像微软的总裁布拉德·史密斯所说:“给我提供一些数据,我就能做一些改变。如果给我提供所有数据,我就能拯救世界。”
如今,一直做企业服务的巨头公司的优势将不复存在,随着新兴互联网企业加入战局,企业间开启了残酷竞争模式。为何会出现这种局面?从IT产业的发展来看,第一代IT巨头大多是ToB(即面向企业)的,如IBM、微软、甲骨文、SAP、惠普等传统IT企业;第二代IT巨头大多是ToC(即面向用户)的,如雅虎、谷歌、亚马逊等互联网企业。大数据到来前,这两类公司彼此之间基本上是井水不犯河水的,但在当前大数据时代,这两类公司已经开始直接竞争。这个现象出现的本质原因是在互联网巨头的带动下,传统IT巨头的客户普遍开始从事电子商务业务,正是由于客户进入了互联网,所以传统IT巨头们不情愿地被拖入了互联网领域。如果它们不进入互联网,其业务量必将萎缩。在进入互联网后,它们又必须将云技术、大数据等互联网最具有优势的技术通过封装打造成自己的产品再提供给企业。
以IBM为例,前一个十年,他们抛弃了计算机硬件,成功转向了软件和服务。目前,其将远离服务与咨询,更多地专注于因大数据分析软件而带来的全新业务增长点。IBM前首席执行官罗睿兰认为“数据将成为一切行业当中决定胜负的根本因素,最终数据将成为人类至关重要的自然资源”。IBM积极地提出了“大数据平台”架构,该平台的四大核心组成部分包括Hadoop系统、流计算(Stream Computing)、数据仓库(Data Warehouse)和信息整合与治理(Information Integration and Governance),如图1-3所示。

图1-3 IBM的大数据平台
另外一家亟待通过云和大数据战略而复苏的巨头公司惠普也推出了自己的产品——HAVEn,它是一个可以自由扩展伸缩的大数据解决方案。这个解决方案由Hadoop/HDFS、惠普智能数据操作层(Autonomy IDOL)、惠普分析平台(HP Vertica)、惠普企业安全管理和惠普企业级安全管理(Enterprise Security)关键组件组成,并提供对第三方应用的集成(nApps)支持。HAVEn不是一个软件平台,而是一个生态环境。四大组成部分满足不同的应用场景需要,Autonomy IDOL是解决音视频识别的方案;Vertica是解决数据处理的速度和效率的方案;Enterprise Security是解决数据处理的方案;Hadoop/HDFS提供了对通用Hadoop技术的支持,如图1-4所示。

图1-4 惠普的HAVEn大数据平台
④ 个人大数据。个人大数据的概念很少有人提及,简单来说,就是与个人相关联的各种有价值的数据信息被有效采集后,可由本人授权提供给第三方进行处理和使用,并获得第三方提供的数据服务。
未来,每个用户都可以在互联网中注册个人的数据中心,以存储个人的大数据信息。用户可确定哪些个人数据可被采集,并通过可穿戴设备或植入芯片等感知技术来采集、捕获个人的大数据,如牙齿监测数据、心率数据、体温数据、视力数据、记忆能力、地理位置信息、社会关系数据、运动数据、饮食数据、购物数据等。用户可以将其中的牙齿监测数据授权给某牙科诊所使用,由其监测和使用这些数据,进而为用户制定有效的牙齿防治和维护计划;也可以将个人的运动数据授权提供给某运动健身机构,由其监测自己的身体运动机能,并有针对地制订和调整个人的运动计划;还可以将个人的消费数据授权给金融理财机构,由其帮用户制订合理的理财计划并对收益进行预测。当然,其中有一部分个人数据是无须个人授权即可提供给国家相关部门进行实时监控的,例如,罪案预防监控中心可以实时地监控本地区每个人的情绪和心理状态,以预防自杀和犯罪的发生。
以个人为中心的大数据有以下特性。
a. 数据仅留存在个人中心,第三方机构只被授权使用(数据有一定的使用期限),且必须接受“用后即焚”的监管。
b. 采集个人数据应该明确分类,除了国家立法明确要求接受监控的数据外,其他类型的数据由用户自己决定是否被采集。
c. 数据的使用只能由用户进行授权,数据中心可帮助用户监控个人数据的整个生命周期。
展望是美好的,也许离实现个人数据中心的愿望还很遥远,也许这不是保护个人数据隐私的最好方法,也许业界对大数据的无限渴求会阻止个人数据中心的实现,但是随着数据越来越多,在缺乏监管的情况下,必然会有一场激烈的博弈,“是数据重要还是隐私重要”“是以商业为中心还是以个人为中心”,让我们拭目以待。
2. 大数据处理流程
具体的大数据处理方法有很多,根据长时间的实践,可以总结出一个基本的大数据处理流程。整个处理流程可以概括为4步,分别是采集、导入和预处理、统计与分析、挖掘。
(1)采集
大数据的采集是指利用多个数据库来接收客户端(如Web、App或传感器形式等)的数据,并且用户可以通过这些数据库来进行简单的查询和处理工作。例如,电商会使用传统的关系型数据库(如MySQL和Oracle等)存储每一笔业务数据,除此之外,Key-Value型数据库(如Redis)、文档型数据库(如MonogoDB)、图形数据库(如Neo4j)等NoSQL数据库也常用于数据的采集。
在大数据的采集过程中,其主要特点和挑战是并发数高,因为同时有可能有成千上万的用户在进行访问和操作。例如,火车票售票网站12306和购物网站淘宝,它们并发的访问量在峰值时达到上百万,所以需要在采集端部署大量数据库才能支撑,并且如何在这些数据库之间进行负载均衡和分片的确是需要深入思考和设计的。
(2)导入和预处理
虽然采集端本身会有很多数据库,但是如果要对这些海量数据进行有效的分析,还是应该将这些来自前端的数据导入到一个集中的大型分布式数据库或分布式存储集群中,并且可以在导入基础上做一些简单的清洗和预处理工作。有一些用户会在导入时使用来自Twitter、LinkedIn等公司相继开源的流式计算系统Storm、分布式发布订阅消息系统Kafka等对数据进行流式计算,来满足部分业务的实时计算需求。
导入与预处理过程的特点和挑战主要是导入的数据量大,每秒的导入量经常会达到百兆,甚至吉比特级别。
(3)统计与分析
统计与分析主要利用分布式数据库,或者分布式计算集群来对存储于其内的海量数据进行普通的分析和分类汇总等,以满足大多数常见的分析需求。在这方面,一些实时性需求会用到易安信(EMC,一家美国信息存储资讯科技公司)的分布式数据库Greenplum、Oracle的新一代数据库云服务器Exadata以及基于MySQL的列式存储Infobright等,而一些批处理或者基于半结构化数据的需求可以使用Hadoop。
统计与分析的主要特点和挑战是分析涉及的数据量大,其对系统资源,特别是I/O会有极大的占用。
(4)挖掘
和统计与分析过程不同的是,数据挖掘一般没有预先设定好的主题,主要是在现有数据上面进行基于各种算法的计算,从而起到预测(Predict)的效果,以实现一些高级别数据分析的需求。比较典型的算法有用于聚类的K-Means、用于统计学习的SVM和用于分类的朴素贝叶斯,使用的工具主要为Hadoop的Mahout等。
挖掘过程的特点和挑战主要是用于挖掘的算法很复杂,计算涉及的数据量和计算量都很大,以及常用数据挖掘算法以单线程为主。
数据来自各个方面,在面对庞大而复杂的大数据时,选择一个合适的处理工具就显得很有必要,工欲善其事,必先利其器,一个好的大数据分析工具不仅可以使工作事半功倍,还可以让人们在竞争日益激烈的云计算时代,挖掘大数据价值,及时调整战略方向。
3. 大数据分析工具
(1)Hadoop
Hadoop是一个能够对大量数据进行分布式处理的软件框架,其以一种可靠、高效、可伸缩的方式进行数据处理。Hadoop 2.0的架构如图1-5所示。

图1-5 Hadoop 2.0的架构
① ZooKeeper(分布式协作服务):ZooKeeper用于解决分布式环境下的数据管理问题,主要是统一命名、同步状态、管理集群、同步配置等。
② HDFS(分布式文件系统):Hadoop的HDFS是Hadoop体系中数据存储管理的基础。它是一个高度容错的系统,能检测和应对硬件故障,用于在低成本的通用硬件上运行。HDFS简化了文件的一致性模型,通过流式数据访问,提供高吞吐量应用程序数据访问功能,适用于带有大型数据集的应用程序。
③ Flume(日志收集工具):Flume是Cloudera开源的日志收集系统,具有分布式、高可靠、高容错、易于定制和扩展的特点。它将数据从产生、传输、处理并最终写入目标路径的过程抽象为数据流,在具体的数据流中,数据源支持在Flume中定制数据发送方,从而支持收集不同协议数据。同时,Flume数据流提供对日志数据进行简单处理的能力,如过滤、格式转换等。此外,Flume具有将日志写入各种数据目标的可定制能力。因此,Flume是一个可扩展、适用于复杂环境的海量日志收集系统。
④ YARN(资源管理系统):YARN是一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。
⑤ MapReduce(离线计算):MapReduce是一种计算模型,用于进行大数据量的计算。其中,Map对数据集上的独立元素进行指定的操作,生成“键值对”形式的中间结果;Reduce则对中间结果中相同“键”的所有“值”进行规约,以得到最终结果。MapReduce的功能划分非常适合在大量计算机组成的分布式并行环境中进行数据处理。
⑥ Spark(大数据处理通用引擎):Spark提供了分布式的内存抽象,其最大的特点就是快,是Hadoop MapReduce处理速度的100倍。此外,Spark提供了简单易用的API,用几行代码就能实现WordCount。
⑦ Sqoop(数据同步工具):Sqoop是SQL-to-Hadoop的缩写,主要用于在传统数据库和Hadoop之间传输数据。数据的导入和导出利用了MapReduce程序,充分利用了MapReduce的并行化和容错性。
⑧ Hive(基于Hadoop的数据仓库):Hive定义了一种类似SQL的查询语言,将SQL转换为MapReduce任务在Hadoop上执行。其通常用于离线分析。
⑨ Pig(基于Hadoop的数据流系统):Pig的设计动机是提供一种基于MapReduce的Ad-Hoc(计算在query时发生)数据分析工具。人们定义了一种数据流语言Pig Latin,其可以将脚本转换为MapReduce任务在Hadoop上执行。Pig通常用于进行离线分析。
⑩ Oozie(作业流调度系统):Oozie是一个基于工作流引擎的服务器,可以运行Hadoop的MapReduce和Pig任务。它其实就是一个运行在Java Servlet容器(如Tomcat)中的Java Web应用。
⑪ HBase(分布式列存数据库):HBase是一个针对结构化数据的可伸缩、高可靠、高性能、分布式和面向列的动态模式数据库。和传统关系型数据库不同,HBase采用了BigTable的数据模型——增强的稀疏排序映射表(Key/Value),其中键(Key)由行关键字、列关键字和时间戳构成。HBase提供了对大规模数据的随机、实时读写访问,同时,HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。
⑫ Kafka(高吞吐量的分布式发布订阅消息系统):Kafka可以处理消费者规模的网站中的所有动作流数据。动作包含网页浏览、搜索等,是现代网络中许多社会功能的一个关键因素;数据由于吞吐量的要求,通常是通过处理日志和日志聚合来解决的。而对于像Hadoop一样的日志数据和离线分析系统数据,由于存在实时处理的要求限制,因此采用Kafka就成为了一种可行的方法。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理。
Hadoop是一个能够让用户轻松构建和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点。
a. 高可靠性,Hadoop按位存储和处理数据的能力值得信赖。
b. 高扩展性,Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可以方便地扩展到数以千计的节点中。
c. 高效性,Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,其以并行的方式工作,因此处理速度非常快。
d. 高容错性,Hadoop能够自动保存数据的多个副本,并且能够自动对失败的任务进行重新分配。
e. 平台与语言选择灵活,Hadoop带有使用Java语言编写的框架,因此运行在Linux平台上是非常理想的。Hadoop上的应用程序也可以使用其他语言编写,如C++。
(2)Apache Spark
Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎。Spark是由加州大学伯克利分校的AMP实验室所开源的类Hadoop MapReduce的通用并行框架,如图1-6所示。

图1-6 Apache Spark框架
Spark是在Scala语言中实现的,它将Scala用作其应用程序框架。Spark与Hadoop不同,能够和Scala紧密集成,其中的Scala可以像操作本地集合对象一样轻松地操作分布式数据集。
尽管创建Spark是为了支持分布式数据集上的迭代作业,但是实际上它是对Hadoop的补充,可以在Hadoop文件系统中并行运行。通过名称为Mesos的第三方集群框架可以支持此行为。Spark具有以下特点。
① 高性能,在内存计算时,Spark的运算速度是MapReduce的100倍。
② 易用,Spark提供了80多个高级运算符。
③ 通用,Spark提供了大量的库,包括SQL、DataFrames、MLlib、GraphX、Spark Streaming,开发者可以在同一个应用程序中无缝组合使用这些库。
Spark的组成如下。
① Spark Core,其包含Spark的基本功能,尤其是定义弹性分布式数据集(Resilient Distributed Database,RDD)的API、操作及其两者的动作。其他Spark的库都是构建在RDD和Spark Core之上的。
② Spark SQL,其提供通过Hive查询语言(HiveQL)与Spark进行交互的API。每个数据库表都被当作一个RDD,Spark SQL查询被转换为Spark操作。
③ Spark Streaming,其对实时数据流进行处理和控制。Spark Streaming允许程序像普通RDD一样处理实时数据。
④ MLlib,它是一个常用机器学习算法库,算法被实现为对RDD的Spark操作。MLlib包含可扩展的学习算法,如分类、回归等需要对大量数据集进行迭代的操作。
⑤ GraphX,它是控制图、并行图操作和计算的一组算法和工具的集合。GraphX扩展了RDD API,包含控制图、创建子图、访问路径上所有顶点的操作。
(3)Apache Storm
Storm由Twitter开源,是一个分布式的、容错的实时计算系统,支持多种编程语言。Storm可以非常可靠地处理庞大的数据流,用于处理Hadoop的批量数据。其框架如图1-7所示。

图1-7 Apache Storm框架
Storm有许多应用领域,如实时分析、在线机器学习、流式计算、分布式远程过程调用(Remote Procedure Call,RPC,一种通过网络从远程计算机程序上请求服务的协议)、数据抽取、转换和加载等。Storm的处理速度惊人,有数据表明,每个节点每秒可以处理100万个数据元组。
任务实施
(1)安装Ubuntu系统
① 在虚拟机中使用Ubuntu镜像文件安装Ubuntu系统,如图1-8所示。

图1-8 在虚拟机中安装Ubuntu系统
② 在用户登录界面中,输入设置的账号、密码,如图1-9所示,进入Ubuntu系统。

图1-9 用户登录界面
(2)Ubuntu中常用命令的使用
① 常用文件和目录操作命令有“cd”“ls”“ll”“mkdir”“rm”“cp”“touch”“pwd”“mv”“vi”等。
命令“cd”用于切换当前工作目录,如图1-10所示。

图1-10 切换当前工作目录
命令“ls”用于显示指定工作目录中的内容(列出当前工作目录所含的文件及子目录),如图1-11所示。

图1-11 显示指定工作目录中的内容
命令“ll”用于显示指定工作目录中的内容(列出当前工作目录所含的文件及子目录,包含隐藏目录),如图1-12所示。

图1-12 显示指定工作目录中的内容(包含隐藏目录)
命令“mkdir”用于建立目录的子目录,如图1-13所示。

图1-13 建立目录的子目录
命令“rm”用于删除一个文件或目录,如图1-14所示。

图1-14 删除一个文件或目录
命令“rm -r”用于删除一个文件或目录(可以包含多个子文件),如图1-15所示。

图1-15 删除一个文件或目录(可以包含多个子文件)
命令“cp”用于复制文件或目录,如图1-16所示。

图1-16 复制文件或目录
命令“touch”用于建立一个新的文件,如图1-17所示。

图1-17 建立一个新文件
命令“pwd”用于显示当前工作路径,如图1-18所示。

图1-18 显示当前工作路径
命令“mv”用于为文件或目录改名,如图1-19所示,或将文件或目录移至其他位置。

图1-19 为文件改名
命令“vi”用于使用vi编辑器打开指定文件(vi编辑器中常用参数有i、I、A、?、:q、:wq、:q!)。
• 参数“i”用于从光标当前位置进入编辑状态。
• 参数“I”用于从光标当前所在行最前位置进入编辑状态。
• 参数“A”用于从光标当前所在行最后位置进入编辑状态。
• 参数“?”用于查找指定内容所在位置,找到后按N表示向下查找,按n表示向上查找。
• 参数“:q”用于在没有任何修改操作的情况下退出vi编辑器。
• 参数“:q!”用于强行退出vi编辑器。
• 参数“:wq”用于在进行编辑后保存并退出vi编辑器,如图1-20所示。

图1-20 编辑后保存并退出vi编辑器
② 常用文件权限修改命令有“sudo”“chmod”“chown”等。
命令“sudo”用于以系统管理员的身份执行指令,如图1-21所示。

图1-21 以系统管理员的身份执行指令
命令“chmod”用于更改指定文件或目录拥有的权限,如将student目录更改为777权限,如图1-22所示。

图1-22 更改指定文件或目录拥有的权限
命令“chown”用于更改指定文件或目录的用户拥有者,例如,将student目录拥有者和拥有组从root更改为bailing,如图1-23所示。

图1-23 更改指定文件或目录的用户拥有者
③ 常用压缩与下载命令有“tar”“apt-get install”等。
命令“tar”用于解压tar.gz类型的压缩文件,如图1-24所示。

图1-24 解压文件
命令“apt-get install”用于自动从网上下载相应软件包,如图1-25所示。

图1-25 自动从网上下载相应软件包