探索Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式

news2024/9/23 6:01:59

目录

  • 前言
  • 一、 单机模式
  • 二、 伪分布式模式
  • 三、 完全分布式模式(重点)
    • 3.1 准备工作
    • 3.2 配置集群
      • 3.2.1 配置core-site.xml 文件
      • 3.2.2 配置hdfs-site.xml 文件
      • 3.2.3 配置yarn-site.xml 文件
      • 3.2.4 配置mapred-site.xml 文件
    • 3.3 启动集群
      • 3.3.1 配置workers
      • 3.3.2 启动集群
      • 3.3.3 集群测试
  • 总结

前言

Hadoop作为一种强大的大数据处理框架,有多种运行模式,每种模式都适用于不同的使用场景。本文将介绍Hadoop的三种常见运行模式:单机模式、伪分布式模式和完全分布式模式。

一、 单机模式

单机模式是Hadoop最简单的运行模式。在单机模式下,所有Hadoop组件都运行在单个机器上,包括HDFS、MapReduce等。由于只有一个节点参与计算,单机模式适用于开发和测试阶段,不适用于处理大规模数据。在单机模式下,Hadoop的所有组件运行在同一进程中,能够快速展示整个处理流程,方便开发人员进行调试和验证。

我们这里就拿官方的WordCount做一个简单的演示:

  1. 在hadoop-3.2.4文件下面创建一个input文件夹
    [amo@hadoop102 hadoop-3.2.4]$ mkdir input
  2. 在input文件下创建一个word.txt文件
    [amo@hadoop102 hadoop-3.2.4]$ cd input
  3. 编辑word.txt文件
    [amo@hadoop102 hadoop-3.2.4]$ vim word.txt
  • 在文件中输入如下内容
hadoop hello
hdfs mapreduce yarn
amoxilin amoxilin
  • 保存退出::wq
  1. 回到Hadoop目录/opt/module/hadoop-3.2.4
  2. 执行程序
[amo@hadoop102 hadoop-3.2.4]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.4.jar wordcount input output
  1. 查看结果
[amo@hadoop102 hadoop-3.2.4]$ cat output/part-r-00000
看到如下结果:
amoxilin 2
hadoop  1
hello 1
hdfs 1
mapreduce 1
yarn  1

二、 伪分布式模式

伪分布式模式是Hadoop的中级运行模式。在伪分布式模式下,Hadoop的各个组件运行在单台计算机上,但每个组件都是独立运行的。这意味着可以模拟一个小规模的分布式环境,包括一个主节点Namenode和多个工作节点Datanode。伪分布式模式适用于在本地环境中进行开发和测试,并且能够模拟数据分片和分布式计算的过程,从而更真实地了解Hadoop的工作原理。

以下是配置 Hadoop 伪分布式模式的一般步骤:

  1. 安装 Hadoop:按照 Hadoop 的官方文档,下载并安装合适版本的 Hadoop。

  2. 配置 HDFS:编辑 Hadoop 配置文件 core-site.xml 和 hdfs-site.xml ,设置适当的配置参数。例如,指定本地文件系统作为 HDFS 的存储路径,并设置副本数。

  3. 配置 YARN:编辑 YARN 配置文件 yarn-site.xml ,设置适当的参数,如指定本地资源管理器地址和可用的计算资源。

  4. 设置环境变量:将 Hadoop 的 bin 目录路径添加到系统的 PATH 环境变量中。

  5. 配置 SSH:启用 SSH,并配置免密登录以设置 Hadoop 的分布式通信。

  6. 启动 Hadoop:运行启动脚本,启动 HDFS 和 YARN。可以通过浏览器访问相应的管理控制台,如 NameNode 页面、ResourceManager 页面等。

  7. 执行任务和作业:提交 MapReduce 任务或其他计算任务到 Hadoop 集群,并通过 Hadoop 提供的 API 或命令行工具进行操作。

需要注意的是,伪分布式模式仅适用于开发和测试目的,因为只有一个物理/虚拟机器负责运行所有的组件,所以它并不能提供真正的分布式性能和容错能力。

总之,Hadoop 伪分布式模式是用于在单台计算机上模拟分布式环境的配置方式,可用于本地开发、调试和验证大数据应用程序。这里只做简单的介绍,感兴趣的可以自己搭一下玩玩,重点是下面的完全分布式模式。


三、 完全分布式模式(重点)

完全分布式模式是Hadoop的最常用运行模式。在完全分布式模式下,Hadoop集群由多台计算机组成,每个节点扮演着不同的角色。集群中包含一个主节点Namenode和多个工作节点Datanode,每个节点负责存储和处理数据。完全分布式模式可以处理大规模的数据集,并且具有高可靠性和容错性。Hadoop集群通过分布式存储和计算的方式,实现了大规模数据的快速处理和分析。

3.1 准备工作

1) 准备三台服务器,安装并配置jdk和hadoop

2)集群部署规划

hadoop102hadoop103hadoop104
HDFSNameNode / DateNodeDataNodeSecondaryNameNode / DataNode
YARNNodeManagerResourceManager / NodeManagerNodeManager

注意:NameNode和SecondaryNameNode不要安装在同一台服务器,ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台机器上

3)配置文件说明
Hadoop配置文件分为两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

  • 配置文件:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml 四个配置文件存放在$HADOOP_HOME/etc/hadoop 这个路径下面,用户可以根据项目需求重新进行修改配置。

    • core-site.xml:这个文件包含了Hadoop核心配置的相关属性,比如文件系统的默认URI (fs.defaultFS)、临时文件目录 (hadoop.tmp.dir)等。

    • hdfs-site.xml:这个文件包含了HDFS(Hadoop分布式文件系统)的相关配置属性,比如副本数 (dfs.replication)、数据块大小 (dfs.blocksize)等。

    • mapred-site.xml:这个文件包含了MapReduce框架的相关配置属性,比如MapReduce作业历史服务器地址 (mapreduce.jobhistory.address)、任务并行度 (mapreduce.job.running.map.limit)等。在较新的Hadoop版本中,这个文件被废弃,相关配置已经移动到yarn-site.xml中。

    • yarn-site.xml:这个文件包含了YARN(Yet Another Resource Negotiator)的相关配置属性,比如NodeManager的内存限制 (yarn.nodemanager.resource.memory-mb)、ApplicationMaster的内存限制 (yarn.app.mapreduce.am.resource.mb)等。

3.2 配置集群

3.2.1 配置core-site.xml 文件

<configuration>
    <!-- 指定NameNode的地址-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
    </property>
    <!-- 指定Hadoop数据的存储目录-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.2.4/data</value>
    </property>
    <!-- 配置HDFS网页登录使用的静态用户为amo-->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>amo</value>
    </property>
</configuration>

3.2.2 配置hdfs-site.xml 文件

<configuration>
    <!-- nn web端访问地址 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
    <!-- 2nn web端访问地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
</configuration>

3.2.3 配置yarn-site.xml 文件

<configuration>
    <!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定ResourceManager的地址 -->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>
    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

3.2.4 配置mapred-site.xml 文件

<configuration>
    <!-- 指定MapReduce程序运行在Yarn上-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

配置完成之后,在集群上分发配置好的Hadoop配置文件,然后去hadoop103和hadoop104查看配置文件分发情况

3.3 启动集群

3.3.1 配置workers

vim /opt/module/hadoop-3.2.4/etc/hadoop/workers

hadoop102
hadoop103
hadoop104

注意:该文件添加的内容结尾不允许有空格,文件中不允许有空行
同步所有节点xsync /opt/module/hadoop-3.2.4/etc/hadoop/workers

前提是你已经为每个节点进行了hostname的命名。而且每个节点的hosts文件你修改了本地dns的指向,让这些主机指向约定好的IP。然后每个节点的hosts文件保持同步。

3.3.2 启动集群

# 格式化NameNode  如果集群是第一次启动,需要在hadoop102节点格式化NameNode
[amo@hadoop102 hadoop-3.2.4]$ hdfs namenode -format
# 启动hdfs
[amo@hadoop102 hadoop-3.2.4]$ sbin/start-dfs.sh
# 启动yarn 在配置了resourceManager的节点(hadoop103)启动yarn
[amo@hadoop102 hadoop-3.2.4]$ sbin/start-yarn.sh

(注意:格式化 NameNode,会产生新的集群id,导致 NameNode 和 DataNode 的集群id不一致,集群找不到以往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 NameNode 和 DataNode 进程,并且删除所有机器的data和logs目录,然后再进行格式化)

jps可以查看各个节点的配置是否和我们的集群规划避暑一致
在这里插入图片描述

Web端查看hdfs的NameNode

  • 浏览器中输入hadoop102:9870
  • 查看hdfs上的存储信息
    在这里插入图片描述

Web查看yarn的ResourceManager

  • 浏览器输入:hadoop103:8088
  • 查看yarn上运行的Job信息
    在这里插入图片描述

3.3.3 集群测试

  1. 上传文件到集群
[amo@hadoop102 hadoop-3.2.4]$ hadoop fs -mkdir /wcinput                # 创建文件夹 
[amo@hadoop102 hadoop-3.2.4]$ hadoop fs -put wcinput/word.txt /wcinput # 将word.txt文件上传到集群

上传成功之后,查看hdfs上的存储信息就可以看到文件上传到集群了,如下图所示:
在这里插入图片描述
想查看文件的具体内容,点击文件名称,再点 Tail the file (last 32K) 就可查看啦,当然左边的 Download 也是支持下载的。
在这里插入图片描述

那么,文件上传到集群了,这里只是做一个展示而已,并不是文件存储的位置,文件具体存储的位置是在hdfs里面
$HADOOP_HOME/data/dfs/data/current/BP-1831339301-192.168.1.4-1709219313284/current/finalized/subdir0/subdir0

在这里插入图片描述
这里的 $HADOOP_HOME 其实就是你hadoop在服务器安装的位置,然后可以通过cat 文件名查看文件内容和上面做一个对比,确认文件上传以及存储的位置是没问题就好了。

=== 到这里完全分布式模式就初步搭好了===


总结

总结起来,Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式,分别适用于不同的场景和需求。单机模式适用于开发和测试,伪分布式模式适用于模拟小规模分布式环境,而完全分布式模式则是处理大规模数据的最佳选择。根据具体的需求,选择合适的运行模式,可以充分发挥Hadoop的强大功能和性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1487248.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML+CSS:花式加载

效果演示 实现了一个动态加载文本效果&#xff0c;通过定义变量和应用动画效果来实现文本的动态展示。 Code <div class"container"><h1>loading...</h1> </div>:root {--text-color: orangered; /* 定义文本颜色变量为橙红色 */--inner-st…

[设计模式Java实现附plantuml源码~行为型]定义算法的框架——模板方法模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

RedisTemplate的坑人之处

使用long类型的值存入redis,用int类型无法取出 原因是因为代码中的key传递到内部进行序列化&#xff0c;不同类型的值序列化的结果不一样&#xff0c;就导致最终实际存入redis的key不一样 比如&#xff1a; int x1 假设序列化后是 1(int、Integer) long y1 就是 1(long,Long) …

吴恩达deeplearning.ai:学习曲线决定下一步怎么做

以下内容有任何不理解可以翻看我之前的博客哦&#xff1a;吴恩达deeplearning.ai专栏 学习曲线是一种图形表示方法&#xff0c;用于展示模型在训练过程中的学习表现&#xff0c;即模型的训练集和验证集上的性能如何随着训练时间的增加而变化。可以帮助我们了解模型的学习进度。…

【大厂AI课学习笔记NO.65】机器学习框架和深度学习框架

笔记思维脑图已上传&#xff0c;访问我的主页可下载。 https://download.csdn.net/download/giszz/88868909 广义上&#xff0c;机器学习框架包含了深度学习框架。 本质上&#xff0c;机器学习框架涵盖分类、回归、聚类、异常检测和数据准备等各种学习方法。 深度学习框架涵…

足球青训俱乐部|基于Springboot的足球青训俱乐部管理系统设计与实现(源码+数据库+文档)

足球青训俱乐部管理系统目录 目录 基于Springboot的足球青训俱乐部管理系统设计与实现 一、前言 二、系统设计 1、系统架构设计 三、系统功能设计 1、管理员登录界面 2、公告信息管理界面 3、学员管理界面 4、商品信息管理界面 5、课程安排管理界面 四、数据库设计…

【MATLAB源码-第155期】基于matlab的OFDM系统多径信道LS,LMMSE,SVD三种估计算法的比较误码率对比仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 OFDM&#xff08;Orthogonal Frequency Division Multiplexing&#xff0c;正交频分复用&#xff09;是一种高效的无线信号传输技术&#xff0c;广泛应用于现代通信系统&#xff0c;如Wi-Fi、LTE和5G。OFDM通过将宽带信道划分…

程序环境和预处理(2)

文章目录 3.2.7 命名约定 3.3 #undef3.4 命令行定义3.5 条件编译3.6 文件包含3.6.1 头文件被包含的方式3.6.2 嵌套文件包含 4. 其他预处理指令 3.2.7 命名约定 一般来讲函数和宏的使用语法很相似&#xff0c;所以语言本身没法帮我们区分二者&#xff0c;那我们平时的一个习惯是…

一篇文章了解和使用Map和Set(HashMap/TreeMap/HashSet/TreeSet)

[本节目标] *掌握HashMap/TreeMap/HashSet/TreeSet的使用 *掌握了解HashSet和HashSet背后的哈希原理和简单的实现 1. 搜索树 1.1 概念 二叉搜索树又称二叉排序树,它或者是一颗空树,或者是具有以下性质的二叉树: 1.若它的左子树不为空&#xff0c;则左子树上所有节点的值都…

微信小程序(四十九)拦截器处理登入失败情况

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.拦截器判断处理失败与成功的情况 2.使用拦截器拒绝失败的情况&#xff0c;使网络请求后面的逻辑步骤不会执行 源码&#xff1a; index.wxml <button type"primary" bind:tap"onSubmit"…

c#打印BarTend标签提示:具名数据源没有cuckoo*具名数据(解决)

c#打印BarTend标签提示&#xff1a;具名数据源没有cuckoo*具名数据&#xff08;解决&#xff09; 今天咕咕更新打印模板的时候遇到的问题&#xff0c;就是在模版中配置了字段名&#xff0c;但是启动c#应用&#xff0c;后端发送json数据打印的时候c#报错提示&#xff0c;没有在…

【硬件工程师面经整理16_电路设计篇】

文章目录 1 画一个1.8V转3.3V升压电路。2 用NMOS设计一个双向电平转换电路&#xff0c;及原理3 三分频电路的设计 1 画一个1.8V转3.3V升压电路。 升压&#xff1a;1.8V升3.3V升压芯片方案&#xff0c;如PW5100&#xff0c;固定输出3V、3.3V&#xff0c;输入电压范围0.7V-5V&am…

202209 青少年软件编程等级考试Scratch二级真题

第 1 题 【 单选题 】 数字&#xff1a;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;6&#xff0c;9&#xff0c;13&#xff0c;19&#xff0c;28&#xff0c;...的下一项是多少&#xff1f; A&#xff1a;37 B&#xff1a;39 C&#xff1a;41 D&#xff1a;47 …

【JavaEE】_第一个SpringBoot项目

目录 1. 第一个SpringBoot项目 1.1 创建项目 1.2 加载依赖 1.3 运行启动类 1.4 创建一个简单类试运行 2. 关于SpringBoot项目的目录结构 3. 关于修改文件名 4. 关于启动日志 5. 关于访问出错 5.1 404 5.1.2 URL输入错误 5.1.2 注解错误 5.2 500 5.3 无法访问此网…

C语言基础(五)——结构体与C++引用

七、结构体与C引用 7.1 结构体的定义、初始化、结构体数组 C 语言提供结构体来管理不同类型的数据组合。通过将不同类型的数据组合成一个整体&#xff0c;方便引用 例如&#xff0c;一名学生有学号、姓 名、性别、年龄、地址等属性&#xff0c;如果针对学生的学号、姓名、年龄…

EasyExcel3.1.1版本上传文件忽略列头大小写

1、背景 项目中使用easyExcel3.1.1版本实现上传下载功能&#xff0c;相关数据DTO以 ExcelProperty(value "dealer_gssn_id") 形式规定其每一列的名称&#xff0c;这样的话easyExcel会完全匹配对应的列名&#xff0c;即用户上传文件时&#xff0c;列名写成Dealer_…

【Linux取经路】文件系统——inode与软硬链接

文章目录 一、前言二、认识硬件——磁盘2.1 磁盘的存储构成2.2 磁盘的逻辑抽象 三、操作系统对磁盘的使用3.1 再来理解创建文件3.2 再来理解删除文件3.3 再来理解目录 四、硬链接五、软链接六、结语 一、前言 在之前的【Linux取经路】文件系统之被打开的文件——文件描述符的引…

【学习心得】响应数据加密的原理与逆向思路

一、什么是响应数据加密&#xff1f; 响应数据加密是常见的反爬手段的一种&#xff0c;它是指服务器返回的不是明文数据&#xff0c;而是加密后的数据。这种密文数据可以被JS解密进而渲染在浏览器中让人们看到。 它的原理和过程图如下&#xff1a; 二、响应数据加密的逆向思路 …

go并发模式之----使用时顺序模式

常见模式之二&#xff1a;使用时顺序模式 定义 顾名思义&#xff0c;起初goroutine不管是怎么个先后顺序&#xff0c;等到要使用的时候&#xff0c;需要按照一定的顺序来&#xff0c;也被称为未来使用模式 使用场景 每个goroutine函数都比较独立&#xff0c;不可通过参数循环…

Linux入门到入土

Linxu Linux 简介 Linux 内核最初只是由芬兰人林纳斯托瓦兹&#xff08;Linus Torvalds&#xff09;在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统&#xff0c;是一个基于 POSIX&#xff08;可移植操作系统接口&#xff09…