hadoop 概要

news/2025/1/9 14:49:15/文章来源:https://www.cnblogs.com/jhfnewstart/p/18662144

Hadoop 是一个开源的软件框架,支持分布式存储和处理大规模数据集。它的核心组件包括 Hadoop 分布式文件系统 (HDFS) 和 MapReduce 计算模型。HDFS 负责将数据分布式地存储在集群中,而 MapReduce 则用于分布式处理和计算这些数据。

Hadoop 原理和核心

  1. HDFS (Hadoop Distributed File System)

    • 将大文件分割成块,分布式存储在集群中的各个节点上。
    • 提供数据的容错能力,通过数据冗余的方式保证数据的高可用性。
  2. MapReduce

    • 一种编程模型,用于处理大规模数据集。
    • 包括两个主要步骤:Map 和 Reduce。
      • Map:将输入数据转换为键值对。
      • Reduce:对具有相同键的所有值进行合并和处理,得到最终结果。
  3. YARN (Yet Another Resource Negotiator)

    • 资源管理平台,负责任务调度和集群资源管理。

实际应用

假设我们要用 Hadoop 统计一组文本文件中每个单词出现的次数,这是 Hadoop 的经典案例之一:词频统计 (WordCount)。

Hadoop 应用中的 Java 代码示例

以下是一个简单的 WordCount 实例:

import java.io.IOException;
import java.util.StringTokenizer;import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;public class WordCount {public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {private final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(Object key, Text value, Context context) throws IOException, InterruptedException {StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()) {word.set(itr.nextToken());context.write(word, one);}}}public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {private IntWritable result = new IntWritable();public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable val : values) {sum += val.get();}result.set(sum);context.write(key, result);}}public static void main(String[] args) throws Exception {Configuration conf = new Configuration();Job job = Job.getInstance(conf, "word count");job.setJarByClass(WordCount.class);job.setMapperClass(TokenizerMapper.class);job.setCombinerClass(IntSumReducer.class);job.setReducerClass(IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));System.exit(job.waitForCompletion(true) ? 0 : 1);}
}

代码解释

  1. Mapper 类 (TokenizerMapper)

    • 继承自 Mapper 类,用于读取输入数据。
    • map 方法负责将每一行文本拆分成单词,并为每个单词输出一个键值对 (word, 1)
  2. Reducer 类 (IntSumReducer)

    • 继承自 Reducer 类,用于处理和合并来自 Mapper 的输出。
    • reduce 方法将接收到的同一单词的所有计数加起来并输出。
  3. Driver 部分 (main 方法)

    • 配置并提交作业,包括指定 Mapper、Reducer 类及输出的键值类型。
    • 通过 FileInputFormatFileOutputFormat 指定输入和输出路径。

通过这种方式,我们可以使用 Hadoop 分布式存储和处理大量文本文件的数据,同时充分利用集群的计算能力和存储资源。

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

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

相关文章

软件系统安全逆向分析-混淆对抗

在一般的软件中,我们逆向分析时候通常都不能直接看到软件的明文源代码,或多或少存在着混淆对抗的操作。下面,我会实践操作一个例子,从无从下手到攻破目标。1. 概述 在一般的软件中,我们逆向分析时候通常都不能直接看到软件的明文源代码,或多或少存在着混淆对抗的操作。下…

国际认可!天翼云合规领域影响力up!

近日,天翼云科技有限公司成功通过ISO 37301合规管理体系双认证(GB/T 35770-2022/ISO 37301:2021 & CTS GHMS001-2024),标志着公司合规管理和风险控制的管理水平达到国际领先标准,合规体系建设迈上了新台阶。近日,天翼云科技有限公司成功通过ISO 37301合规管理体系双认…

INTO TABLE @DATA内表与定义内表的区别

1、两者的区别 DATA定义的内表,会将内表中的字段作为关键组件。 而通过SELECT查询时用INTO TABLE @DATA产生的内表,没有对应的关键组件 两者的区别2、影响 因为新语法产生的内表没有关键组件,所以在LOOP或READ中不能使用DELETE TABLE tab FROM wa_tab.语句进行删除 运行下边…

从极端环境的应用中解析强固型工控机与工业工控机的差异性

一、强固型工控机:设计原理与应用 强固型工控机(Rugged Industrial PC)是专门为了在极端和恶劣环境中稳定运行而设计的电脑设备。这些环境通常包括高强度振动、极端温度、高湿度以及多粉尘等不利条件,为了应对这些挑战,强固型工控机在设计之初就充分考虑这些严苛的环境因素…

公司台式机安转后无网络

网络连接 2025年1月9日 安装台式机,没有网卡,插办工作下有四根网线,我这台在用其中一个,新电脑试了剩下的三条,都不行,今天萧师傅讲了方法,让我试一下,“线都试一下”,解决了来记录一下。先把水晶头插入电脑,看哪个电脑能识别(要等一下,正在识别也是一个球),多试…

VA35计划协议清单增强

1、需求说明 本文档在VA35计划协议清单中加入了VBEP-RRQQTY_BU和VBEP-CRQQTY_BU两个字段, 实现的效果如下:2、实现过程 2.1、调试过程 鉴于这就是个普通的查询展示报表,所以先对VA35的源代码做了断点调试,很容易就找到了要展示的表为POSTAB断点调试找到表内容发生变化的位置…

IBM Storage - 支持AI应用场景的数据存储软硬件解决方案

为了解决数据和工作负载在各地分散的现状,需要实现对存储在分布式文件和对象存储系统中的大量非结构化数据的高速访问。IBM Storage利用人工智能(AI)、机器学习(ML)和高级分析手段,对数据存储基础架构进行现代化改造。概述为了解决数据和工作负载在各地分散的现状,需要实现对…

2025年度最佳开源免费项目管理软件:8款精选工具解析【全方位大合集】

项目管理对于企业和团队的成功至关重要。无论是大型企业还是小型创业团队,都需要高效的项目管理工具来提升工作效率、优化资源分配和确保项目按时交付。今天,我们将为大家介绍8款开源免费的项目管理软件,帮助您在众多选择中找到最适合自己团队的工具。这8款工具分别是禅道、…

『玩转Streamlit』--集成定时任务

学习了Streamlit了之后,可以尝试给自己的命令行小工具加一个简单的界面。 本篇总结了我改造自己的数据采集的工具时的一些经验。 1. 概要 与常规的程序相比,数据采集任务的特点很明显,比如它一般都是I/O密集型程序,涉及大量网络请求或文件读写,耗费的时间比较长;而且往往…

VUE +WebSocket+speak-tt 实现在浏览器右下角实时给商家推送订单消息

先看效果 1、WebSocket服务建立1.1 引入包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency>1.2 新建配置类package com.ruoyi.web.core.config;import org.…

ASE65R180-ASEMI超洁MOS管ASE65R180

ASE65R180-ASEMI超洁MOS管ASE65R180编辑:ll ASE65R180-ASEMI超洁MOS管ASE65R180 型号:ASE100N10 品牌:ASEMI 封装:TO-220F 批号:最新 最大漏源电流:21A 漏源击穿电压:650V RDS(ON)Max:180mΩ 引脚数量:3 芯片个数: 沟道类型:P沟道MOS管、超洁MOS管 漏电流:ua 特性…

【搜索】DFS与BFS

99. 岛屿数量讲解:https://programmercarl.com/kamacoder/0099.岛屿的数量广搜.html#思路 DFS代码 #include <iostream> #include <cstring>using namespace std;const int N = 55;int n, m; int g[N][N]; bool st[N][N]; int dx[4] = {-1, 0, 1, 0}, dy[4] = {0,…