《离线和实时大数据开发实战》(三)Hadoop原理实战

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 《离线和实时大数据开发实战》(三)Hadoop原理实战

文章目录


前言

一、HDFS 和 MapReduce 优缺点分析

1.1 HDFS

1.2 MapReduce

二、HDFS 和 MapReduce 基本架构

三、MapReduce 内部原理实践

四、小结


前言


接着前两章 构建大数据开发知识体系图谱 和 大数据平台架构技术概览 ,本次继续分享邦中老师的《离线和实时大数据开发实战》读书笔记 。讲讲大数据开发的主战场 —— 离线数据开发。离线数据技术已经有了十多年的发展,已经 比较稳定,形成了 Hadoop、 MapReduce 和 Hive 为事实标准的离线数据处理技术,离线数据平台是整个数据平台的根本和基础,也是目前数据平台的主站场。

一、HDFS 和 MapReduce 优缺点分析


1.1 HDFS


HDFS 文全称是 Hadoop Distributed File System ,即 Hadoop 分布式文件系统,它是Hadoop 的核心子项目。实际上, Hadoop 中有一个综合性的文件系统抽象,它提供了文件系 现的各类接口,而 HDFS 只是这个抽象文件系统的一种实现,但 HDFS 是各种抽象接口实现中应用最为广泛和最广为人知的一个。


HDFS 是基于流式数据模式访问和处理超大文件的需求而开发的,其主要特点如下:



当然,HDFS 的上述种种特点非常适合于大数据量的批处理,但是对于一些特定问题不但没有优势, 而且有一定的局限性,主要表现在如下几个方面:


1.不适合低延迟数据访问


对于那些有低延时要求的应用程序, HBase 是一个更好的选择,尤其适用于对海量数据集进行访问并要求毫秒级响应时间的情况。


2.无法高效存储大量小文件


要想让 HDFS 处理好小文件,有不少方法。例如,利用 SequenceFile、MapFile、Har 等方式归档小文件。这个方法的原理就是把小文件归档起来管理, HBase 就是基于此的对于这种方法,如果想找回原来的小文件内容,就必须得知道与归档文件的映射关系。此外,也可以横向扩展,一个 NameNode不够,可以多 Master 设计,将NameNode 一个集群代替, Alibaba DFS 的设计,就是多 Master 设计,它把 Metadata 的映射存储和管理分开了,由多个 Metadata 存储节点和一个查询 Master 节点组成。


3.不支持多用户写入和随机文件修改


在 HDFS 的一个文件中只有一个写入者,而且写操作只能在文件末尾完成,即只能执行追加操作。


1.2 MapReduce


MapReduce 是 Google 公司的核心计算模型,它将运行于大规模集群上的复杂并行计算过程高度地抽象为两个函数: Map 和 Reduce。 Hadoop 中的 MapReduce 是一个使用简单的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并能可靠容错地并行处理 TB 级别的数据集。


MapReduce 目前非常流行,尤其在互联网公司中 MapReduce 之所以如此受欢迎,是因为它有如下的特点:



二、HDFS 和 MapReduce 基本架构


HDFS 和 MapReduce 是 Hadoop 的两大核心,它们的分工也非常明确, HDFS 负责分布式存储,而 MapReduce 负责分布式计算。


首先介绍 HDFS 的体系结构, HDFS 采用了主从( Master/Slave )的结构模型,一个HDFS 集群是由一个 NameNode 和若干个 DataNode 组成的,其中 NameNode 作为主服务器,管理文件系统的命名空间(即文件有几块,分别存储在哪个节点上等)和客户端对文件的访问操作;集群中的 DataNode 管理存储的数据。 HDFS 允许用户以文件的形式存储数据。


从内部来看,文件被分为若干数据块,而且这若干个数据块存放在一组 DataNode上。NameNode 执行文件系统的命名空间操作,比如打开、关闭、重命名文件或目录等,它也负责数据块到具体 DataNode 的映射 。DataNode 负责处理文件系统客户端的文件读写请求,并在 NameNode 的统一调度下进行数据块的创建、删除和复制工作。



NameNode 和 DataNode 都被设计成可以在普通商用计算机上运行,而且这些计算机通常运行的是 Linux操作系统 。HDFS 采用 Java 语言开发, 因此任何支持 Java 的机器都可以部署 NameNode 和 DataNode 。


一个典型的部署场景是集群中的一个机器运行一个NameNode 实例,其他机器分别运行一个 DataNode 实例。


MapReduce 也是采用 Master/Slave 的主从架构,其架构图如图:



MapReduce 包含4个组成部分,分别为 Client、 JobTracker、TaskTracker 和 Task。


三、MapReduce 内部原理实践


从上述 MapReduce 架构可以看出, MapReduce 作业执行主要由 JobTracker 和 Task-Tracker 负责完成。


客户端编写好的 MapReduce 程序井配置好的 MapReduce 作业是一个 Job, Job 被提交给 JobTracker ,JobTracker 会给该 Job 一个新的 ID 值,接着检查该 Job 指定的输出目录是否存在、输入文件是否存在, 如果不存在,则抛出错误。


同时, JobTracker 会根据输入文件计算输入分片 ( input split ),这些都检查通过后, JobTracker 就会配置 Job 需要的资源并分配资源,然后 JobTracker 就会初始化作业,也就是将 Job 放入一个内部的队列,让配置好的作业调度器能调度到这个作业,作业调度器会初始化这个 Job ,初始化就是创建一个正在运行的 Job 对象(封装任务和记录信息),以便 JobTracker 跟踪 Job 的状态和进程。


Job 被作业调度器调度时,作业调度器会获取输入分片信息,每个分片创建一个 Map 任务,并根据 TaskTracker 的忙闲情况和空闲资源等分配 Map 任务和 Reduce 任务到 TaskTraker ,同时通过心跳机制也可以监控到 TaskTracker 的状态和进度 ,也能计算出整个Job 的状态和进度。


当JobTracker 获得了最后一个完成指定任务的 TaskTracker 操作成功的通知时候, Jo Tracker 会把整个 Job 状态置为成功,然后当查询 Job 运行状态时(注意:这个是异步操作),客户端会查到 Job 完成的通知 。


如果 Job 中途失败, MapReduce 会有相应的机制处理 。一般而言,如果不是程序员程序本身有 bug ,MapReduce 错误处理机制都能保证提交的 Job 能正常完成。


那么, MapReduce 到底是如何运行的呢?


我们按照时间顺序, MapReduce 任务执行包括:


输入分片 Map 、Shuffle 和 Reduce 等阶段,一个阶段的输出正好是下一阶段的输入。



上图从整体角度很好地表示了 MapReduce 的大致阶段划分和概貌。



而具体各阶段的作用,可参考如下:



四、小结


这一章节,主要还是从数据处理角度集中介绍了 Hadoop 的相关知识。Hadoop 的 HDFS 和 MapReduce 是离线数据处理的底层技术,实际开发中大家还是很少通过编写 MapReduce 程序来处理大数据,相反大家主要用基 MapReduce 的高级别抽象 Hive ,效率更高,而且更容易使用。这也是下面会重点和大家讲的离线数据处理中的主要技术—— Hive。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
4月前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
307 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
14天前
|
机器学习/深度学习 数据采集 分布式计算
大数据分析中的机器学习基础:从原理到实践
大数据分析中的机器学习基础:从原理到实践
56 3
|
13天前
|
存储 分布式计算 大数据
基于阿里云大数据平台的实时数据湖构建与数据分析实战
在大数据时代,数据湖作为集中存储和处理海量数据的架构,成为企业数据管理的核心。阿里云提供包括MaxCompute、DataWorks、E-MapReduce等在内的完整大数据平台,支持从数据采集、存储、处理到分析的全流程。本文通过电商平台案例,展示如何基于阿里云构建实时数据湖,实现数据价值挖掘。平台优势包括全托管服务、高扩展性、丰富的生态集成和强大的数据分析工具。
|
3月前
|
存储 分布式计算 大数据
Flume+Hadoop:打造你的大数据处理流水线
本文介绍了如何使用Apache Flume采集日志数据并上传至Hadoop分布式文件系统(HDFS)。Flume是一个高可用、可靠的分布式系统,适用于大规模日志数据的采集和传输。文章详细描述了Flume的安装、配置及启动过程,并通过具体示例展示了如何将本地日志数据实时传输到HDFS中。同时,还提供了验证步骤,确保数据成功上传。最后,补充说明了使用文件模式作为channel以避免数据丢失的方法。
121 4
|
4月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
256 2
|
4月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
228 1
|
5月前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
149 1
|
4月前
|
并行计算 数据挖掘 大数据
Python数据分析实战:利用Pandas处理大数据集
Python数据分析实战:利用Pandas处理大数据集
|
5月前
|
Oracle 大数据 数据挖掘
企业内训|大数据产品运营实战培训-某电信运营商大数据产品研发中心
本课程是TsingtaoAI专为某电信运营商的大数据产品研发中心的产品支撑组设计,旨在深入探讨大数据在电信运营商领域的应用与运营策略。通过密集的培训,从数据的本质与价值出发,系统解析大数据工具和技术的最新进展,深入剖析行业内外的实践案例。课程涵盖如何理解和评估数据、如何有效运用大数据技术、以及如何在不同业务场景中实现数据的价值转化。
100 0
|
5月前
|
SQL 分布式计算 大数据
大数据平台的毕业设计01:Hadoop与离线分析
大数据平台的毕业设计01:Hadoop与离线分析
279 0