当前位置: 首页 > article >正文

Hadoop/Spark 生态

Hadoop/Spark 生态是大数据处理的核心技术体系,专为解决海量数据的存储、计算和分析问题而设计。以下从底层原理到核心组件详细讲解,帮助你快速建立知识框架!


一、为什么需要 Hadoop/Spark?

  1. 传统单机瓶颈
    • 数据量超过单机存储极限(如PB级数据)
    • 计算任务无法在合理时间内完成(如TB级日志分析)
  2. 核心解决思路
    • 分布式存储:数据拆分到多台机器存储(如HDFS)
    • 分布式计算:任务拆分到多台机器并行处理(如MapReduce/Spark)

二、Hadoop 生态详解

1. ​Hadoop 三大核心组件
组件作用类比解释
HDFS分布式文件系统,存储海量数据类似Google的GFS,数据切块存储
MapReduce分布式计算框架(批处理)分而治之:Map阶段拆分任务,Reduce阶段汇总结果
YARN资源调度管理器,协调集群资源分配类似操作系统的任务调度器
2. ​Hadoop 生态扩展工具
工具用途
Hive用SQL语法操作Hadoop数据(数据仓库工具)
HBase分布式NoSQL数据库(实时读写海量数据)
ZooKeeper分布式协调服务(管理集群节点状态)
Sqoop在Hadoop和关系数据库之间转移数据
3. ​Hadoop 工作流程示例
1. 数据存储:将1TB日志文件存入HDFS → 自动拆分为128MB的块存储在不同机器
2. 计算处理:- Map阶段:多台机器并行统计每条日志的关键词- Shuffle阶段:按关键词分组- Reduce阶段:汇总每个关键词的总出现次数
3. 结果输出:生成关键词频率统计报告

三、Spark 生态详解

1. ​Spark 核心优势
  • 速度比Hadoop快100倍:基于内存计算(Hadoop基于磁盘)
  • 一站式解决方案:支持批处理、流处理、机器学习、图计算
  • API友好:支持Java/Scala/Python/R多种语言
2. ​Spark 核心模块
模块功能
Spark Core底层执行引擎(任务调度、内存管理)
Spark SQL用SQL或DataFrame API处理结构化数据
Spark Streaming实时流数据处理(微批处理模式)
MLlib机器学习库(分类、聚类、推荐算法)
GraphX图计算库(社交网络分析、路径规划)
3. ​Spark vs Hadoop 对比
特性Hadoop MapReduceSpark
计算速度慢(基于磁盘)快(基于内存)
适用场景离线批处理迭代计算、实时流处理
API易用性需手动编写Map/Reduce函数高阶API(DataFrame/SQL)
资源管理依赖YARN自带集群管理器或YARN

四、Hadoop + Spark 整合架构

          [HDFS] 分布式存储↑↓[YARN] 资源管理↑↓
[Spark] ←→ [Hive] ←→ [HBase] ←→ [其他工具]
  • 典型工作流
    1. 用HDFS存储原始数据
    2. 用Spark SQL处理数据(替代Hive的MapReduce)
    3. 用MLlib训练机器学习模型
    4. 结果存回HBase或HDFS

五、应用场景

  1. Hadoop 典型场景
    • 海量日志离线分析(如电商用户行为分析)
    • 历史数据归档存储(如银行交易记录)
  2. Spark 典型场景
    • 实时推荐系统(如抖音视频推荐)
    • 金融风控实时计算(如欺诈交易检测)
    • 大规模机器学习(如广告点击率预测)

六、学习路径建议

  1. 先掌握核心思想
    • 理解分布式存储(HDFS)和计算(MapReduce/Spark)原理
  2. 动手实践
    • 本地安装Hadoop单机版(或使用Docker镜像)
    • 尝试用Spark DataFrame处理CSV文件(类似Pandas语法)
  3. 逐步深入
    基础 → Hadoop HDFS命令 → MapReduce WordCount示例 → Spark WordCount
    进阶 → Hive SQL查询 → Spark Streaming实时计数 → MLlib聚类分析

相关文章:

Hadoop/Spark 生态

Hadoop/Spark 生态是大数据处理的核心技术体系,专为解决海量数据的存储、计算和分析问题而设计。以下从底层原理到核心组件详细讲解,帮助你快速建立知识框架! 一、为什么需要 Hadoop/Spark? ​传统单机瓶颈: 数据量超…...

.global

.global关键字用来让一个符号对链接器可见,可以供其他链接对象模块使用。 global是告诉编译器,其后是全局可见的名字【变量或函数名】。 .global start 让start符号成为可见的标示符,这样链接器就知道跳转到程序中的什么地方并开始执行。li…...

八股总结(Java)实时更新!

八股总结(java) ArrayList和LinkedList有什么区别 ArrayList底层是动态数组,LinkedList底层是双向链表;前者利于随机访问,后者利于头尾插入;前者内存连续分配,后者通过指针连接多块不连续的内存…...

@emotion/css + react+动态主题切换

1.下载插件 npm install --save emotion/css 2.创建ThemeContext.tsx // src/ThemeContext.tsx import React, { createContext, useContext, useState } from "react";// 定义主题类型 export type Theme "light" | "dark";// 定义主题上下…...

Python Cookbook-4.16 用字典分派方法和函数

任务 需要根据某个控制变量的值执行不同的代码片段——在其他的语言中你可能会使用case 语句。 解决方案 归功于面向对象编程的优雅的分派概念,case语句的使用大多(但不是所有)都可以被替换成其他分派形式。在Python中,字典及函数是一等(first-class)…...

亚马逊玩具品类技术驱动型选品策略:从趋势洞察到合规基建

一、全球玩具电商技术演进趋势 (技术化重构原市场背景) 数据可视化分析:通过亚马逊SP-API抓取2023年玩具品类GMV分布热力图 监管技术升级: 美国CPSC启用AI质检系统(缺陷识别准确率92.7%) 欧盟EPR合规接口…...

【jQuery】插件

目录 一、 jQuery插件 1. 瀑布流插件: jQuery 之家 http://www.htmleaf.com/ 2. 图片懒加载: jQuery 插件库 http://www.jq22.com/ 3. 全屏滚动 总结不易~ 本章节对我有很大收获,希望对你也是~~~ 一、 jQuery插件 jQuery 功能…...

MATLAB导入Excel数据

假如Excel中存在三列数据需要导入Matlab中。 保证该Excel文件与Matlab程序在同一目录下。 function [time, voltage, current] test(filename)% 读取Excel文件并提取时间、电压、电流数据% 输入参数:% filename: Excel文件名(需包含路径,如C:\data\…...

主流软件工程模型全景剖析

一、瀑布模型 阶段划分 需求分析:与用户深入沟通,全面了解软件的功能、性能、可靠性等要求,形成详细的需求规格说明书。设计阶段:包括总体设计和详细设计。总体设计确定软件的体系结构,如模块划分、模块之间的接口等&…...

python和Java的区别

Python和Java是两种流行的编程语言,它们之间有一些重要的区别: 语法:Python是一种动态类型的脚本语言,语法简洁明了,通常使用缩进来表示代码块。Java是一种静态类型的编程语言,语法更为严格,需要…...

孤码长征:破译PCL自定义点云注册机制源码迷局——踩坑实录与架构解构

在之前一个博客《一文搞懂PCL中自定义点云类型的构建与函数使用》中,清晰地介绍了在PCL中点云的定义与注册方法。我的一个读者很好奇其内部注册的原理以及机制,再加上最近工作中跟猛男开发自定义点云存储的工作,借着这些需求,我也…...

【SQL】MySQL基础2——视图,存储过程,游标,约束,触发器

文章目录 1. 视图2. 存储过程2.1 创建存储过程2.2 执行存储过程 3. 游标4. 约束4.1 主键约束4.2 外键约束4.3 唯一约束4.4 检查约束 5. 触发器 1. 视图 视图是虚拟的表,它是动态检索的部分。使用视图的原因:避免重复的SQL语句;使用表的部分而…...

Centos 7 搭建 jumpserver 堡垒机

jumpserver 的介绍 1、JumpServer 是完全开源的堡垒机, 使用 GNU GPL v2.0 开源协议, 是符合4A 的专业运维审计系统 1)身份验证 / Authentication 2)授权控制 / Authorization 3)账号管理 / Accounting 4)安全审计 / Auditing 2、JumpServer 使用 Python / Django 进行开…...

封装了一个优雅的iOS全屏侧滑返回工具

思路 添加一个全屏返回手势,UIPangesturerecognizer, 1 手势开始 在手势开始响应的时候,将navigationController的delegate代理设置为工具类,在工具类中执行代理方法,- (nullable id )navigationController:(UINavigationControll…...

HCIP-6 DHCP

HCIP-6 DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 手工配置网络参数存在的问题 灵活性差 容易出错 IP地址资源利用率低 工作量大 人员素质要求高 DHCP服务器按照如下次序为客户端选择IP地址: ①DHCP服务器的数…...

OpenCV图像拼接(8)用于实现并查集(也称为不相交集合)数据结构类cv::detail::DisjointSets

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::detail::DisjointSets 类是OpenCV库中用于实现不相交集合(也称为并查集)数据结构的类。该数据结构常用于处理动态连接…...

opencv图像处理之指纹验证

一、简介 在当今数字化时代,生物识别技术作为一种安全、便捷的身份验证方式,正广泛应用于各个领域。指纹识别作为生物识别技术中的佼佼者,因其独特性和稳定性,成为了众多应用场景的首选。今天,我们就来深入探讨如何利…...

记一道CTF题—PHP双MD5加密+”SALT“弱碰撞绕过

通过分析源代码并找到绕过限制的方法&#xff0c;从而获取到flag&#xff01; 部分源码&#xff1a; <?php $name_POST[username]; $passencode(_POST[password]); $admin_user "admin"; $admin_pw get_hash("0e260265122865008095838959784793");…...

Text2SQL推理类大模型本地部署的解决方案

大家好,我是herosunly。985院校硕士毕业,现担任算法工程师一职,获得CSDN博客之星第一名,热衷于大模型算法的研究与应用。曾担任百度千帆大模型比赛、BPAA算法大赛评委,编写微软OpenAI考试认证指导手册。曾获得多项AI顶级比赛的Top名次,其中包括阿里云、科大讯飞比赛第一名…...

机器学习的一百个概念(3)上采样

前言 本文隶属于专栏《机器学习的一百个概念》&#xff0c;该专栏为笔者原创&#xff0c;引用请注明来源&#xff0c;不足和错误之处请在评论区帮忙指出&#xff0c;谢谢&#xff01; 本专栏目录结构和参考文献请见[《机器学习的一百个概念》 ima 知识库 知识库广场搜索&…...

Electron应用生命周期全解析:从启动到退出的精准掌控

一、Electron生命周期的核心特征 1.1 双进程架构的生命周期差异 Electron应用的生命周期管理具有明显的双进程特征&#xff1a; 主进程生命周期&#xff1a;贯穿应用启动到退出的完整周期渲染进程生命周期&#xff1a;与浏览器标签页相似但具备扩展能力进程间联动周期&#…...

AI渗透测试:网络安全的“黑魔法”还是“白魔法”?

引言&#xff1a;AI渗透测试&#xff0c;安全圈的“新魔法师” 想象一下&#xff0c;你是个网络安全新手&#xff0c;手里攥着一堆工具&#xff0c;正准备硬着头皮上阵。这时&#xff0c;AI蹦出来&#xff0c;拍着胸脯说&#xff1a;“别慌&#xff0c;我3秒扫完漏洞&#xff0…...

分秒计数器设计

一、在VsCode中写代码 目录 一、在VsCode中写代码 二、在Quartus中创建工程与仿真 1、建立工程项目文件md_counter 2、打开项目文件&#xff0c;创建三个目录 3、打开文件trl&#xff0c;创建md_counter.v文件 4、打开文件tb&#xff0c;创建md_counter_tb.v文件 5、用VsCod…...

Flink介绍——发展历史

引入 我们整个大数据处理里面的计算模式主要可以分为以下四种&#xff1a; 批量计算&#xff08;batch computing&#xff09; MapReduce Hive Spark Flink pig流式计算&#xff08;stream computing&#xff09; Storm SparkStreaming/StructuredStreaming Flink Samza交互计…...

12. STL的原理

目录 1. 容器、迭代器、算法 什么是迭代器? 迭代器的作用&#xff1f; 迭代器的类型&#xff1f; 迭代器失效 迭代器的实现细节&#xff1a; 2. 适配器 什么是适配器&#xff1f; 适配器种类&#xff1a; 3. 仿函数 什么是仿函数&#xff1f; 仿函数与算法和容器的…...

OSPFv3 的 LSA 详解

一、复习&#xff1a; OSPFv3 运行于 IPv6 协议上&#xff0c;所以是基于链路&#xff0c;而不是基于网段&#xff0c;它实现了拓扑和网络的分离。另外&#xff0c;支持一个链路上多个进程&#xff1b;支持泛洪范围标记和泛洪不识别的报文&#xff08;ospfv2 的行为是丢弃&…...

python 原型链污染学习

复现SU的时候遇到一道python原型链污染的题&#xff0c;借此机会学一下参考&#xff1a; 【原型链污染】Python与Jshttps://blog.abdulrah33m.com/prototype-pollution-in-python/pydash原型链污染 文章目录 基础知识对父类的污染命令执行对子类的污染pydash原型链污染打污染的…...

Windows 图形显示驱动开发-WDDM 2.4功能-GPU 半虚拟化(十一)

注册表设置 GPU虚拟化标志 GpuVirtualizationFlags 注册表项用于设置半虚拟化 GPU 的行为。 密钥位于&#xff1a; DWORD HKLM\System\CurrentControlSet\Control\GraphicsDrivers\GpuVirtualizationFlags 定义了以下位&#xff1a; 位描述0x1 ​ 为所有硬件适配器强制设置…...

入栈操作-出栈操作

入栈操作 其 入栈操作 汇编代码流程解析如下&#xff1a; 出栈操作 其 出栈操作 汇编代码流程解析如下&#xff1a;...

C++ 多态:面向对象编程的核心概念(一)

文章目录 引言1. 多态的概念2. 多态的定义和实现2.1 实现多态的条件2.2 虚函数2.3 虚函数的重写/覆盖2.4 虚函数重写的一些其他问题2.5 override 和 final 关键字2.6 重载/重写/隐藏的对比 3. 纯虚函数和抽象类 引言 多态是面向对象编程的三大特性之一&#xff08;封装、继承、…...