摘要:Hadoop是一个数据存储和处理平台,基于一个中心概念:数据本地化(data locality)。Hadoop从最初作为搜索平台开始,到目前大量的应用程序,从数据仓库到事件处理再到机器学习,已经不可磨灭地改变了数据格局。

前言

本节内容

将在这一小时学到:

  • 大数据和Hadoop的背景
  • 典型Hadoop用例
  • Hadoop核心组件简介
  • Hadoop生态系统简介

大数据和Hadoop是必然联系在一起的。Hadoop从最初作为搜索平台开始,到目前大量的应用程序,从数据仓库到事件处理再到机器学习,已经不可磨灭地改变了数据格局。

本小时介绍Hadoop运用背后的背景和历史,以及Hadoop的核心概念和典型用例。

本内容全部选自《萨姆斯24小时自学Hadoop》,翻译:赵老师

Hadoop和大数据的简史

这种存储和处理数据的方法,通常被称为“大数据”,是在2000年代初从搜索引擎提供商(主要是谷歌和雅虎)那里开始出现的。.

搜索引擎提供商是第一批面临互联网规模问题的用户,主要是如何处理和存储互联网世界中所有文档的索引。这在当时似乎是一个无法克服的挑战,尽管互联网上的整个内容只是今天的一小部分。

雅虎和谷歌着手提升能力来应对这一挑战。2003年,谷歌发布了一份名为“谷歌文件系统”的白皮书。随后,2004年,谷歌又发布了另一份名为“MapReduce:大型集群上的简化数据处理”的白皮书。同时,在雅虎!DougCutting(通常被认为是Hadoop的最初创建者)正在研究一个名为Nutch的Web索引项目。

谷歌的白皮书激励了道格·切特接受他迄今为止在Nutch项目上所做的工作,并将这些白皮书中概述的存储和处理原则结合起来。其结果就是今天所说的Hadoop。

Hadoop是2006在Apache软件基金会许可方案下作为开源项目诞生的。

注释

Apache软件基金会(ASF)是一个非盈利性组织,成立于1999,为开发者提供了一个开源软件结构和框架,鼓励合作和社区参与,并为项目做出贡献,保护志愿者免遭诉讼。ASF的前提是精英主义的概念,这意味着项目是由功绩决定的。

贡献者是向项目贡献代码或文档的开发人员。他们通常也活跃在邮件列表和支持论坛上,并提供建议、批评和补丁来解决缺陷。提交者是开发人员,他们的专业知识值得他们访问提交代码到项目的主存储库。提交者已经签署了一份贡献者许可协议(CLA),并拥有一个apache.org电子邮件地址。委员会成员作为一个委员会来决定这个项目。

大约在Hadoop项目诞生的同时,其他几项技术创新也在进行中。这些包括:电子商务的迅速发展、移动互联网的诞生与快速发展、博客和用户驱动的Web内容、社会化媒体等。这些创新累积导致了现在所称的数据洪流。这加速了大数据运动的扩展,并导致了其他相关项目的出现,如Spark、开源消息传递系统和NoSQL平台,所有这些将在以后更详细地讨论。

什么是Hadoop?

Hadoop是一个数据存储和处理平台,基于一个中心概念:数据本地化(data locality)。所谓数据本地化的含义是指将计算带给数据而不是从其位置请求数据并将数据发送到远程处理系统或主机来处理的典型模式(例如数据库管理系统)

对于互联网规模的数据—“大数据”—在某些情况下,在计算时间跨网络传输处理所需的大量数据已不再有效,甚至不可能使用。Hadoop使用无共享方法在集群的节点上处理本地数据集,其中每个节点可以独立地处理整个数据集的较小子集,而无需彼此通信。

Hadoop对于其写操作是无模式的(这就是所谓的读系统模式)。这意味着它可以存储和处理广泛的数据,从非结构化文本文档,到半结构化JSON(java对象表示法)或XML文档,再到关系数据库系统的结构化数据。

读系统上的模式与我们习惯使用的关系数据库有着根本的区别,相反,这些关系数据库大体上被归类为写系统上的模式,其中数据通常是强类型的,并且模式是在插入、更新或向上插入操作时预定义和强制执行的。NoSQL平台(如ApacheHBase或Cassandra)通常也被分类为读系统上的模式。

由于在对Hadoop执行写操作期间不解释模式,因此数据库系统通常不使用索引、统计信息或其他构造来优化查询操作和筛选或减少返回到客户机的数据量,这进一步要求数据应具备区域性。

Hadoop被设计成在干草堆中寻找针,通过将一个大问题划分并解决成一组小问题,应用数据局部性的概念,而不像之前的那样共享任何东西来实现这一点。

图1.1 Hadoop核心组件

Hadoop的核心组件和生态组件

Hadoop核心组件

Hadoop有两个核心组件:Hadoop分布式文件系统(HDF)和YARNYet Another Resource Negotiator)。HDFS是Hadoop的存储子系统,而YARN可以被认为是Hadoop的进程调度子系统(图1.1)。

每个组件彼此独立,可以在自己的集群中运行;例如,HDFS集群和YARN集群可以独立运行。然而,当它们彼此位于一起时,这两个系统的组合被认为是一个Hadoop集群。

注释: 集群是一组系统的集合,它们共同执行诸如计算或处理功能之类的功能。集群中的单个服务器称为节点。

以某种方式与Hadoop交互或集成的任何其他项目,例如,数据摄取项目(如Flume或Sqoop)或数据分析工具(如Spark, Pig或Hive),都称为Hadoop“生态系统”项目。在许多方面,你可以考虑启动一个生态系统项目,尽管这可能是有争议的,因为Spark不需要Hadoop来运行。

图1.2描述了Hadoop生态系统景观。这绝不是一个全面的清单,还有许多其他的生态系统项目。实际上,生态系统实用程序跨越了许多其他类别,包括治理、管理、机器学习、搜索、工作流协调等等。生态系统随着新项目不断发展。后面将介绍关键的生态系统项目,包括Spark、Hive和许多其他项目。

图1.2 Hadoop生态组件

商业Hadoop景观

尽管Hadoop是一个开源项目,但有许多商业供应商提供商业发行版、支持、管理实用程序等。2008年,第一家商业供应商Cloudera由谷歌、雅虎的工程师组成。以及Facebook,还有甲骨文公司的执行官迈克·奥尔森,他曾是BerkleyDB(一个开源嵌入式数据库引擎)的创建者,Sleepycat Software的首席执行官。Cloudera随后发布了Hadoop的第一个商业发行版,称为CDH(Cloudera的Hadoop发行版)。

2009年,MAPR作为一家提供“Hadoop衍生”软件解决方案的公司成立,该软件解决方案实现了Hadoop文件系统(称为MAPRFS)的自定义改编,与Hadoop API兼容。2011年,HortonWorks从雅虎剥离。作为Hadoop供应商,提供一个名为HDP(HortonWorks数据平台)的发行版。

Cloudera、HortonWorks和Mapr被称为“纯粹的游戏”Hadoop供应商,因为他们的商业模式建立在Hadoop之上。许多其他供应商也会使用自己的发行版,如IBM、Pivotal和Teradata。然而,Hadoop不一定是他们的核心业务,不像纯粹的游戏供应商。

2014年底,由HortonWorks宣布了开放数据平台倡议(ODPI)。ODPI的形成是为了提供一套一致的、商业化的Hadoop核心和选定的生态系统组件。其他供应商,包括IBM、Teradata、SAS和Pivotal,加入了这个联盟,使他们能够利用ODPI代码库及其解决方案。

图1.3描绘了商业Hadoop景观。

图1.3 Hadoop商业景观

典型Hadoop用例

Hadoop本质上是一个线性可扩展的分布式文件系统和一个并行处理SDK(软件开发工具包),因此它的用途很多。然而,典型的大型Hadoop实现往往属于少数类别之一。其中包括以下内容:

  • 数据仓库、提取负载转换(ELT)、提取转换负载(ETL)卸载
  • 事件和复杂事件处理
  • 数据挖掘和机器学习(高级分析)

让我们用一些例子来看看每一个应用。

数据仓库卸载

对于Hadoop,数据仓库卸载,最常见的用法可能是将Hadoop用于长期存储以及执行预集成ETL例程的过程。Hadoop的低成本存储和分发处理功能比Teradata或Oracle Exadata等更高成本的专用MPP平台节省了大量成本。尽管专用的MPP数据仓库平台通常会为关系和报告工作负载提供更好的性能和查询响应能力,但Hadoop可以用于过时的历史数据,释放MPP平台上的容量,并推迟高成本硬件升级。

在Hadoop(或其他基于对象的存储)中存储非结构化、未处理的数据,然后将其转移或集成到数据仓库中或在数据集市中公开,也被认为是数据湖的实现。

事件处理

事件处理通常涉及到对流数据源(如传感器数据、消息数据或日志数据)的接收和处理。事件处理通常与物联网概念(物联网)相关,物联网概念涉及从数千个端点收集和处理数据,包括温度传感器、RFID、NFC扫描仪、闭路电视摄像机、信号系统等。Hadoop提供了低成本的存储来积累数百万条消息,并提供了一个计算平台来挖掘大量的消息来识别模式或特性。

使用Hadoop的事件处理通常涉及一个或多个专门的Hadoop生态系统平台或实用程序,包括Storm、Flume、Spark Streaming、Kafka或其他。

高级分析

高级分析(也称为数据科学)是识别数据模式并建立数学模型来表示这些模式的过程,可用于预测后续数据的结果。高级分析超越了传统的商业智能流程,后者主要用于描述性分析(描述或分析已经发生的事情),预测或抢占可能发生或可能发生的事情。一些特定的应用包括客户流失或损耗预测、倾向建模(潜在客户接受报价的可能性)、欺诈检测、图像或面部识别等。

高级分析包括数据挖掘、预测建模和机器学习的特定学科,这些学科通常是基于搜索、迭代、尝试和错误的问题解决方法。Hadoop在规模上支持这些递归方法。

实际上,这些用法可以(并且经常)结合在一起,Hadoop实现服务于所有三个目的是很常见的。

总结

Hadoop是迄今为止产量最高的大数据平台,现在已成为许多企业环境(企业预置型和云计算型)的公认组成部分。

Hadoop是以数据本地化(data locality)的概念为基础的,在这个概念中,进程被调度到要处理的数据所在的位置。这是将计算引入数据的概念。

Hadoop的另外两个组成部分是无共享和模式读取。无共享是指独立运行的任务,以便节点在关键处理阶段不需要共享状态或与其他节点同步。读模式指的是接受任何格式的数据的属性,只有在数据被处理时才进行描述,使得Hadoop成为一个无模式的平台,能够真正进行多结构的数据存储和处理。

Hadoop包括两个核心技术,HDF和Yarn。HDFS是存储子系统,yarn是过程调度子系统。其他专门与Hadoop集成或交互的项目或实用程序被认为是Hadoop Ecosysyem组件。这些项目包括Hive和Spark。

Hadoop是一个可扩展的、可编程的平台,具有多种用途。但是,最常见的用法是以下一个或多个类别:数据仓库卸载、事件处理、高级分析。

问与答

数据本地化一词指的是什么?

数据本地化是尽可能在本地处理数据的概念。这个概念是Hadoop的核心,Hadoop是一个平台,它有意通过对数据进行处理而不是反向处理来最小化通过网络传输的数据量。

Hadoop的核心组件是什么?它们各自的功能是什么?

hadoop核心由HDFS(hadoop分布式文件系统)、和YARN(Yet Another Resource Negotiatior)进程和资源调度子系统组成。每个核心组件可以独立运行,也可以作为一个或另一个的集群(例如,HDFS集群或sharn集群)运行,但是当它们组合在一起时,就被认为是Hadoop集群。

a.Hadoop

b.Oracle数据库中的表

c.NoSQL数据库,如Apache HBase

b.通常,关系数据库系统(如Oracle)中的表具有一个定义良好的模式,该模式是强制执行写操作的,有时称为写操作模式结构,而不是读操作模式结构

判断题:Hadoop生态系统由集成或设计用于与Hadoop交互的项目或实用程序组成。

Hadoop的典型用法包括以下哪种?

a.数据仓库卸载

b.复杂事件处理

c.机器学习

d.上述任何或全部

d.全部

翻译:赵老师

内容来源:《24小时自学Hadoop》

相关文章