何为 Hadoop?

Hadoop 是一种基于 Java 的开源框架,可存储和处理大数据。数据存储在作为集群运行的廉价市售服务器中。其分布式文件系统可提供并行处理和容错能力。Hadoop 由 Doug Cutting 和 Michael J. Cafarella 共同开发而成,采用 MapReduce 编程模型,可快速从节点存储和检索数据。该框架由 Apache Software Foundation 管理并具备 Apache License 2.0 许可证。

多年来,应用服务器的处理能力一直在大幅攀升,但数据库由于其容量和速度有限,则被远远甩在了后面。然而如今,随着许多应用程序都在生成有待处理的大数据,Hadoop 将在推动数据库世界实施急需的变革方面发挥举足轻重的作用。

Ready For More? Download 何为 Hadoop? User Guide now.

View Now

Hadoop 也能为企业带来诸多的直接和间接利益。通过在廉价服务器(大多时候在云端,有时也在本地部署中)上使用开源技术,企业可以大大节省成本。

此外,凭借收集海量数据的能力以及通过处理此类数据获得的洞察,企业将可以在现实世界中作出更好的业务决策,例如专注于合适的消费者细分市场,剔除或修复错误流程,优化车间操作,提供具有相关性的搜索结果,执行预测性分析等等。

Hadoop 如何改善传统数据库

Hadoop 可解决传统数据库面临的两大关键挑战:

1. 容量:Hadoop 可存储大量数据。

借助 HDFS (Hadoop Distributed File System) 分布式文件系统,可将数据拆分成数据块并保存在市售服务器集群中。由于这些市售服务器都是采用简单的硬件配置构建而成,因此非常经济实惠,而且可以随着数据的增长轻松进行扩展。

2. 速度:Hadoop 可快速存储和检索数据。

Hadoop 利用 MapReduce 函数编程模型跨数据集执行并行处理。所以,当向数据库发送查询后,数据库并不会顺序处理数据,而是将任务拆分,并在许多分布式服务器上并行运行,最后再将所有任务输出整理在一起并发送回应用程序,如此便可大幅提升处理速度。

Hadoop 对大数据的 5 大利处

Hadoop 可谓是大数据和分析的救星。收集的关于人员、流程、对象、工具等的数据只有在以有意义的方式呈现时方才具有用处,并推动作出更好的决策。Hadoop 可帮助克服海量大数据带来的挑战:

  1. 高弹性:存储在任何节点的数据复制到集群的其他节点。这便保证了容错性。即使一个节点出现故障,集群中仍始终保留有可用的数据备份。
    .
  2. 高可扩展性:与数据存储有限的传统系统不同,Hadoop 在分布式环境中运行,具有很高的可扩展性。随着需求上升,您可以轻松扩展设置,加入更多的服务器,从而存储 PB 级的数据。
    .
  3. 低成本:由于 Hadoop 是一种开源框架,无需购买任何许可证,因此成本远远低于关系数据库系统。加上使用的都是廉价市售硬件,这就让这款解决方案更显经济实惠。
    .
  4. 高速度:Hadoop 的分布式文件系统、并行处理能力以及 MapReduce 模型可实现在数秒内运行复杂的查询。
    .
  5. 数据多样性:HDFS 可存储各种不同格式的数据,比如非结构化(如视频)、半结构化(如 XML 文件)和结构化数据。存储数据时,无需根据预定义模式进行验证,相反可以用任何格式转储。之后,在检索时,还可以根据需要对数据进行解析并调整为任何模式。如此便可通过相同数据灵活地获取不同的洞察。

Ready For More? Download 何为 Hadoop? User Guide now.

View Now

Hadoop 生态系统:核心组件

不仅仅是一款应用,更是一个搭载许多支持分布式数据存储和处理的必备组件的平台。这些组件共同构成了 Hadoop 生态系统。

其中一些是核心组件,它们形成了该框架的基础,而另外一些则是附加组件,用于为 Hadoop 生态系统添置附加功能。

Hadoop 的核心组件是:

HDFS:维护分布式文件系统

HDFS 是 Hadoop 的支柱,用于维护分布式文件系统。它使得跨多台服务器存储和复制数据成为可能。

HDFS 具有一个名字节点和数据节点。数据节点是实际存储数据的市售服务器。而名字节点则包含元数据以及有关在不同节点所存储之数据的信息。此应用仅与名字节点交互,名字节点视需要与数据节点通信。

YARN:Yet Another Resource Negotiator

YARN 是 Yet Another Resource Negotiator(另一种资源协调者)的简称,用于管理和调度资源,并确定每一数据节点应进行什么。这一管理所有处理请求的中央主节点称为资源管理器。资源管理器与节点管理器交互;每一从属数据节点都有其自己的节点管理器用以执行任务。

MapReduce

MapReduce 是一种编程模型,最初 Google 使用它来为其搜索操作编制索引。它是一种用于将数据拆分成较小数据集的逻辑,基于 Map() 和 Reduce() 这两类函数运行,能够快速高效地解析数据。

首先,映射函数并行对多个数据集进行分组、筛选和排序,以生成元组(键值对)。然后归约函数从这些元组中聚合数据,以生成所需的输出。

Hadoop 生态系统:附加组件

以下为 Hadoop 生态系统中广泛使用的一些附加组件。

Hive:数据仓库

Hive 是一个数据仓库系统,用于帮助查询 HDFS 中的大型数据集。在 Hive 出现之前,开发人员不得不创建复杂的 MapReduce 作业才能查询 Hadoop 数据。Hive 使用的是类似 SQL 语法的 HQL (Hive Query Language)。鉴于大多数开发人员都具有 SQL 背景知识,因此 Hive 更容易上手。

Hive 的优势是,使用 JDBC/ODBC 驱动程序作为应用程序和 HDFS 之间的接口。它将 Hadoop 文件系统暴露为表格,并将 HQL 转换为 MapReduce 作业,也可进行以上操作的反向操作。因此,开发人员和数据库管理员不仅可以批量处理大型数据集,还可以使用简单熟悉的查询来实现这一操作。Hive 最初由 Facebook 团队开发,现已是一项开源技术。

Pig:归约 MapReduce 函数

Pig 最初由 Yahoo! 开发,与 Hive 类似,可消除创建 MapReduce 函数来查询 HDFS 的必要。Pig 采用的语言(称作“Pig Latin”)与 SQL 很接近,这一点与 HQL 相似。“Pig Latin”是在 MapReduce 之上的一个高级数据流语言层。

Pig 还有一个与 HDFS 连接的运行时环境。用诸如 Java 或 Python 等语言编写脚本都可嵌入到 Pig 中。

Hive 与 Pig 比较

虽然 Pig 和 Hive 具有类似的功能,但当它们应用在不同场景时效果却大相径庭。

Pig 在数据准备阶段非常有用,因为它能够轻松执行复杂的连接和查询。而且,它还适合各种不同的数据格式,包括半结构化和非结构化数据。Pig Latin 虽然与 SQL 很接近,但其与 SQL 也存在很大不同,因此学习曲线也不同。

Hive 非常适合结构化数据,因此在数据仓库阶段更为有效,可用于集群的服务器端。

研发人员和程序人员通常在集群的客户端上使用 Pig,而数据分析师等商业智能用户则认为 Hive 是更合适的选择。

Flume:大数据摄取

Flume 是一款大数据摄取工具,提供多个数据源与 HDFS 之间的递送服务。它用于收集和聚合由社交媒体网站、IoT 应用程序和电子商务门户等应用生成的巨量流式数据(如日志文件、事件)并将其发送到 HDFS 之中。

Flume 功能丰富,包含以下特性:

  • 采用分布式架构。
  • 确保可靠数据传输。
  • 具有高容错性。
  • 可灵活分批或实时收集数据。
  • 可根据需要横向扩展,处理更多流量。

数据源与 Flume 代理通信:每一代理均有一个数据源、数据通道和数据汇聚点。数据源从发送方收集数据,数据通道临时存储数据,最后数据汇聚点将数据传输到接收方,即 Hadoop 服务器。

Sqoop:关系数据库数据摄取

Sqoop(“SQL,” 到 Hadoop)是另一种类似 Flume 的数据摄取工具。Flume 用于处理非结构化或半结构化数据,而 Sqoop 用于从关系数据库导出数据以及将数据导入关系数据库。由于大多数企业数据存储在关系数据库中,Sqoop 可用于将该等数据导入 Hadoop,以供分析师使用。

数据库管理员和开发人员可以使用简单的命令行接口导出和导入数据。Sqoop 可将这些命令转换为 MapReduce 格式,然后使用 YARN 将其发送至 HDFS。Sqoop 还具备高容错性,可以像 Flume 一样执行并行操作。

Zookeeper:分布式应用程序协调服务

Zookeeper 是一项用于协调分布式应用程序的服务。在 Hadoop 框架中,它充当管理工具,自带的集中注册表包含有关其所管理之分布式服务器集群的信息。其主要功能有:

  • 维护配置信息(配置数据的共享状态)
  • 命名服务(向各服务器分配名称)
  • 同步服务(处理死锁、争用条件和数据不一致)
  • 领导者选举(通过达成共识在服务器中间选举一个领导者)

Zookeeper 服务运行所在的服务器集群称作“整体(ensemble)”。整体在群组中选举一个领导者,剩余的服务器则作为追随者。来自客户端的所有写入操作都必须通过领导者路由,而读取操作可直接进入任何服务器。

Zookeeper 通过安全失败同步、原子性和消息序列化提供极高的可靠性和弹性。

Kafka:快速数据传输

Kafka 是一种分布式发布订阅消息系统,它通常与 Hadoop 搭配使用以加快数据传输速度。Kafka 集群包括一组服务器,该组服务器可充当生成者和使用者之间的中介。

在大数据环境中,比如,生成者可以是收集温度数据以转送回服务器的传感器。使用者为 Hadoop 服务器。生成者发布关于特定主题的消息,然后使用者通过侦听此主题拉取消息。

单个主题可进一步拆分成分区。所有带相同键的消息到达一个特定的分区。使用者可侦听一个或多个分区。

通过将消息按键分区储存并让使用者对应特定的分区,许多使用者可以同时侦听同一主题。由此一来,可对主题进行并行化,增加系统的吞吐量。Kafka 凭借其卓越的速度、可扩展性和稳健复制功能,被广泛采用。

HBase: Non-Relational Database

 

HBase:非关系型数据库

HBase 是一种面向列的非关系型数据库,在 HDFS 之上。HDFS 面临的一大挑战是它仅可以执行批量处理。即便对于较为简单的交互式查询,也仍需要执行批量处理,而这就会造成高延迟。

HBase 解决了这一问题。它支持以较低延迟查询大表上的单行,而方法就是在内部使用哈希表。它根据可帮助访问 Google File System (GFS) 的 Google BigTable 进行建模。

HBase 可扩展,可在一个节点发生故障时提供支持,并且可处理非结构化和半结构化数据。因此,它堪称是查询大数据存储以便开展分析的理想之选。

Ready For More? Download 何为 Hadoop? User Guide now.

View Now

Hadoop 面临的挑战

Hadoop 虽然被广泛视为大数据的关键推动者,但仍存在一些问题。这些问题源于其本身生态系统的复杂性,而且在执行 Hadoop 函数时需要掌握先进的技术知识。但是,利用适当的集成平台,您即可大大降低这种复杂性,从而轻松使用它来开展工作。

1. 陡峭学习曲线

要查询 Hadoop 文件系统,程序人员需要用 Java 语言编写 MapReduce 函数。这并不简单,并且会涉及到一个陡峭学习曲线。另外,生态系统中包含大量组件,单单熟悉这些组件就要花费大量时间。

2. 不同数据集需要不同的方法

在 Hadoop 中没有任何“万用”解决方案。上述讨论的大多数附属附加组件都是为了应对需要解决的某一问题而构建。

例如,Hive 和 Pig 便可以简化查询数据集的方式。此外,诸如 Flume 和 Sqoop 等数据摄取工具可帮助从多个源收集数据。除了这些之外还有数不胜数的其他组件,需具备一定经验方能作出最合适的选择。

3. MapReduce 的局限性

MapReduce 是一款非常出色的用于批处理大数据集的编程模型。但它自身存在一些局限性。

其文件密集型方法及多次读写并不适合实时交互式数据分析或迭代任务。对于此类操作,MapReduce 效率欠佳,并且会造成高延迟。(但此问题也有变通之法。Apache 就可以填补 MapReduce 的不足。)

4. 数据安全

随着大数据逐步走向云端,敏感数据被转储到 Hadoop 服务器中,令确保数据安全变得势在必行。这个庞大的生态系统包含大量的工具,因此我们必须确保每一种工具都具备正确的数据访问权限。我们需要进行适当的身份验证、身份生成、数据加密以及频繁的审核。Hadoop 能够解决这一问题,但需要用户具备一定的专业知识并小心翼翼地执行。

虽然很多科技巨头一直在使用我们此处讨论的 Hadoop 组件,这在业内仍是一个较新的趋势。大多数挑战根源于此,但只要拥有一款强大的大数据集成平台即可解决或缓解所有这些问题。

Hadoop 与 Apache Spark 比较

MapReduce 模型尽管拥有诸多优势,但并不适合交互式查询和实时数据处理,因为它在各处理阶段之间依赖于磁盘写入。

Spark 是一个数据处理引擎,可通过内存数据存储解决这一问题。虽然刚开始只是 Hadoop 的一个子项目,但它拥有自己的集群技术。

通常,Spark 在 HDFS 之上,可仅利用 Hadoop 的存储功能。就处理算法而言,它采用自己的工具库,支持 SQL 查询、流式处理、机器学习和图形。

其闪电般的速度加上功能丰富且简洁的 API 让处理大型数据集变得易如反掌,因此广受数据科学家们的青睐。

虽然 Spark 可能看起来优于 Hadoop,但二者可协同运作。视数据集的要求和类型,Hadoop 和 Spark 可相辅相成、相互补充。Spark 自身并无文件系统,因此需要依赖于 HDFS 或其他此类解决方案进行存储。

实际上,真正的可比之处在于 Spark 的处理逻辑和 MapReduce 模型。当 RAM 有限并需要通宵作业时,MapReduce 是不错的选择。但,如果要流式处理数据、访问机器学习库并实现快速实时的操作,那么 Spark 便是理想之选。

充满诸多可能的未来

仅仅十年,Hadoop 便在计算机行业掀起了巨大的变革。这是因为是它最终将数据分析变成了现实。从分析网站访客量到欺诈检测再到银行应用程序,其应用范围可谓多种多样、十分广泛。

利用 Talend Open Studio for Big Data,您可以轻松将您的 Hadoop 设置集成到任何数据架构当中。Talend 提供比其他任何数据管理解决方案更多的内置数据连接器,可帮助您在 Hadoop 与任何主流文件格式(CSV、XML、Excel 等)、数据库系统(Oracle、SQL Server、MySQL 等)、打包企业应用程序(SAP、SugarCRM 等),甚至诸如 Salesforce 和 Force.com 等云数据服务之间建立无缝数据流。

进一步了解 Talend 的大数据解决方案,或者立即下载 Talend Open Studio for Big Data,享受领先开源大数据工具带来的各种益处。

 

| Last Updated: January 23rd, 2019

Most Downloaded Resources

Browse our most popular resources - You can never just have one.