Hadoop金融大数据分析(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-06 12:24:11

点击下载

作者:王小宁,(美)Rajiv Tiwari(拉吉夫.蒂瓦里)

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

Hadoop金融大数据分析

Hadoop金融大数据分析试读:

前言

数据正以惊人的速度增加,而公司要么疲于应付,要么急于利用这些数据进行分析。Hadoop是一个优秀的开源框架,可以应付这些大数据问题。

在过去的几年里,我一直在金融部门使用Hadoop,但在使用的过程中,一直没有发现有关Hadoop在金融应用中的任何案例资源或书籍。我遇到的关于Hadoop、Hive或一些MapReduce模式的书籍大都是用各种各样的方式统计单词数量或分析Twitter信息。

我写这本书旨在解释Hadoop和其他相关产品在处理金融案例大数据中的基本应用。在书中,介绍了很多案例并提供了一个非常实用的方法。

这本书包含什么

第1章,大数据回顾。本章包含大数据概览、前景和技术演变,也介绍了Hadoop架构的基本知识、组成部分和分布式框架。如果你之前已经了解Hadoop,这一章可以忽略。

第2章,金融服务中的大数据。本章将延伸到站在一个金融机构的角度去看大数据。主要介绍大数据在金融部门的演进故事,在项目落地时的一些挑战,以及利用相关工具和技术处理金融案例的应用。

第3章,在云端使用Hadoop。本章包含大数据在云端使用的概览,以及基于端到端数据处理的样本投资组合风险模拟项目。

第4章,使用Hadoop进行数据迁移。本章讨论了将历史数据从传统数据源迁到Hadoop上的几种常用项目。

第5章,入门。本章包含了一个非常大的企业数据平台的实施项目,以支持各种风险和监管要求。

第6章,变得有经验。本章给出了实时分析的概览和检测欺诈交易的样本项目。

第7章,深入扩展Hadoop的企业级应用。本章包含的主题扩展到Hadoop在公司中的使用,如企业数据湖、Lambda架构和数据管理。还介绍了更多基本的财务案例与简短的解决方案。

第8章,Hadoop的快速增长。本章讨论了Hadoop分布式架构的升级周期,并用最佳实践和标准完成此书。

阅读这本书你需要哪些基础知识

因为Hadoop是一个数据处理和分析的技术框架,因此在数据库、项目和分析工具上有一些经验对读者会有帮助。

这本书是一个入门指南,包含了大量外部引用的大数据产品。因此,如果在任何时候需要深入了解Hadoop,我们鼓励读者参考书中提到的外部资源。

哪些人适合读这本书

本书主要面向致力于使用Hadoop的金融部门工作人员,包含数据项目开发人员、分析师、架构师和管理人员。

它也有助于来自其他行业最近转换或想将业务领域转向金融部门的技术专业人士。

这本书是一本初学者指南,涵盖了使用Hadoop作为金融案例主题的大部分内容,并非真正意味着深入了解Hadoop或提供现成代码。作者简介

Rajiv Tiwari是一位有着超过15年经验的自由大数据架构师,他的研究方向包括大数据、数据分析、数据管理、数据架构、数据清洗/数据整合、数据仓库,以及银行和其他金融组织中的数据智能等。

他毕业于瓦拉纳西印度理工学院(IIT)电子工程专业,在英国工作了10年有余,大部分时间居住在英国金融城——伦敦。从2010年起,Rajiv就开始使用Hadoop,当时银行部门使用Hadoop的还很少。他目前正在帮助1级投资银行(Tier 1 Investment Bank)在Hadoop平台上实施一个大型风险分析项目。

如果想联系Rajiv,则可以通过他的网站http://www.bigdatacloud.net或推特@bigdataoncloud。

我一直认为当作家把自己的书献给他们的妻子、合作伙伴或孩子时有点俗气,但是近几个月来,让我明白了为什么一个家庭的支持对写一本书那么重要。

考虑到我目前在投资银行每天工作时间很长,且很难抽出时间来写这本书,所以,我一直在深夜和周末写这本书。我要感谢我的妻子Seema,她几乎帮我照料一切能分散我写作注意力的东西;还有我的[1]儿子Rivaan。

[1]楷体字部分是引用作者的原话。审稿人简介

Harshit Bakliwal是一位印度领先的IT公司的Hadoop开发者。他有6年左右的工作经验和超过3年的大数据/Hadoop经验。他从2010年开始使用Hadoop,当时Hadoop刚刚在科技界崭露头角,并没有太多的在线帮助。从那时起,他继续用自己的方式学习这门语言及其他高水平的语言,如Pig、Hive、Sqoop、Oozie和HBase。现如今他能处理4~5个集群(每个集群大约有200个节点)上PB级的数据。

Dr.Daniel Fasel是Scigility公司的创始人和CEO。Scigility公司为瑞士和欧洲其他国家的大规模信息系统和大数据技术提供解决方案。它的专业团队在大数据技术上有超过7年的极强的学术背景和实际知识经验。

他是瑞士电信(瑞士第一大电信运营商)商业智能团队的第一位数据科学家,并在就职期间实现了NoSQL技术在瑞士电信公司的探索性分析技术。在注重科学数据和NoSQL技术之前,他是合同和客户域(瑞士电信数据仓库的核心组件)的商业智能工程师。他还担任商业情报架构师和Oracle Hyperion Essbase立方体管理员。

他在瑞士福里堡大学(University of Fribourg)获得经济学博士学位。他写了一篇关于模糊数据仓库的文章,让他获得了最高的成绩。除了他的博士研究,他一直担任福里堡大学信息学系的系统工程师和系统管理员团队的领导。2009年(当时大数据还不是一个流行词),他安装和维护了分布式计算集群和NoSQL技术。他还经常在大数据和数据仓库领域出版英语或德语的书籍与文章。

Mark Reddy是软件工程师和分布式系统爱好者。他从爱尔兰的高威梅奥理工学院(Galway-Mayo Institute of Technology)荣誉毕业后,曾在Hewlett-Packard和Avaeon Solutions公司任职。他目前在Boxever工作,这是一家专注于旅游行业大数据和预测分析的爱尔兰初创企业。他使用Hadoop、Spark、Cassandra、ZooKeeper、Storm、Kafka等工具设计并实现了大规模分布式的解决方案,这些系统处理的数据达TB级。他喜欢利用他的知识和经验为开源项目做贡献,并对行业热点话题进行公开演讲。

当他不写代码的时候,他喜欢公开演讲或写博客(http://markreddy.ie/),他也喜欢旅游、健身,以及发推特随想@markreddy。第1章大数据回顾

任何一个组织或个人都有一个可用来使用或分析的数字足迹。简单来说,大数据分析指的是对数量不断增长的数据的使用。

在本章中,我们将在下面几个标题的帮助下回顾一下大数据和Hadoop:

● 大数据是什么。

● 大数据技术的演进。

● 大数据的发展前景。

● 与大数据相关的职业。

● Hadoop架构。

● Hadoop生态圈简介。

● Hadoop版本。大数据是什么

不同的咨询公司和IT供应商对大数据给出了不同的定义。以下是两种典型的定义。

第一种定义是“数量如此之多以至于无法用传统的数据处理工具和应用来处理的数据被称为大数据”。

第二种定义是著名的3V定义,也被公认为最专业的定义,即“大量(Volume)、多样(Variety)、高速(Velocity)是与大数据相关的三个属性或维度。大量指的是数据的量很大,多样指的是数据的类型很多,高速指的是数据处理的速度很快”。数据量

关于数据量的大小一直存在争议,究竟什么样的数据才能被归为大数据呢?不幸的是,没有一个定义好的规则来对其进行分类。对于一家处理GB (1GB=230B)级数据的小公司来说,TB(1TB=210GB)级的数据可能被认为是大数据。对于处理TB级数据的大公司来说,PB(1PB=210TB)级的数据则被认为是大数据。但无论在什么情况下,我们所说的大数据至少是TB级的。

对于个人和组织来说,数据正以指数级的速率在增长。没人想要抛弃数据,尤其是现在硬盘的价格一直在下降。除了想要存储无尽的数据,企业也需要分析它们。一般来说,数据是以不同的形式存储的,其中大量的交易数据被称为结构化数据,图像和音频等数据被称为非结构化数据。数据速度

直到大约5年前,公司常常提取(Exact)、转换(Transform)和加载(Load) (简称ETL)日常产生的批量数据,导入数据仓库或数据集市,然后使用这些平台上的商业智能分析工具对数据进行分析和处理。如今,有更多的数据源如邮件、社交媒体和交易等为我们提供数据,然而对日常批量数据的处理并没有产生多大的价值。企业现在越来越多地在网上开展业务,数据量和业务需求不断增加,也实时地增加了数据的产生速度。

随着内存和硬盘的价格越来越低及计算机的处理速度加快,人们对实时数据进行分析的期望从没有像现在这么大。数据类型

以前,数据大多以结构化的数据库形式存在,这样的形式有利于使用传统的数据集成和分析工具对其进行处理。

但是现在的企业需要处理异构型数据,从Excel表格、数据库到纯文本、图片、视频、网络数据、GPS(全球定位系统)数据、传感器数据、文件数据、移动信息数据,甚至包括可以扫描和转换为电子格式的文件。

企业必须适应新的数据格式,并且能够处理和分析这些数据。大数据技术的演进

本节我们将分享一些与Hadoop主题相关的大数据演进的故事。过去

尽管我们感觉Hadoop进入市场只有几年时间,但事实上它于十几年前就出现了。2003年,雅虎开发了一个被称为Nutch的项目来解决其网络搜索的性能和可扩展性问题。

2003年和2004年,谷歌发表了关于Google's Filesystem(谷歌文件系统)和MapReduce的论文。

Nutch的开发者开始使用在谷歌论文中提到的方法进行改进,来帮助他们扩展到多台机器的进程。该解决方案在很大程度上是有效的,但仍然不是一个最佳的解决方案。

2006年,雅虎聘用Doug Cutting来改进网络搜索解决方案。他联络了Apache开发的一个项目,并从Nutch中拿出存储和处理的部分创建了一个通用的、可重复使用的框架。有趣的是,Doug以他儿子的玩具象命名这个开源项目为Hadoop,他甚至都没有想到这个名字在几年后会成为信息技术领域最时髦的词。Doug的团队改进了Hadoop的框架,并在2008年发布了真正的网络搜索解决方案。

雅虎持续将它的应用迁移到Hadoop上,截至2011年,它的搜索引擎运行在包含数百PB级数据的42000个节点上。现在

现在,几乎所有的网络巨头,如Facebook、谷歌、微软和eBay,都在使用Hadoop作为其框架来探索数据。根据国际数据公司(IDC)的调查,63.3%的公司已经部署或计划部署Hadoop。余下36.7%的公司也计划实施,但可能会超过一年才可以实施。

现在已经有很多关于Hadoop分布的供应商,如Cloudera和Hortonworks这两家公司让部署和管理Hadoop变得更容易,它们同时提供软件支持来将Hadoop集成到组织的IT环境中。未来

IDC研究预测,至少在未来几年,数据存储会有53.4%的年复合增长率。

IDC还预测,大数据技术和服务市场将有27%的年复合增长率,截至2017年将会达到324亿美元的规模——大约是整体信息与通信技术市场增长速度的6倍。

目前,至少有几十家初创企业拥有非常独特的产品,并且拥有数亿美元的风险投资。

无论你怎样定义大数据,都不可否认它将是一个巨大的市场,并且将吸引企业技术支出的大部分。大数据愿景

本节将讨论大数据组件的功能,如存储、资源管理、治理、处理和分析数据,如下图所示。这些组件中的大部分被包装成一个企业级的Hadoop架构,我们将在本书后面进行更详细的讨论。存储

数据存储就是原生数据存在的地方,它是一个包含结构化数据和非结构化数据的可靠的、具有容错性的分布式文件系统。

数据可以存储在一个分布式部署的文件系统中,如Hadoop分布式文件系统(Hadoop Distribution Filesystem, HDFS);也可以存储在基于云的系统中,如Amazon S3;还可以存储在NoSQL数据库中,如Hadoop生态系统中的HBase和Cassandra数据库。

在将数据移动到大数据生态系统中时,可利用一些数据集成工具实现,如Flume和Sqoop;也可利用Web服务接口实现,如Amazon S3上的REST和SOAP。NoSQL

NoSQL是非关系型且分布式的开源和横向扩展的数据库。

NoSQL一词容易让人误解为NoSQL数据库不支持SQL操作。这个词现在通常定义为“不仅仅是SQL”(Not Only SQL)。

NoSQL的其他特性包括无模式的、易于复制支持、集成缓存、简单的API和最终一致性/BASE(不是ACID)。

与关系数据库相比,NoSQL数据库具有优越的性能。如果我们处理如下内容,则会有更大的扩展性:

● 大量的结构化、半结构化和非结构化数据。

● 包含频繁的代码更改和快速的迭代需求。

● 需要高效率的、高速增长的业务需要和可扩展的架构。NoSQL数据库类型

NoSQL数据库主要有4种类型。

● 文档数据库(Document Databases):对每个键值和文档进行匹配。文档可以是简单的或复杂的数据结构,包含键-值对、键-阵列对,甚至是嵌套文件。这种数据库的典型代表是MongoDB和CouchDB。

● 图像数据库(Graph Databases):被用来存储如社交关系等图形化数据。这种数据库的典型代表是Neo4j和HyperGraphDB。

● 键值数据库(Key-Value Databases):最简单的NoSQL数据库,每个条目都存储为属性名(或键)和相应的值。一些键值仓库,如Redis,允许每个值有一个数据类型,如整型。文档数据库还可以作为一个重要的键值数据库,但是它对复杂数据有更强的针对性。这种数据库的典型代表是Riak和Voldemort。

● 列存储数据库(Wide-Column Databases):在大型数据集上是高度优化的查询。这类数据库将数据的列而不是行存储在一起,如Cassandra和HBase。

在数据库市场上至少有几十家NoSQL厂商,每家厂商都声称自己有优势。由于大多数数据库在类型上遵循相似的架构和发展方法,因此,一些企业只使用少数几家供应商的数据库的情况很常见。资源管理

有效的资源管理是操作数据库的必备工具,尤其是当有多个应用程序运行时,需要为计算和数据资源而战。资源管理器(如YARN和Mesos)管理我们的计算/数据资源的分配、解除分配和高效利用。

还有一个工具集用来管理工作流、配置和分布协调,如Oozie和ZooKeeper。数据治理

数据治理是指管理好数据并保证元数据(关于数据的信息)记录准确,数据仅由授权人员和系统访问。有一个管理元数据、身份验证、授权、安全、隐私设置和谱系的工具集,所使用的工具包括Apache Falcon、HCatalog、Sentry和Kerberos。批量计算

批量计算是处理大数据集的一种有效方法,存储的数据是在一段时间内收集然后进行处理的。MapReduce、Pig和Hive脚本均可用于批处理。

通常,批处理程序基于磁盘的数据存储来进行数据的输入和输出,并产生中间结果。

相关的例子包括一天的风险度量计算和历史性贸易分析。实时计算[1]

实时计算是低延迟的数据处理,通常是亚秒级的响应。Spark和Storm是主流的实时处理程序。

一般情况下,批处理过程是指有连续的数据输入的内存处理过程,但它不一定需要持久性存储的输出和中间结果。

相关的例子包括微博的实时处理和股票价格、欺诈检测和系统监控。数据整合工具

数据整合工具将数据带入和带出Hadoop生态系统。除Apache或Hadoop发行版本提供的Flume、Sqoop等工具外,还包括如Informatica、Talend、Syncsort和Datameer等优质供应商,它们都可以提供大数据整合需要的一站式服务。由于以许多数据整合工具的用[2]户界面为基础,并使用第四代语言,所以它们很容易使用,并能让Hadoop生态系统免于复杂的、低级的MapReduce编程。机器学习

机器学习是模型和算法从输入的数据中学习并根据反馈进行提高的过程。该方案由输入的数据驱动,并且不遵循明确的指示。机器学习库的主流套件来源于Mathout,但使用Spark MLlib库或基于Java的自定义的MapReduce编程也并不少见。

也有一些关于语音识别、异常或欺诈检测、预测和推荐产品的例子。商务智能和可视化

Hadoop的发行版本可以将不同的商务智能和数据可视化的供应商连接到底层的Hadoop平台,以此来产生管理报告和分析报告。

在这个领域,有很多厂商和时下几乎所有领先的BI工具提供Hadoop平台的连接器,主流的包括Tableau、SAS、Splunk、QlikView和Datameer。大数据相关的职业

Gartner称,到2015年与全世界大数据直接相关的职位约有440万个,其中包括从基本的服务器维护到高端数据的科学创新。

随着越来越多的企业希望借助分析技术处理大数据,与大数据相关的职位数量会不断增加。随着市场走向成熟和越来越多的公司证明大数据的商业利益,未来从事大数据相关行业的人数将不断增加。

这些职位所需的技术含量极其多样化,包括服务器维护、低级别的MapReduce编程、NoSQL数据库管理、数据分析、数据可视化、数据整合、数据科学、机器学习和商业分析。即使非技术角色,如项目管理、前台人员、金融、贸易、市场营销和销售团队,若要对结果进行分析,都需要使用一套新的分析和可视化工具进行相关培训。

只有极少数的人对大数据或Hadoop的技能要求和需求非常高,因此,他们的收入显然高于市场平均水平。如果能满足如下条件,那么Hadoop职位的薪酬将会更高:

● 技能是新的或稀缺的。

● 技能是比较难学的。

● 诸如MapReduce需要的技术技能与商业领域的知识相结合。

所需的技能如此多样,你可以选择一项你所热衷的作为你的职业。

一些很受欢迎的职位如下。

● 开发者:他们开发MapReduce任务,设计NoSQL数据库,并且管理Hadoop集群。相关的职位包括Hadoop、MapReduce或Java开发人员及Hadoop管理员。

● 架构师:他们对Hadoop组件知识有广度和深度的理解,了解大局,能够推荐要使用的硬件和软件。如果需要,则能领导一个包括开发者和分析师的团队。相关的职位包括大数据架构师、Hadoop架构师、高级Hadoop架构师、领先的Hadoop开发者。

● 分析师:他们将商业知识与数学和统计技能结合起来,使用诸如Pig、Hive、SQL和商务智能工具来分析数据。相关的职位包括商业分析师和商业智能开发人员。

● 数据科学家:他们在分析和可视化工具、业务知识、理解Hadoop生态系统及编程方面有一定的广度和深度,其专长在数学和统计方面,并且有优秀的沟通能力。

在Java、C#、关系数据库和服务器管理方面有开发能力的人很容易了解Hadoop的发展过程,他们会有一些项目实践,并选择专攻一种工具或编程语言。他们还可以学到更多的技能,在各种工作中担任架构师或技术领导者。

具有分析能力的人,在了解业务流程和集成技术后,可以学习一些高级编程语言,如Pig、R、Python或商务智能工具。将商务智能工具和高级编程方面的经验与商业领域的知识结合起来将大有裨益。

虽然笔者尝试把它划分成两条简单的职业路径:开发和分析,但在现实世界中,所有工作角色都有明显的重叠。

只要你拥有优秀的开发和分析技能,同时准备学习数学和商业(无论是正规的教育还是经验),那么没有什么能阻止你成为数据科学家(这一职位被哈佛商业评为21世纪最性感的工作)。Hadoop架构

本节不会深度剖析Hadoop架构方面的知识,而是概述,以便读者能理解之后的内容。

有关本节的详细知识,笔者推荐The Definitive Guide, Tom [3]White, O'Reilly Media一书。HDFS集群

● 一个节点(Node)就是包含数据的计算机,是基于非企业的价格低廉的商品硬件,如下图中的节点1、节点2、节点3等。

● 机架通常是由10个或更多个节点物理存储在一起并连接到相同网络的交换机集合。所以,在一个机架的任何两个节点之间的网络延迟都比不同机架的两个节点之间的延迟低。

● 集群是如下图所示的机架的集合。

● HDFS通过将数据复制成多份来实现容错功能。如果一个组件出现故障,则另一个副本将被启用。

● 非Hadoop系统的文件将被划分为多个块,每个块将以分布式形式被复制到HDFS上。Hadoop很适合非常大的文件,因为它是专门被流或顺序数据访问的,而不是被随机数据访问的。

● 从Hadoop 2.1.0版本开始,每个块(Block)的默认大小是128MB。新版本的Hadoop正朝着更大的默认块进发。块的大小可以根据应用的需要来配置。

● 用大小为128MB的块存储350MB的文件会占用3个块,但第3个块不会完全消耗。块与复制的设计方案很契合,这使得HDFS在商品硬件上是容错的和可用的。

● 如下图所示,各个块被复制到多个节点中。例如,块1存储在节点1和节点2上,块2存储在节点1和节点3上,块3存储在节点2和节点3上。这样的设计允许节点发生故障而不会丢失数据。如果节点1崩溃,则节点2仍然运行,并拥有块1的数据。在这个例子中,我们复制的数据跨两个节点,还可以设置为复制到更多的节点。通过改变Hadoop的配置,甚至可以为每个单独的文件设置复制因子。MapReduce V1

在Hadoop 2.2版之前,MapReduce指的是MapReduce V1,并有一个不同于现在的结构。

● MapReduce程序有两种类型:Map转换和Reduce转换。

● 一个MapReduce任务将在不同的节点上作为并行任务来执行——先Map,然后Map的结果将被Reduce任务执行。

有两种主要的节点,分别是HDFS和MapReduce节点。

● 一个HDFS节点是一个NameNode或DataNode。

● 一个MapReduce节点是一个JobTracker或TaskTracker。

● 客户机通常用JobTracker连通。但是,它也可以与NameNode或DataNode通信。

● 在一个集群中只有一个NameNode。DataNodes存储所有的分布式块,但元数据被这些文件存储在NameNode中。这意味着NameNode是一个单点故障,因此它应该是最好的获得最大可靠性的企业硬件。由于NameNode会在内存中保存整个文件系统的元数据,所以建议购买尽可能多的随机存取存储器(RAM)。

● 一个HDFS集群有很多DataNodes。DataNodes存储数据的块。当客户端请求读取HDFS文件时,客户端从NameNode中发现哪些存储在DataNodes中的块构成该文件。客户机现在可以直接从相应的DataNodes中读取块。这些DataNodes是廉价的企业硬件并且复制到软件层,而不是由硬件层提供的。

● 作为NameNode,在集群上只有一个JobTracker管理所提交的客户端的所有MapReduce任务。它使用自身DataNodes上的TaskTracker调度Map和Reduce任务。从根本上来说,通过机架感知来使用数据块的位置执行任务是十分智能的。机架感知是一个配置,这意味着如果有可能,那么数据块将会在同一个机架中进行处理。块也会被复制到不同的机架中来处理机架故障。JobTracker负责监控TaskTracker的进展,并在不同复制的DataNode中重新安排失败的TaskTracker。

客户端与Hadoop集群的通信如下图所示。MapReduce V2——YARN

MapReduce V1主导大数据的愿景很有多年了,但也有一些限制。

● 极端的可扩展性:它不能容纳超过4000个节点或40000个并发任务的集群尺寸。

● 可用性:NameNode和JobTracker是单点故障。

● 任务:只支持MapReduce任务。

MapReduce V2提出用体系结构的改变来解决这些限制,这种新的架构也被称为Yet Another Resource Negotiator(YARN)。然而,在MapReduce V2上运行YARN并不是被强制的。

新架构具有DataNodes,但是没有TaskTracker和JobTracker。

MapReduce V2支持MapReduce V1,因为V1版本仍然被广泛用于世界各地的公司中。

YARN适用于两个基本面:

● 通用调度和资源管理,而不仅仅是MapReduce。

● 有效的调度和工作负载管理。资源管理器已了解了在每个节点上经由YARN与运行的节点管理器(NodeManager)通信的能力。

如下图所示,当一个应用程序被客户端调用时,应用管理器(Application Master)开始在节点管理器上运行。然后应用管理器负责与资源管理器(ResourceManager)协商资源。这些资源被分配到每个子节点上的容器(Container)中,并在容器中运行任务。

Hadoop已经调整为支持NameNode的高可用性的架构,这是任何核心业务应用的关键要求。Hadoop的V2版本有两个NameNode:一个是活跃的,另一个是备用的。

如下图所示,其中包括JournalNode。对于一个活跃的和一个备用的NameNode的基本设置来说,有三个JournalNodes。正如预期的那样,在一个特定的时间内只有一个NameNode是活跃的。这三个JournalNodes共同决定哪个NameNode将成为活跃的。如果由于某种原因,活跃的NameNode的活跃性下降,那么备用的NameNode将接替它成为新的活跃的NameNode。

Hadoop已经得到进一步的改进来提供更高的可扩展性。有多个NameNodes独立运行,每个NameNode都有自己的命名空间,因而都拥有对自己的一组文件的控制权。然而,它们共享所有的DataNodes,如下图所示。

MapReduce V2像V1一样具有网络拓扑结构。当机架感知被配置为集群时,Hadoop都会尽量在与该数据的最高宽带接入的TaskTracker节点上运行任务。Hadoop生态圈简介

在本节中,我们将简单介绍一下Hadoop组件,并分享一些相关的学习资料。驯服大数据

我们知道,大数据无处不在,并且需要被处理和分析才能变得有意义。但是,我们如何在不破坏数据库的同时处理这些数据呢?

Hadoop这个英雄级的工具可以驯服大数据的原因如下:

● 它是企业级的,可以运行在商用服务器上。用传统的数据库存储大数据是非常昂贵的,一般存储1TB数据的花费是每年25000~50000美元。然而,用Hadoop存储商用服务器上的数据,成本可下降90%,即每年2500~5000美元。

● 它可以水平伸缩。如果需要,则数据可以保存更长的时间,由于是在磁盘外运行的,因此无须清理旧数据。我们可以简单地添加更多的计算机,同时对旧数据进行趋势分析。由于它可以线性扩展,所以当数据量增大时不会产生大的影响,并且无须将原有数据迁移到更大的平台上。

● 它可以处理半结构化和非结构化的数据,如图像、日志文件、视频及具有更优性能和更低成本的文档。

● 处理过程迁移到数据中,而不是将大数据转移到计算引擎中。最小数据移动和处理逻辑可以写在各种编程语言,如Java、Scala、Python、Pig和R中。Hadoop——英雄

Hadoop的核心是HDFS和MapReduce的组合:HDFS用来存储数据;MapReduce用来进行数据计算。

但是Hadoop不仅仅包括HDFS和MapReduce,在其生态圈中还有很多组件,这些组件能在端到端的数据生命周期中提供不同的功能。我们将在下面的章节中简要介绍该生态圈中较受欢迎的组件。HDFS——Hadoop分布式系统

HDFS是一个无限可靠的分布式存储方式。这意味着一旦用户建立了自己的存储,随着业务的增长,可以通过添加更多物美价廉的商用服务器或磁盘来增加额外的存储空间。那么,当服务器不高端时,它是否会失败呢?答案是肯定的。事实上,在一个有1万台服务器的集群上,每天至少会有1台不能运行的服务器。尽管如此,HDFS具有自我修复和极端的容错能力,因为每个数据块会被复制到不同的节点服务器(默认为3个节点)上。因此,如果一个数据节点发生故障,则其他两个数据节点都可以使用。此外,如果DataNode发生失败、块被损坏或遗漏,则失败的DataNode数据或块会复制到运行正常的、重量较轻的数据节点上。MapReduce

MapReduce以分布式形式将计算移动到数据节点上。它可从HDFS及其他数据源(如安装的文件系统和数据库)中读取数据。它具有非常强的容错能力,如果有任何节点的计算作业失败,则会重新分配任务到另一个副本的数据节点上。Hadoop知道如何清理失败的作业并组合各MapReduce任务的结果。

MapReduce框架处理数据可分为两个阶段:Map和Reduce。Map阶段用于对数据进行过滤和排序,Reduce阶段用于聚合数据。我们将展示著名的计算字数(WordCount)的例子,这是了解MapReduce框架的最佳方式。

● 输入的数据在HDFS中被分成多个块。

● 每个块被反馈到Map中进行处理,其输出是一个单词的键值对,用作键和计数的值。

● 键值对是由键和要被反馈到Reduce上进行处理的分区排序组成的。有相同键值的键值对将会在相同的Reduce上处理。

● Reduce将计算每个字的总数,并将每个字及其总字数作为键值对输出。

MapReduce工作的另一个例子是找到在一定时间内交易量最多的客户,如下图所示。HBase

HBase是一个宽列数据库,是NoSQL数据库之一。该数据库中的行存储为键值对,并且不存储空值。因此,从存储效率方面考虑,它非常适合存储稀疏数据。它是线性可扩展的,并提供对存储在HDFS上的数据的实时、随机读写和访问功能。

若想了解更多细节,则可以访问http://hbase.apache.org/。Hive

Hive是一个高水平的声明性语言,适用于所有数据仓库爱好者来做MapReduce项目,这些人喜欢在现成的HDFS上写SQL查询语句。它是一个很好的适合结构化数据的工具,如果你想比标准SQL做更多的东西,则可以使用Java或Python编写自定义函数并使用它们。

Hive脚本最终被转化为MapReduce任务,并且在性能方面和MapReduce几乎一样优异。

若想了解更多细节,则可以访问http://hive.apache.org/。Pig

Pig对于有程序语言背景的编写MapReduce程序的数据工程师来说,是一种高层次的程序语言。它不仅可以处理结构化的数据,而且可以处理非结构化的文本数据。如果需要在默认情况下不可用的其他函数,则可以使用Java或Python编写自定义函数并使用它们。

同Hive一样,Pig脚本可以转化为MapReduce任务,而且在性能方面和MapReduce几乎一样优异。

若想了解更多细节,则可以访问http://pig.apache.org/。ZooKeeper

ZooKeeper是一种集中式服务,用于维护配置信息和名称,提供分布式同步及组服务。

它运行在一个服务器集群上,并使集群可快速协调和可扩展。因为可复制化设计,所以它也是可容错的。

若想了解更多细节,则可以访问http://zookeeper.apache.org/。Oozie

Oozie是一个工作流调度程序系统,用于管理各种Hadoop任务,如Java编写的MapReduce,其他语言如Pig、Hive和Sqoop编写的MapReduce。它还可以管理特定系统的作业,如Java程序和Shell脚本。

相对于其他组件,它也是一个可伸缩的、可靠的和可扩展的系统。

若想了解更多细节,则可以访问http://oozie.apache.org/。Flume

Flume是一个有效的收集、聚集和移动大量日志数据的分布式的、可靠的、可扩展的、可用的服务。如下图所示,它有一个基于数据流的简单、灵活的架构。

输入数据可以是日志文件、点击流、传感器设备、数据库日志或[4]社交的数据流,输出数据可以是HDFS、S3、NoSQL或Solr数据。

源(Source)将接收输入数据并将其写入信道(Channel)中。信道提供了顺序流动和持续存在的数据,一旦数据被输送到输出数据(Outgoing Data)存储器中,则接收器(Sink)将删除信道中的数据。

若想了解更多细节,则可以访问http://flume.apache.org/。Sqoop

Sqoop是一个被设计来有效地传输Hadoop和关系数据库之间大容量数据的工具。

它会执行以下操作:

● 从关系数据库如Oracle、SQL Server、Teradata和MySQL中导入或导出数据到Hadoop中。

● 从关系数据库中导入或导出数据到HDFS、Hive或HBase中。

● 为数据的快速加载进行并行化传输。

若想了解更多细节,则可以访问http://sqoop.apache.org/。Hadoop版本

市面上有许多Hadoop版本,一般分为两种类型:就地部署和部署在云上。明确我们应该选择哪些版本是很重要的,在项目的早期阶段就应确定。选择两种不同的版本或综合使用这些版本的方法也并不罕见。

在这里,我们将研究每种方法的利弊。

● 弹性:在云上可以根据使用情况,添加、删除计算和临时数据资源。所以,一分钱一分货,你用了什么功能就得付相应的钱,这是云计算的一个重要优势。在这种前提下,你需要根据使用的高峰期来采购资源并提前计划数据的增长。

● 横向可扩展性:无论是在本地还是在云上部署,只要你喜欢,就可以添加更多的服务器。但是,在云上部署的速度更快。

● 成本:这是值得商榷的,但要通过简单的计算。选择云计算可以帮你节约成本,因为这样会节约人员、技术支持和数据中心的成本。

● 性能:这又是值得商榷的,但如果大部分数据已经存在,则会由于将数据部署在本地而获得更好的性能。

● 易用性:对于缺少专业技术的人员来说,Hadoop服务器的管理是很难的。擅长Hadoop的数据服务器管理员在云上的管理可能会变得更容易。

● 安全性:虽然没有充分的证据证明在本地部署比在云上更安全,但是在将数据从本地机房移到云上的过程中,很难确定敏感数据的安全性,如客户的个人信息。

● 可定制性:在云上配置和编码的能力是有限的,因为软件分布在服务器上。所以,如果有一个高度复杂的定制化需求,则部署在本地更佳。

Forrestor Research在2014年第一季度的报告中宣布了领先的Hadoop发行商。在撰写本书时,我们仍在等待2015年的新报告,但我们不希望看到任何重大变化。

下图显示了在本地部署和在云上部署领域所有领先的Hadoop发行版。资料来源:2014年第一季度Forrestor关于大数据解决方案的报告。发行版——本地部署

标准的Hadoop发行版(开源的Apache)如下:

● Hadoop分布式文件系统(HDFS)。

● Hadoop MapReduce框架。

● Hadoop共享库和工具,包括YARN。

Hadoop开源的Apache组件有很多,如Hive、Pig、HBase和ZooKeeper,每个组件执行不同的功能。

如果它是一个免费的开源软件集合,那么我们为什么不简单地下载、安装和使用不同的发行版压缩包呢?

因为Hadoop是一个开源项目,所以大部分厂商通过改善现有代码来增加新的功能,并结合它变成自己的版本。

大多数企业选择使用供应商的版本,而不是Apache的开源代码的版本,原因如下:

● 供应商提供了技术支持和咨询服务,这使得企业更容易使用该平台来完成关键任务和企业级任务,并扩展出更多的商业案例。

● 供应商补充了Apache工具和自己的工具来解决特定的任务。

● 供应商把所有的Hadoop组件打包成一个易于安装的版本。

● 供应商一旦发现漏洞,就会提供修复程序和补丁程序,这使得其解决方案更加稳定。

此外,供应商也将更新后的代码贡献给开源库,以促进整体的Hadoop社区的成长。

如下图所示,大部分版本将拥有核心的Apache的Hadoop组件,并辅之以自己的工具,以提供额外的功能。

现在至少有十几家Hadoop供应商,这里主要介绍市场份额位于前三位的供应商。

● Cloudera:这是最老的供应商,并且有最高的市场占有率,它的组件大多数是免费和开源的。但如果升级为有偿服务,则会得到更多组件。

● MapR:它拥有自己的分布式文件系统(可替换HDFS)。它的一些组件是开源的,但如果升级为有偿服务,则会得到更多的组件。它的性能比Cloudera稍好一些,并有额外的功能,如镜像和无单点故障。

● Hortonworks:它是唯一的完全开源的版本。尽管是一个相对较新的版本,但它拥有较高的市场份额。

也有一些来自IBM、匹维托软件(Pivotal Software)、甲骨文(Oracle)和微软(Microsoft)等公司的独特的发行版本。它们通常将Apache的项目与自己的软硬件结合起来,或与其他发行商合作,提供全面的数据平台。发行版——云端

它也被称为Hadoop即服务。如今,许多云供应商提供了Hadoop和用户所选择的发行版,其主要目的是在云中运行Hadoop,用户只需支付自己所使用的那部分费用即可。

虽然大多数Hadoop在本地实现,但云端的Hadoop对于想要实现以下目的组织来说是一个很好的选择:

● 降低创新成本。

● 快速采购大型资源。

● 具有可变资源的需求。

● 运行已经在云上的数据。

● 简化Hadoop的操作。

据技术商业研究公司(TBR)的研究,公共云计算市场规模在2014年达到670亿美元,并将在2018年增长到1130亿美元。这只能证明在未来越来越多的数据将被生成并存储在云上,从而使得数据在云上处理变得更加容易。

有时像Cloudera、MapR或Hortonworks这样的供应商也是一个选择,将Hadoop作为一种服务来提供的顶级供应商如下:

● 亚马逊网络服务(AWS)。

● 微软的Azure。

● 谷歌云(Google Cloud)。

● Rackspace公司。

从理论上讲,用户可以运行自己的集群,只要有一张可以透支额度的信用卡或借记卡即可。从云上开始的步骤非常简单:(1)在云服务供应商那里创建一个账号。(2)上传数据到云中。(3)建立你所选择的编程语言的数据处理应用程序。(4)配置并启动集群。(5)获得输出。

我们将在后面更详细地讨论这一点。总结

在本章中,我们对大数据有了概览并认为有必要使用Hadoop处理大数据,了解了Hadoop架构及其关键组件和供应商,同时了解了Hadoop融入更大的大数据的愿景和相关的就业机会。

在第2章中,我们将看到大数据在金融部门的应用实例。

[1]没有达到秒的速度,即1GHz/1.2秒。

[2]是针对以处理过程为中心的第三代语言提出的,希望通过某些标准处理过程的自动生成,使用户只需说明要做什么,而把具体的执行步骤的安排交给软件自动处理。

[3]中文译文版本《Hadoop权威指南》,清华大学出版社出版,英文更新至第4版,中文更新至第3版。

[4]一个独立的企业级搜索应用服务器,它对外提供类似于Web-Service的API接口。第2章金融服务中的大数据

如今,金融服务机构比其他产业产生更多的高容量数据。例如,纽约证券交易所(NYSE)每天产生1 TB的市场和参考数据,以及用户每秒产生10000次交易记录。因此,对于金融机构来说,利用Hadoop来处理大数据是一个很好的机会。

本章将从金融部门的角度来介绍大数据,包括:

● 各个行业的大数据使用情况。

● 金融行业为什么需要大数据?

● 金融部门的大数据应用案例。

● 金融大数据的演进。

● 应该如何学习金融大数据。

● 金融大数据的实现。各个行业的大数据使用情况

Hadoop由雅虎(灵感来自谷歌的论文)于多年前开发,由其自身对处理非结构化数据的大规模集合的需要而推动,如图片、评论、视频、网络日志和文档等。这些互联网巨头如雅虎、谷歌、Facebook、eBay和LinkedIn的巨大成功并不令人吃惊。

但在最近几年,特别是由于Hadoop框架在稳定性和功能方面的显著改进,Hadoop已经深入所有行业。我们收集了一些不同行业的成功案例,来为您提供关于Hadoop技术的一些很棒的想法。卫生保健

一家做医疗保健的信息技术(IT)公司已经存储了长达7年的有关历史请求和汇款的数据,并且每天都要处理数百万条请求,这在一个传统数据库的合理成本内是不可能实现的。

他们实施了一个大数据解决方案,现在他们:

● 将持续7年的索赔和汇款数据存储在Hadoop平台上。

● 使用Hadoop的分析工具来执行查询。人类科学[1]

NextBio需要处理非结构化人类基因组数据,使用他们的MySQL关系数据库在合理的成本内是不可能实现的。

他们实施了大数据解决方案,使用HBase作为数据存储工具并用Hadoop MapReduce任务处理批量的基因组数据。电信

中国移动是一家规模庞大的电信公司,每天要存储数十亿客户的呼叫和计费记录,这就要求数据存储和处理工具具有非常高的可扩展性。

他们实施了大数据解决方案,主要包括:

● 使用HBase作为数据存储工具来存储完整的数据集,每月增加30 TB的数据是很容易实现的。

● 已经达到100多个Hadoop节点,相对于传统的数据处理解决方案来说既经济又实惠。在线零售商

Etsy(https://www.etsy.com/)是一家在线零售商,需要分析大量的网络日志数据来计算用户行为并进行搜索推荐。

他们在云上实施了大数据解决方案,主要包括:

● 每晚使用亚马逊的Elastic MapReduce(Amazon EMR)运行几十个Hadoop工作流。

● 使用MATLAB进行预测分析,使用可视化工具Tableau展示结果。为什么金融部门需要大数据

大数据不仅改变了医疗、人文科学、电信和在线零售行业的数据愿景,而且改变了金融机构对待他们的海量数据的方式。

如下图所示,一份由麦肯锡(McKinsey)做的关于大数据使用案例的研究指出,金融服务行业有望能充分利用这一显著技术。

相对于其他行业,金融机构的数据相对更容易捕捉,因为它可以从内部系统——包括交易和客户的详细信息,以及外部系统——包括外汇利率、法人的数据等中很容易地获得。

最简单的就是让我们的金融服务最大化每个数据字节的增益。

我们从哪里得到金融大数据呢?

数据收集可以发生在每个阶段,无论是吸纳新客户记录、呼叫中心记录还是金融交易记录,都可以收集数据。金融业正在迅速转移到线上,所以它从未能如此轻易地捕捉数据。当然,也有一些其他原因,例如:

● 客户不再需要去银行取钱、存钱或进行投资。他们可以与银行在网上或通过电话会议讨论他们的要求而不是面谈。根据SNL金融公司的报告,该机构在2014年有2599家分行停业、1137家分行开业,在2013年有1462家分行停业、1487家分行开业。此举使得美国分行的数量下降到94752家,有1.5%的跌幅。这一趋势是全球性的,而不只是在美国。

● 通过电子渠道如借记卡/信用卡和移动设备,用户可以与金融机构互动。这种趋势在英国很明显,如下图所示。这种趋势也是全球性的,而不只是在英国。移动设备如计算机、智能手机、电话、平板电脑,对客户来说,可以让交易变得更容易和更廉价。这意味着客户的交易量将更多,同时产生更多的数据。

● 由于客户资料和交易模式正在迅速改变,所以基于更小的数据集的风险模型变得不再准确。我们需要分析较长时间的数据,并能编写复杂的数据算法,而不用担心计算和数据存储能力。

● 当金融机构将自己的结构化数据和社交媒体上的非结构化数据结合起来时,数据分析就会变得非常强大。例如,他们可以通过分析Twitter、Facebook和其他社交媒体的评论来得到关于他们的新产品或电视广告的反馈意见。金融部门的大数据应用案例

金融部门有时也被称为BFSI部门,也就是银行(Bank)、金融服务(Financial Services)和保险机构(Insurance)。

● 银行业务包括零售、公司、企业、投资(包括资本市场)、卡片和其他核心银行服务。

● 金融服务包括经纪业务、支付渠道、共同基金、资产管理等业务。

● 保险包括人寿险和一般保险。

金融机构一直在积极利用大数据平台,在过去的几年中,他们的主要目标如下:

● 符合监管要求。

● 更好的风险分析。

● 了解客户行为和改进服务。

● 了解交易模式,并使用交叉销售产品的货币化方式。

下面我们将详细讨论金融服务行业运用大数据真正实现商业利益的一些案例。HDFS上的数据归档

HDFS上的数据归档是Hadoop在金融机构的基本应用案例之一,这是一个快速成功的案例。它可以提供非常高的投资回报。数据被归档在Hadoop上,并且仍然可用于查询(虽然不是实时的),这比归档到磁带上更有效,并且比保存到数据库中更廉价。一些应用案例如下:

● 将昂贵和低效的传统大型机的数据迁移并加载作业到Hadoop平台上。

● 将高端、昂贵的数据库上较旧的交易数据迁移到Hadoop的HDFS上。

● 将非结构化的合法、合规及入职文档迁移到Hadoop的HDFS上。监管

金融机构必须符合监管要求。为了满足这些要求,使用传统的数据处理平台正在变得越来越昂贵并且不可持续。

有如下两个应用案例:

● 由于相同或相似的名字有很多,所以通过检查客户的名字来对比制裁黑名单是非常复杂的。当金融机构必须在不同的系统、名称或别名中找到对象的名字时,会变得更复杂。使用Hadoop,我们可以低得多的成本在庞大的姓名和联系信息数据集中应用复杂的模糊匹配姓名和联系整个庞大的数据集信息。

● BCBS239监管规定,金融机构必须能够迅速而准确地估计整个集团的风险暴露程度。使用Hadoop,金融机构可以整合并以最有效和符合成本、效益的方式在单一平台上汇总数据。欺诈检测

在金融业,预计每年在欺诈中会损失数十亿美元。金融机构已经开始投资于Hadoop平台,通过寻找异常的行为模式来识别欺诈性交易。

现在可以在Hadoop平台上以低得多的费用将复杂的算法运行在大量的交易数据上,以确定异常值。交易数据

股市交易数据是实时数据,并且是大规模产生的。对实时数据流可以使用Hadoop基础设施的实时数据流工具来实现快速决策,同时对旧的交易数据可以使用Hadoop的批处理工具来进行趋势分析和预测。风险管理

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载