hadoop之MapReduse_01

本文介绍了计算框架、并行计算框架和分布式计算的概念,重点解析了Hadoop为何比传统方案快,主要归因于分布式存储和MapReduce思想。MapReduce通过‘分而治之’的方式,将大任务拆解为多个小任务并行处理,最后进行结果汇总,适合大规模离线数据处理。

什么是计算框架?

是指实现某项任务或某项工作从开始到结束的计算过程或流的结构。用于去解决或者处理某个复杂的计算问题。
在这里插入图片描述

什么是并行计算框架?

是指为更快的计算某项任务或某项工作,将计算程序分发到多台服务器上,使每个服务器计算总任务的一部分,多台服务器同时计算的框架。

即:一个大任务拆分为多个小任务,每个小任务同时执行。
在这里插入图片描述

什么是分布式计算?

分布式计算:是一种计算方法,是将该应用分解成许多小的部分,分配给多台计算机进行处理。这样可以节约整体计算时间,大大提高计算效率。

Hadoop为什么比传统计算方案快

  1. 核心原因一:使用分布式存储
  2. 核心原因二:使用分布式并行计算框架

理解MapReduce思想

需求:有一个五层的图书馆,需要获取图书馆中一共有多少本书。
只有一个人时,是能一本一本的数!工作量巨大,耗时较长。

分配五个人由你支配。此时你怎么支配?
五个人,每个人数一层的书量,最终将五个人的量汇总求和,就是图书馆中最终书的数量。

MapReduce的思想核心是 “分而治之,先分后合” 。即将一个大的、复杂的工作或任务,拆分成多个小的任务,并行处理,最终进行合并 。 适用于大量复杂的、时效性不高的任务处理场景(大规模离线数据处理场景) 。即使是发布过论文实现分布式计算的谷歌也只是实现了这种思想,而不是自己原创。

MapReduce由两部分组成,分别是Map 和Reduce两部分.

Map负责“分”,即把复杂的任务分解为若干个“简单的任务”来并行处理。可以进行拆分的前提是这些小任务可以并行计算,彼此间几乎没有依赖关系。例如前面例子中的分配每个人数一层楼。

Reduce负责“合”,即对map阶段的结果进行全局汇总。例如前面例子中将五个人的结果汇总。
这两个阶段合起来正是MapReduce思想的体现。

### Hadoop 环境变量的用途与配置方法 #### JAVA_HOME `JAVA_HOME` 是用于指定 Java 安装路径的关键环境变量。Hadoop 运行依赖于 Java,因此需要通过 `JAVA_HOME` 来告知 Hadoop 使用哪个版本的 JDK 或 JRE。通常情况下,在 Hadoop 的配置文件中会设置此变量以便程序能够找到所需的 Java 执行工具和库文件[^1]。 ```bash export JAVA_HOME=/opt/module/hadoop/jdk ``` #### HADOOP_COMMON_HOME 虽然官方文档并未强制要求定义 `HADOOP_COMMON_HOME` 变量,但在某些场景下它被用来指向 Hadoop Common 库所在的目录。这些库包含了支持其他模块的基础类和服务实现。如果未显式声明,则默认采用 `$HADOOP_HOME/share/hadoop/common` 路径作为其值。 #### HADOOP_HDFS_HOME 类似于上述提到的共同组件位置设定方式,`HADOOP_HDFS_HOME` 主要服务于分布式文件系统的特定需求部分。当存在多个子项目或者插件扩展时尤为有用;如果没有特别定制化安装结构的话,默认也是继承自根级别的主目录布局即 `$HADOOP_HOME`. #### HADOOP_CONF_DIR 为了便于管理和维护不同集群间的差异性参数调整工作,可以通过单独设立一个专门存放 XML 配置文件夹来统一管理所有的站点级别属性定义(如 core-site.xml, hdfs-site.xml)。此时就需要借助 `HADOOP_CONF_DIR` 明确指出实际使用的配置所在之处而非仅仅依靠内置猜测逻辑去寻找标准相对路径下的预设选项列表[^2]. ```bash export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop/ ``` #### CLASSPATH_PREPEND_DISTCACHE 这一项较少见于常规部署流程之中,主要用于控制是否应该优先加载远程缓存中的资源而不是本地副本。对于那些频繁更新作业所需素材而又希望减少同步延迟的应用场合来说可能具备一定价值。然而大多数时候保持为空即可满足基本操作需求无需额外干预。 #### HADOOP_YARN_HOME 和 HADOOP_MAPRED_HOME 这两个分别对应 YARN (Yet Another Resource Negotiator) 组件以及 MapReduce 计算框架各自的独立运行空间划分。尽管它们都归属于整个生态系统的一部分并共享许多公共资源池,但是各自又有独特的功能侧重方向所以有必要加以区分对待从而更好地组织内部关系网络图谱[^3]^. 总结起来就是: - **Yarn**: 处理任务调度分配等问题; - **Mapreduce**: 提供数据处理算法执行平台服务等功能特性集合体。 以下是两个典型例子展示如何正确地完成相应初始化过程: ```bash # 设置 YARN home export HADOOP_YARN_HOME=$HADOOP_HOME # 设置 MAPREDUCE home export HADOOP_MAPRED_HOME=$HADOOP_HOME ``` 最后值得注意的是除了以上列举出来的几个重要组成部分之外还有很多其他的辅助型角色同样发挥着不可或缺的作用比如 workers 文件里罗列的工作节点清单等等都需要按照实际情况合理规划安排才能构建起高效稳定的生产环境体系架构[^4][^5]. ```python def check_hadoop_env(): import os java_home = os.getenv('JAVA_HOME') hadoop_home = os.getenv('HADOOP_HOME') if not all([java_home, hadoop_home]): raise EnvironmentError("Environment variables are not set properly.") print(f"Java Home is {java_home}") print(f"Hadoop Home is {hadoop_home}") check_hadoop_env() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值