Hadoop生态系统概览:从HDFS到Spark

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
简介: 【8月更文第28天】Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它由多个组件构成,旨在提供高可靠性、高可扩展性和成本效益的数据处理解决方案。本文将介绍Hadoop的核心组件,包括HDFS、MapReduce、YARN,并探讨它们如何与现代大数据处理工具如Spark集成。

引言

Hadoop是一个开源软件框架,用于分布式存储和处理大规模数据集。它由多个组件构成,旨在提供高可靠性、高可扩展性和成本效益的数据处理解决方案。本文将介绍Hadoop的核心组件,包括HDFS、MapReduce、YARN,并探讨它们如何与现代大数据处理工具如Spark集成。

Hadoop核心组件

  1. HDFS (Hadoop Distributed File System)

    • 简介:HDFS是Hadoop的核心存储层,用于存储海量数据。
    • 特点:高容错性、支持大文件存储、支持流式数据访问。
  2. MapReduce

    • 简介:MapReduce是一种编程模型,用于处理和生成大规模数据集。
    • 工作原理:数据处理任务被分为Map和Reduce两个阶段。
  3. YARN (Yet Another Resource Negotiator)

    • 简介:YARN是一个资源管理系统,负责调度和分配集群资源给不同的计算框架。
    • 优势:允许Hadoop集群运行多种计算框架。

HDFS详解

HDFS是一个分布式文件系统,专为存储大量数据而设计。它将文件分割成块,并将这些块分布在集群中的不同节点上。

HDFS架构

  • NameNode:负责管理文件系统的命名空间和客户端对文件的访问。
  • DataNode:存储实际的数据块。
  • Secondary NameNode:辅助NameNode,执行检查点操作,减少NameNode的重启时间。

HDFS命令行示例

# 查看HDFS中的文件
hdfs dfs -ls /

# 将本地文件上传到HDFS
hdfs dfs -put localfile.txt /user/hadoop/

# 从HDFS下载文件
hdfs dfs -get /user/hadoop/localfile.txt .

MapReduce详解

MapReduce是一种数据处理模型,它将数据处理任务分解为两个主要阶段:Map阶段和Reduce阶段。

MapReduce示例:统计文件中单词的数量

// Mapper类
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 {
   
        String[] words = value.toString().split("\\s+");
        for (String token : words) {
   
            word.set(token);
            context.write(word, one);
        }
    }
}

// Reducer类
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);
    }
}

提交作业

hadoop jar wordcount.jar WordCount /input /output

YARN

YARN是一个资源管理系统,它允许用户运行不同的计算框架(如MapReduce、Spark等),并有效地利用集群资源。

YARN架构

  • ResourceManager:集群中唯一的全局资源管理器。
  • NodeManager:每个节点上的代理,负责与ResourceManager通信。
  • ApplicationMaster:为每个应用程序启动一个,负责协调任务的执行。

Spark与Hadoop的集成

Spark是一个快速通用的大规模数据处理引擎,它可以与Hadoop生态系统无缝集成。

优势

  • 速度快:Spark通过内存计算加速迭代算法。
  • 易用性:支持多种编程语言(Scala、Java、Python)。
  • 丰富性:除了基本的数据处理外,还包括SQL查询、流处理等功能。

集成示例:使用Spark读取HDFS中的数据

from pyspark.sql import SparkSession

# 创建SparkSession
spark = SparkSession.builder \
    .appName("HadoopIntegration") \
    .getOrCreate()

# 读取HDFS中的CSV文件
df = spark.read.format("csv").option("header", "true").load("hdfs://namenode:9000/user/hadoop/data.csv")

# 显示数据帧的内容
df.show()

# 关闭SparkSession
spark.stop()

结论

Hadoop生态系统为大数据处理提供了一套完整的解决方案。HDFS为存储提供了强大的基础,MapReduce提供了一个有效的数据处理模型,而YARN则确保了资源的有效管理和利用。随着Spark等现代大数据处理工具的出现,Hadoop生态系统变得更加灵活和高效。通过本文的介绍,希望能够帮助读者更好地理解和利用Hadoop及其相关技术。

目录
相关文章
|
27天前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
114 6
|
28天前
|
SQL 分布式计算 监控
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
Hadoop-20 Flume 采集数据双写至本地+HDFS中 监控目录变化 3个Agent MemoryChannel Source对比
58 3
|
27天前
|
SQL 分布式计算 关系型数据库
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-24 Sqoop迁移 MySQL到Hive 与 Hive到MySQL SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
68 0
|
27天前
|
SQL 分布式计算 关系型数据库
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-23 Sqoop 数据MySQL到HDFS(部分) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
33 0
|
27天前
|
SQL 分布式计算 关系型数据库
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
Hadoop-22 Sqoop 数据MySQL到HDFS(全量) SQL生成数据 HDFS集群 Sqoop import jdbc ETL MapReduce
41 0
|
28天前
|
SQL 分布式计算 Hadoop
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
Hadoop-14-Hive HQL学习与测试 表连接查询 HDFS数据导入导出等操作 逻辑运算 函数查询 全表查询 WHERE GROUP BY ORDER BY(一)
28 4
|
28天前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
65 5
|
28天前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
33 4
|
28天前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
128 5
|
28天前
|
分布式计算 资源调度 Hadoop
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
Hadoop-10-HDFS集群 Java实现MapReduce WordCount计算 Hadoop序列化 编写Mapper和Reducer和Driver 附带POM 详细代码 图文等内容
78 3

相关实验场景

更多