物联网架构之Hadoop

物联网架构之Hadoop

1.什么是大数据

    大数据是指无法在一定时间范围内用常规软件工具进行捕捉,管理和处理大量数据的集合,是需要新的处理模式才能具备更强的决策能力、洞察发现能力和流程优化能力的海量、高增长率和多样化的信息资产数据。
数据量大是大数据的显著特点如下:
    (1)数据体形巨大,已经达到 PB 甚至 EB级。
    (2)大数据的数据类型多样,以非结构化数据为主。
    (3)价值密度低。有价值的数据仅占到数据总量相当小的一部分。
    (4)产生和要求处理速度快。这也就要求
    技术人员拥有能够从各种各样类型的数据中快速获得有价值信息的能力。

2.hadoop的概述

    Hadoop 是开源软件,实现了一个分布式文件系统(Hadoop Distributed File System,HDFS),分布式系统是运行在多个主机上的软件系统。
HDFS具有以下几种特征:
    高容错性:能够自动保存数据的多个副本,并能自动将失败的任务重新分配。
    低成本:部署在低廉的通用硬件平台上组成集群。
    高扩展:提供热插拔的方式加入新的节点来向集群中扩展
    高效性:

3.Hadoop体系结构

(1)hadoop的核心构成

    HDFS和MapReduce是Hadoop的两大核心。通过HDFS实现对分布是底层支持,达到高速并行读写与大容量的存储扩展。通过MapReduce 实现对分布式并行任务处理程序支持,保证高速分析处理数据。HDFS 在 MapReduce 任务处理过程中提供了对文件操作和存储的支持,MapReduce 在 HDFS 的基础上实现了任务的分发、跟踪、执行等工作,并收集结果,二者相互作用,完成了 Hadoop 分布 式集群的主要任务。
    为什么MapReduce?对于大量数据的计算,通常采用的处理方法就是并行计算。这就要求能够将大型而复杂的计算问题分解为各个子任务,并分配到多个计算资源下同时进行计算,其显著特点是耗时小于单个计算资源下的计算。对多数开发人员来说,并行计算还是个陌生、复杂的东西,尤其是涉及到分布式的问题,将会更加棘手。MapReduce 就是一种实现了并行计算的编程型,它向用户提供接口,屏蔽了并行计算特别是分布式处理的诸多细节,让那些没有多少并行计算经验的开发人员也可以很方便的开发并行应用。     并行计算指的是多台服务器(分布式)同时工作,分块同时写入数据。     MapReduce 由两个概念合并而来:map(映射)和 reduce(归约)。map 负责把任务分解成多个任务,reduce 负责把分解后多任务的处理结果进行汇总。

4.MapReduce概述

    Hadoop 中,并行应用程序的开发是基于 MapReduce 编程模型的,基于它可以将任务分发到由上千台商用机器组成的集群上,实现 Hadoop 的并行任务处理功能。

5.. MapReduce 框架设计

    那么 MapReduce 程序是如何运行的呢?当编写完成 MapReduce 程序,并配置为一个 MapReduce 作业(Job)。这里的“作业”可以理解为:为了进行一次分布式计 算任务而编写 MapReduce 程序后,将该程序提交到 MapReduce 执行框架中并执行 的全过程。当客户端提交 Job 到 JobTracker 后。 从输入到最后输出经过如下五个阶段:
(1)input:由 JobTracker 创建该 Job,并根据 Job 的输入计算输入分片(Input Split)。这里要求待处理的数据集必须可以分解成许多小的数据集,且每一个小的数 据集都可以完全并行地进行处理。输入目录中文件的数量决定了分片的数量,如果对 于单个文件超过 HDFS 默认块大小(64MB),将按块大小进行分割。
(2)split:作业调度器获取 Job 的输入分片信息,对输入分片中的记录按照一定 规则解析成键值对,“键”(key)是每一行的起始位置,以字节为单位,“值”(value) 是本行文本内容。最后每个分片创建一个 MapTask 并分配到某个 TaskTracker。
(3)map:TaskTracker 开始执行 MapTask,处理输入的每一个键值对。如何处 理取决于在该阶段的程序代码,处理完成后产生新的键值对,保存在本地。
(4)shuffle:混洗。将 MapTask 的输出有效地作为 ReduceTask 的输入过程。 从图中可以看出该过程会在各 TaskTracker Node 之间进行数据交换,按照 key 进行 分组。
(5)reduce:读取 Shufflling 阶段的输出,开始执行 ReduceTask,处理输入的 每一个键值对。同样,如何处理取决于该阶段的程序代码。最后输出最终结果。 在 Hadoop 中,每个 MapReduce 计算任务都会被初始化为一个 Job。其中主要 有两个处理阶段:map 阶段和 reduce 阶段。两个阶段均以键值对
(1)yarn-env.sh:加入 JDK 路径。
(2)mapred-site.xml:指定 mapreduce.framework.name 为 yarn。
(3)yarn-site.xml:YARN 具体配置信息,详细
(1)MapReduce 框架接收用户提交的作业,并为其分配一个新的应用 ID,并将 应用的定义打包上传到 HDFS 上用户的应用缓存目录中,然后提交此应用给应用管理 器。
(2)应用管理器同调度器协商获取运行应用主体所需的第一个资源容器。
(3)应用管理器在获取的资源容器上执行应用主体。
(4)应用主体计算应用所需资源,并发送资源请求到调度器。
(5)调度器根据自身统计的可用资源状态和应用主体的资源请求,分配合适的资 源容器给应用主体。
(6)应用主体与所分配容器的节点管理器通信,提交作业情况和资源使用说明。
(7)节点管理器启用容器并运行任务。
(8)应用主体监控容器上任务的执行情况。
Hadoop 有单机模式、伪分布式和完全分布式三种运行方式:
    单机模式:无须配置,Hadoop 被视为一个非分布式模式运行的独立 Java 进程。
    伪分布式:只有一个节点的集群,这个节点既是 Master(主节点、主服务器)也是 Slave(从节点、从服务器),可在此单节点上以不同的 Java 进程模拟分布式中的各类节点。
    完全分布式:对于 Hadoop,不同的系统会有不同的节点划分方式。在 HDFS 看来分为 NameNode(管理者)和 DataNode(工作者),其中 NameNode 只有一个,DataNode 可有多个;在 MapReduce 看来节点又分为 JobTracker (作业调度者)和 TaskTracker(任务执行者),其中 JobTracker 只有一个, TaskTracker 可以有多个。NameNode 和 JobTracker 可以部署在不同的机器 上,也可以部署在同一机器上。部署 NameNode 和 JobTracker 的机器是 Master,其余的机器都是 Slave。
单机模式和伪分布式均不能体现云计算的优势,通常用于程序测试与调试。

猜你喜欢

转载自blog.csdn.net/qq_53195102/article/details/115624497