Hadoop 系列教程

主要记录了 Hadoop 各个组件的基本原理,处理过程和关键的知识点

ps: 本文并不是第一次关于 hadoop,本篇内容更倾向于理论和基础知识。

  1. 后期会学习 spark,我想二者定有很多相似之处。就从这个入手。

  2. 本博客入门过一遍,也提供日后查阅。

Hadoop 拓展

大数据概述

90% 的世界数据是在过去的几年中产生的。

什么是大数据?

大数据意味着真正的大数据,它是大数据集的集合,不能使用传统的计算技术来处理。 大数据不仅仅是一个数据,它已经成为一个完整的主题,涉及各种工具,技术和框架。

大数据领域有什么?

大数据涉及由不同设备和应用程序产生的数据。下面是大数据领域的一些领域。

  • 黑匣子数据 :它是直升机,飞机和喷气机等的组件。它捕捉飞行机组的声音,麦克风和耳机的录音,以及飞机的性能信息。

  • 社会媒体数据 :Facebook和Twitter等社交媒体保存着全球数百万人发布的信息和观点。

  • 证券交易所数据 :证券交易所数据保存关于由客户在不同公司的份额上做出的“买入”和“卖出”决定的信息。

  • 电网数据 :电网数据保持特定节点相对于基站消耗的信息。

  • 运输数据 :运输数据包括车辆的型号,容量,距离和可用性。

  • 搜索引擎数据 :搜索引擎从不同的数据库检索大量数据。

因此,大数据包括大量,高速度和可扩展的数据。其中的数据将有三种类型。

  • 结构化数据 :关系数据。

  • 半结构化数据 :XML数据。

  • 非结构化数据 :Word,PDF,文本,媒体日志

大数据的优势

大数据对我们的生活及其作为现代世界最重要的技术之一的重要性至关重要。跟随是只有几个好处,这是我们所有人都知道的:

  • 使用诸如Facebook的社交网络中存储的信息,营销机构正在了解他们的活动,促销和其他广告媒体的响应。

  • 使用社交媒体中的信息,如喜好和产品对消费者的认知,产品公司和零售组织正在计划他们的生产。

  • 使用关于患者的以前的病史的数据,医院正在提供更好和快速的服务。

大数据技术

大数据技术在提供更准确的分析方面很重要,这可能导致更具体的决策,从而提高业务效率,降低成本,降低业务风险。 为了利用大数据的力量,您需要一个可以实时管理和处理大量结构化和非结构化数据的基础架构,并可以保护数据隐私和安全性。 市场上有来自包括亚马逊,IBM,微软等不同供应商的各种技术来处理大数据。在研究处理大数据的技术时,我们看看以下两类技术:

  • 操作大数据

这包括像MongoDB这样的系统,为实时,交互式工作负载提供操作功能,其中主要捕获和存储数据。 NoSQL大数据系统旨在利用在过去十年中出现的新云计算架构,以允许大量计算廉价高效地运行。这使得操作的大数据工作负载更容易管理,更便宜,更快地实现。 一些NoSQL系统可以基于具有最少编码的实时数据以及不需要数据科学家和附加基础设施的模式和趋势提供洞察。

  • 分析大数据

这包括像大规模并行处理(MPP)数据库系统和MapReduce提供对于可能触及的大部分或所有的数据的回顾性和复杂的分析的分析能力的系统。 MapReduce的提供分析数据的基础上的MapReduce可从单个服务器可以按比例放大至数千高端和低端机即由SQL提供的功能,并且一个系统的互补的新方法。 这两类技术是互补的,并经常一起部署。

Hadoop 大数据解决方案

传统方法

在这种方法中,企业将具有存储和处理大数据的计算机。这里的数据将存储在RDBMS如Oracle数据库,MS SQL Server或DB2和复杂的软件可以写入与数据库交互,处理所需的数据,并将其呈现给用户进行分析。

  • 局限性

这种方法在我们的标准数据库服务器可以容纳的数据量较少,或者正在处理数据的处理器的限制时运行良好。但是,当涉及到处理大量的数据时,通过传统的数据库服务器处理这样的数据真是一个单调乏味的任务。

谷歌的解决方案

Google 使用称为 MapReduce 的算法解决了这个问题。该算法将任务分成小部分,并将这些部分分配给通过网络连接的许多计算机,并收集结果以形成最终结果数据集。

Hadoop

Doug Cutting,Mike Cafarella和团队采用了Google提供的解决方案,并于2005年开始了一个名为HADOOP的开源项目,Doug在他儿子的玩具大象之后命名了它。

Hadoop使用MapReduce算法运行应用程序,其中数据在不同的CPU节点上并行处理。

总之,Hadoop框架足以开发能够在计算机集群上运行的应用程序,并且他们可以对大量数据执行完整的统计分析。

Hadoop 介绍

Hadoop是一个用Java编写的Apache开源框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集。 Hadoop框架工作的应用程序在跨计算机集群提供分布式存储和计算的环境中工作。

Hadoop旨在从单个服务器扩展到数千个机器,每个都提供本地计算和存储

Hadoop 架构

  • Hadoop Common: 这些是其他Hadoop模块所需的Java库和实用程序。这些库提供文件系统和操作系统级抽象,并包含启动Hadoop所需的Java文件和脚本。

  • Hadoop YARN: 这是一个用于作业调度和集群资源管理的框架。

  • Hadoop Distributed File System (HDFS™): 分布式文件系统,提供对应用程序数据的高吞吐量访问。

  • Hadoop MapReduce:这是基于YARN的用于并行处理大数据集的系统。

2017-12-05-hadoop_architecture.jpg

MapReduce

Hadoop MapReduce是一个软件框架,用于轻松编写应用程序,以可靠,容错的方式在大型集群(数千个节点)的商用硬件上并行处理大量数据。 术语MapReduce实际上指的是Hadoop程序执行的以下两个不同任务:

  • The Map Task: 术语MapReduce实际上指的是Hadoop程序执行的以下两个不同任务:

  • The Reduce Task: 此任务将map任务的输出作为输入,并将这些数据元组合并为较小的元组集合。 reduce任务总是在map任务之后执行。

通常输入和输出都存储在文件系统中。该框架负责调度任务,监视它们并重新执行失败的任务。

MapReduce框架由每个集群节点的单个主JobTracker和一个从属TaskTracker组成。

主机负责资源管理,跟踪资源消耗/可用性以及调度从机上的作业组件任务,监视它们并重新执行失败的任务。从属TaskTracker按主控器指示执行任务,并定期向主控器提供任务状态信息。

JobTracker 是 Hadoop MapReduce服务的单点故障,这意味着如果JobTracker关闭,所有正在运行的作业都将停止。

Hadoop 分布式文件系统

Hadoop 可以直接与任何可安装的分布式文件系统(如本地FS,HFTP FS,S3 FS等)一起工作,但 Hadoop 使用的最常见的文件系统是 Hadoop 分布式文件系统(HDFS)。

Hadoop分布式文件系统(HDFS)基于Google文件系统(GFS),并提供一个分布式文件系统,该系统设计为在大型集群(数千台计算机)上运行小型计算机机器以可靠,容错方式。

HDFS使用主/从架构,其中主节点由管理文件系统元数据的单个NameNode和存储实际数据的一个或多个从节点DataNode组成。

HDFS命名空间中的文件被拆分为几个块,这些块存储在一组 DataNode 中。 NameNode决定块到DataNode的映射。DataNodes负责与文件系统的读写操作。它们还根据NameNode给出的指令来处理块创建,删除和复制。

HDFS提供了一个类似任何其他文件系统的shell,并且有一个命令列表可用于与文件系统交互。这些shell命令将在单独的章节以及适当的示例中介绍。

Hadoop 如何工作?

  • 阶段 1

用户/应用程序可以通过指定以下项目来向Hadoop(hadoop作业客户端)提交作业以获取所需的进程: 分布式文件系统中输入和输出文件的位置。 java类以jar文件的形式包含map和reduce函数的实现。 通过设置作业的不同参数来配置作业。

  • 阶段 2

Hadoop作业客户端然后将作业(jar /可执行文件等)和配置提交给JobTracker,JobTracker然后承担将软件/配置分发给从属的责任,Hadoop作业客户端然后将作业(jar /可执行文件等)和配置提交给JobTracker,JobTracker然后承担将软件/配置分发给从属的责任,

  • 阶段 3

不同节点上的TaskTracker根据MapReduce实现执行任务,reduce函数的输出存储在文件系统上的输出文件中。

Hadoop的优势

Hadoop框架允许用户快速编写和测试分布式系统。

它是高效的,它自动分配数据和工作在整个机器,反过来,利用CPU核心的底层并行性。

Hadoop不依赖硬件来提供容错和高可用性(FTHA),相反Hadoop库本身设计用于检测和处理应用程序层的故障。

服务器可以动态添加或从集群中删除,Hadoop继续运行而不中断。

Hadoop的另一个大的优点是,除了开源之外,它在所有平台上兼容,因为它是基于Java的。