写点什么

大数据 -05-Hadoop 集群 集群 WordCount 超详细 真正的分布式计算 上传 HDFS MapReduce 计算 YRAN 查看任务 上传计算下载查看

作者:武子康
  • 2025-06-05
    山东
  • 本文字数:2815 字

    阅读完需:约 9 分钟

大数据-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看

PS:小知识点, yarn 应该写为: YARN,通常使用大写的 “YARN” 来指代 “Yet Another Resource Negotiator”

点一下关注吧!!!非常感谢!!持续更新!!!

🚀 AI 篇持续更新中!(长期更新)

目前 2025 年 06 月 05 日更新到:

**AI 炼丹日志-28 - Audiblez 将你的电子书 epub 转换为音频 mp3 做有声书**,持续打造实用 AI 工具指南!📐🤖


💻 Java 篇正式开启!(300 篇)

目前 2025 年 06 月 05 日更新到:

**Java-39 深入浅出 Spring - AOP 切面增强 核心概念 通知类型 XML+注解方式 附代码**

MyBatis 已完结,Spring 正在火热更新中,深入浅出助你打牢基础!


📊 大数据板块已完成多项干货更新(300 篇):

包括 Hadoop、Hive、Kafka、Flink、ClickHouse、Elasticsearch 等二十余项核心组件,覆盖离线+实时数仓全栈!

目前 2025 年 06 月 05 日更新到:

**大数据-278 Spark MLib - 基础介绍 机器学习算法 梯度提升树 GBDT 案例 详解**


👉 点个关注,不迷路!后续还将持续更新更多大模型+数据智能+工程实战内容,敬请期待!


章节内容

上一节完成:


  • Hadoop 分发

  • 单节点启动 NameNode 初始化 DataNode 启动

  • YRAN 启动 ResourceManager NodeManager

  • 集群启动 HDFS 启动 YRAN 集群启动

  • 各种启停相关的内容


本节内容较为简单,但是需要基于前面的内容!!!

背景介绍

这里是三台公网云服务器,每台 2C4G,搭建一个 Hadoop 的学习环境,供我学习。之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的 3 台机器,赶紧尝试在公网上搭建体验一下。


注意,如果你和我一样,打算用公网部署,那一定要做好防火墙策略,避免不必要的麻烦!!!请大家都以学习为目的,也请不要对我的服务进行嗅探或者攻击!!!


但是有一台公网服务器我还运行着别的服务,比如前几天发的:autodl-keeper 自己写的小工具,防止 AutoDL 机器过期的。还跑着别的 Web 服务,所以只能挤出一台 2C2G 的机器。那我的配置如下了:


  • 2C4G 编号 h121

  • 2C4G 编号 h122

  • 2C2G 编号 h123



请确保上一节内容全部完毕和跑通!!!

HDFS

设计原则

HDFS 的设计目标是能够处理千兆字节级别的大数据集,并确保数据的可靠性和高效性。主要设计原则包括:


  • 容错性:HDFS 的核心是确保数据在硬件故障情况下的安全。通过数据冗余复制机制,HDFS 将文件分为多个数据块(默认 64MB 或 128MB)并复制到不同的节点上。通常,一个数据块有 3 个副本,这样在一个或两个节点失效时仍能保证数据可用性。

  • 高吞吐量:HDFS 专注于吞吐量而非低延迟,因此它适合批量数据处理任务,而不是低延迟需求的实时应用。

  • 大文件的高效处理:HDFS 适合存储大文件,而不是小文件。小文件会产生大量元数据,对系统性能不利。

  • 流式数据访问:HDFS 以一次性读写为主要操作,通常不支持多次随机写入。因此,写入一次、读取多次的应用场景更适合 HDFS。

HDFS 的架构

HDFS 采用主从架构,分为两个主要组件:NameNode 和 DataNode。


  • NameNode:是 HDFS 的主节点,负责管理文件系统的命名空间和元数据。它维护文件系统的目录结构和数据块的位置,决定文件如何分块以及如何在集群中分布。NameNode 并不存储实际的数据,而是存储数据块的位置。

  • DataNode:是 HDFS 的从节点,负责存储实际的数据块。每个 DataNode 定期向 NameNode 汇报其存储的块信息,以保证 NameNode 的元数据是最新的。当客户端请求文件时,NameNode 会提供相关的 DataNode 位置,客户端直接与 DataNode 进行数据交互。

读写流程

HDFS 的读写流程简洁而高效:


  • 读文件:客户端向 NameNode 请求文件的位置信息,NameNode 提供该文件的数据块分布,客户端接着直接从对应的 DataNode 读取数据块。

  • 写文件:客户端向 NameNode 请求文件的创建。NameNode 在确认文件可以创建后,分配数据块并指示客户端写入到不同的 DataNode。每个数据块被写入后,DataNode 会将副本传递给其他指定的 DataNode,以实现副本冗余。

HDFS 的核心特性

  • 数据冗余:HDFS 通过多个副本存储数据块,确保数据安全。

  • 故障检测和自动恢复:如果 DataNode 出现故障,NameNode 会检测到并自动将数据重新分布到其他 DataNode。

  • 水平扩展:HDFS 可轻松扩展,添加新的 DataNode 即可增加存储容量。

  • 兼容性:HDFS 可运行在普通的商用硬件上,降低成本。

HDFS 的应用场景

HDFS 广泛应用于需要批处理和分析大规模数据的场景,例如:


  • 大数据分析:HDFS 为数据科学家提供海量数据存储,以便进行数据挖掘和分析。

  • 日志存储和分析:很多企业会使用 HDFS 来存储用户操作日志等数据,用于分析用户行为。

  • 备份和归档:HDFS 用于保存大数据量的备份和归档,以保证数据的长期存储。

创建文件夹

h121节点上进行操作:


hdfs dfs -mkdir -p /test/input
复制代码

上传文件

hdfs dfs -put /opt/wzk/test.txt /test/input
复制代码

下载文件

hdfs dfs -get /test/input/test.txt
复制代码


WordCount

创建文件夹

hdfs dfs -mkdir /wcinput
复制代码

创建文件

在本地创建一个文件


vim /opt/wzk/wordcount.txt
复制代码


写入如下的内容(当然你也可以是自己的内容)


Hadoop is an open-source framework that allows for the distributed processing of large data sets across clusters of computers using simple programming models.It is designed to scale up from single servers to thousands of machines, each offering local computation and storage.The Hadoop framework application works in an environment that provides distributed storage and computation across many computers.Hadoop is designed to scale up from single servers to thousands of machines, each offering local computation and storage.The Hadoop Distributed File System (HDFS) is the primary storage system used by Hadoop applications.HDFS stores large files (typically in the range of gigabytes to terabytes) across multiple machines.Hadoop’s HDFS is designed to store very large files, and it has many features that are designed to support the storage of large files.For example, HDFS splits files into large blocks and distributes them across machines in a cluster.The Hadoop framework transparently provides both reliability and data motion to applications.Hadoop implements a computational paradigm named MapReduce, where the application is divided into many small fragments of work, each of which may be executed or re-executed on any node in the cluster.
复制代码

上传文件

hdfs dfs -put /opt/wzk/wordcount.txt /wcinput
复制代码


观察文件情况



可以看到文件已经上传了


运行实例

cd /opt/servers/hadoop-2.9.2
复制代码


注意下面的指令,不要写错了:


hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar wordcount /wcinput /wcoutput
复制代码


此时运行之后,任务会被提交到给集群运行,需要耐心的等待一会儿。


查看结果

这里可以查看到此时的 HDFS 的结果:



我们点击查看 wcoutput文件夹的内容:


命令查看

hdfs dfs -cat /wcoutput/part-r-00000
复制代码


我们可以看到最终的计算结果,符合我们的预期:



发布于: 刚刚阅读数: 3
用户头像

武子康

关注

永远好奇 无限进步 2019-04-14 加入

Hi, I'm Zikang,好奇心驱动的探索者 | INTJ / INFJ 我热爱探索一切值得深究的事物。对技术、成长、效率、认知、人生有着持续的好奇心和行动力。 坚信「飞轮效应」,相信每一次微小的积累,终将带来深远的改变。

评论

发布
暂无评论
大数据-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看_大数据_武子康_InfoQ写作社区