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

目录

  • 前言
  • 一、 单机模式
  • 二、 伪分布式模式
  • 三、 完全分布式模式(重点)
    • 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.mzph.cn/news/718457.shtml

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

相关文章

RK3568 android11 调试陀螺仪模块 MPU6500

一&#xff0c;MPU6500功能介绍 1.简介 MPU6500是一款由TDK生产的运动/惯性传感器&#xff0c;属于惯性测量设备&#xff08;IMU&#xff09;的一种。MPU6500集成了3轴加速度计、3轴陀螺仪和一个板载数字运动处理器&#xff08;DMP&#xff09;&#xff0c;能够提供6轴的运动…

Matlab|基于Logistic函数负荷需求响应

目录 1 基于Logistic函数的负荷转移率模型 2 程序示例 3 效果图 4 下载链接 负荷需求响应模型种类较多&#xff0c;有电价型和激励型等类型&#xff0c;本次和大家分享一个基于Logistic函数的负荷转移率模型&#xff0c;该模型属于电价型&#xff0c;由于该方法使用的较少&a…

亿道信息发布两款升级款全加固笔记本电脑

2022年5月19日&#xff0c;加固手持终端。加固平板电脑、加固笔记本电脑专业设计商和制造商&#xff0c;以及加固型移动计算机软硬件整体定制解决方案提供商亿道信息&#xff0c;宣布对其两款广受欢迎的加固笔记本电脑产品EM-X14U和EM-X15U进行重大升级。新发布的两款升级款全加…

《TCP/IP详解 卷一》第10章 UDP 和 IP 分片

目录 10.1 引言 10.2 UDP 头部 10.3 UDP校验和 10.4 例子 10.5 UDP 和 IPv6 10.6 UDP-Lite 10.7 IP分片 10.7.1 例子&#xff1a;IPV4 UDP分片 10.7.2 重组超时 10.8 采用UDP的路径MTU发现 10.9 IP分片和ARP/ND之间的交互 10.10 最大UDP数据报长度 10.11 UDP服务器…

Docker将本地的镜像上传到私有仓库

使用register镜像创建私有仓库 [rootopenEuler-node1 ~]# docker run --restartalways -d -p 5000:5000 -v /opt/data/regostry:/var/lib/registry registry:2[rootopenEuler-node1 ~]# docker images REPOSITORY TAG IMAGE…

基于React低代码平台开发:构建高效、灵活的应用新范式

文章目录 一、React与低代码平台的结合优势二、基于React的低代码平台开发挑战三、基于React的低代码平台开发实践四、未来展望《低代码平台开发实践&#xff1a;基于React》编辑推荐内容简介作者简介目录前言为什么要写这本书 读者对象如何阅读本书 随着数字化转型的深入&…

内核中的Kconfig文件

Kconfig解析 编译内核时用于配置的Kconfig文件 以内核中的ttyprintk.c为例&#xff0c;其位于/kernel-sources/dirver/char/ttyprintk.c 如何将其编译进内核&#xff1f; 在char目录下有Kconfig文件&#xff0c;其中有如下内容 tristate 表示该模块可以选择 Y N M(以.ko形…

华为od机试C卷-最长表达式求值

1 题目描述 提取字符串中的最长合法简单数学表达式子串&#xff0c;字符串长度最长的&#xff0c;并计算表达式的值&#xff0c;如果没有返回0。简单数学表达式只能包含以下内容0-9 数字&#xff0c;符号* 说明: 1.所有数字&#xff0c;计算结果都不超过 long 2.如果有多个长…

递归实现n的k次方(C语言)

编写一个函数实现n的k次方&#xff0c;使用递归实现。 下面来说一下思路 5的3次方&#xff1a;就是5*(5的3-1次方) 7的4次方&#xff1a;就是7*&#xff08;7的4-1次方&#xff09; 以此类推 n的k次方就是&#xff1a;n* n的&#xff08;k-1&#xff09;次方 int Func(int n,…

HOOPS Communicator对3D大模型轻量化加载与渲染的4种解决方案

今天给大家介绍一些关于3D Web轻量化引擎HOOPS Commuicator的关键概念&#xff0c;这些概念可以帮您在HOOPS Communicator流缓存服务器之上更好地构建您自己的模型流服务器。如果您是有大型数据集&#xff0c;那么&#xff0c;使用流缓存服务器可以极大地帮助您最大限度地减少内…

Unity-PDF分割器(iTextSharp)

PDF分割器 Unity-PDF分割器前言核心思路解决过程一、Unity安装iTextSharp二、运行时计算将要生成文件的大小三、分割核心代码四、使用StandaloneFileBrowser五、其他的一些脚本六、游戏界面主体的构建MainWindowWarningPanel & FinishPanel By-Round Moon Unity-PDF分割器 …

基于主从模式的Reactor的仿muduo网络库

&#x1f307;个人主页&#xff1a;平凡的小苏 &#x1f4da;学习格言&#xff1a;命运给你一个低的起点&#xff0c;是想看你精彩的翻盘&#xff0c;而不是让你自甘堕落&#xff0c;脚下的路虽然难走&#xff0c;但我还能走&#xff0c;比起向阳而生&#xff0c;我更想尝试逆风…

【.NET Core】.NET中的流(Stream)

【.NET Core】.NET中的流&#xff08;Stream&#xff09; 文章目录 【.NET Core】.NET中的流&#xff08;Stream&#xff09;一、流&#xff08;Stream&#xff09;1.1 FileStream类1.2 IsolatedStorageFileStream类1.3 MemoryStream类1.4 BufferedStream类1.5 NetworkStream类…

谷歌浏览器打开,图片糊了

现象&#xff08;问题&#xff09;&#xff1a;早上开机&#xff0c;打开谷歌浏览器发现里面的所有图片相关的都糊了&#xff0c;离谱&#xff01; 查阅一番资料后发现&#xff1a; 谷歌浏览器的硬件加速模式被打开了 解决&#xff1a; 打开谷歌浏览器->设置->系统->…

【C++从练气到飞升】01---C++入门

&#x1f388;个人主页&#xff1a;库库的里昂 ✨收录专栏&#xff1a;C从练气到飞升 &#x1f389;鸟欲高飞先振翅&#xff0c;人求上进先读书。 目录 推荐 前言 什么是C C的发展史 &#x1f4cb;命名空间 命名空间定义 命名空间使用 命名空间的嵌套 std命名空间的使用 &#…

编译 qsqlmysql.dll QMYSQL driver not loaded

Qt 连接MySQL数据库&#xff0c;没有匹配的qsqlmysql.dll, 需要我们跟进自己Mysql 以及QT版本自行编译的。异常如下图&#xff1a; 安装环境为 VS2019 Qt5.12.12&#xff08;msvc2017_64、以及源码&#xff09; 我的安装地址&#xff1a;D:\Qt\Qt5.12.12 Mysql 8.1.0 默认安…

2023年下半年教师资格证考试《教育知识与能力》(中学)题

3.李老师在初二选择了人数、性别比例、学习成绩、教材各方面情况相同的两个班进行教学&#xff0c;对其中一班采用讲授法&#xff0c;对另一个班采用自学辅导法&#xff0c;经过一个阶段的教学后进行测验&#xff0c;以比较两种方法教学效果&#xff0c;李老师采用的方法属于&a…

基于yolov5的飞机蒙皮缺陷检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】

功能演示&#xff1a; 基于yolov5的飞机蒙皮缺陷检测系统&#xff0c;系统既能够实现图像检测&#xff0c;也可以进行视屏和摄像实时检测_哔哩哔哩_bilibili &#xff08;一&#xff09;简介 基于yolov5的飞机蒙皮缺陷检测系统是在pytorch框架下实现的&#xff0c;这是一个完…

js【详解】自动类型转换

运算符 Symbol 数字 会报错 Cannot convert a Symbol value to a number Symbol 字符串 会报错 Cannot convert a Symbol value to a string 存在对象&#xff0c;数组&#xff0c;函数时 对象&#xff0c;数组&#xff0c;函数会先执行其 toString() 方法&#xff0c;…

用CSS实现一个扇形

用CSS实现扇形的思路和三角形基本一致&#xff0c;就是多了一个圆角的样式&#xff0c;实现一个90的扇形&#xff1a; div{border: 100px solid transparent;width: 0;heigt: 0;border-radius: 100px;border-top-color: red; }