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

大数据-学习实践-5企业级解决方案

大数据-学习实践-5企业级解决方案

(大数据系列)

文章目录

  • 大数据-学习实践-5企业级解决方案
    • 1知识点
    • 2具体内容
      • 2.1小文件问题
        • 2.1.1 SequenceFile
        • 2.1.2 MapFile
        • 2.1.3 小文件存储计算
      • 2.2数据倾斜
      • 2.3 YARN
        • 2.3.1 YARN架构
        • 2.3.2 YARN调度器
        • 2.3.2 YARN多资源队列配置和使用
      • 2.4Hadoop官方文档
      • 2.5总结
    • 3待补充
    • 4Q&A
    • 5code
    • 6参考

1知识点

  • 小文件问题
  • 小文件存储计算
  • 数据倾斜
  • YARN
  • Hadoop官方

2具体内容

2.1小文件问题

MapReduce框架针对大数据文件设计,小文件处理效率低下,消耗内存资源

  • 每个小文件在NameNode都会占用150字节的内存,每个小文件都是一个block
  • 一个block产生一个inputsplit,产生一个Map任务
  • 同时启动多个map任务消耗性能,影响MapReduce执行效率

2.1.1 SequenceFile

  • SequenceFile是二进制文件,直接将<k,v>对序列化到文件
  • 对小文件进行文件合并:文件名为k,文件内容为v,序列化到大文件
  • 但需要合并文件的过程,文件大且合并后的文件不便查看,需要遍历查看每个小文件
  • 读、写试验
  • SequenceFile在hdfs上合并为一个文件

2.1.2 MapFile

  • 排序后的MapFile,包括index和data
  • index为文件的数据索引,记录每个record的key值,并保存该record在文件中的偏移位
  • 访问MapFile时,索引文件被加载到内存,通过索引映射关系快速定位到指定Record所在文件位置
  • 相对SequenceFile而言,MapFile的检索效率是高效的,缺点是会消耗一部分内存来存储index数据
  • MapFile在hdfs上包括2个文件,index和data

2.1.3 小文件存储计算

使用SequenceFile实现小文件存储计算

  • java开发,生成SequenceFile;(人工将一堆小文件处理成一个较大文件,进行MapReduce计算)
  • 开发MapReduce(借助底层),读取Sequencefile,进行分布式计算

2.2数据倾斜

  • 一般不对Map任务进行改动,但为了提高效率,可增加Reduce任务,需要对数据分区
  • job.getPartitionerClass()实现分区
  • 当MapReduce程序执行时,大部分Reduce节点执行完毕,但有一个或几个Reduce节点运行很慢,导致整个程序处理时间变长,表现为Reduce节点卡着不动
    • 倾斜不严重,可增加Reduce任务个数
job.setNumReduceTasks(Integer.parseInt(args[2]));
  • 倾斜严重,要把倾斜数据打散(抽样确定哪一类,打散)
String key = words[0];
if ("5".equals(key)) {//把倾斜的key打散,分成10份key = "5" + "_" + random.nextInt(10);
}

2.3 YARN

2.3.1 YARN架构

  • 集群资源的管理和调度,支持主从架构,主节点最多2个,从节点可多个
  • ResourceManager:主节点负责集群资源分配和管理
  • NodeManager:从节点负责当前机器资源管理
  • YARN主要管理内存和CPU两种资源
  • NodeManager启动向ResourceManager注册,注册信息包含该节点可分配的CPU和内存总量
  • 默认单节点:(yarn-site.xml文件中设置)
    • yarn.nodemanager.resourece.memory-mb:单节点可分配物理内存总量,默认8Mb*1024,8G
    • yarn.nodemanager.resource.cpu-vcores:单节点可分配的虚拟CPU个数,默认是8

2.3.2 YARN调度器

  • FIFO Scheduler 先进先出
  • Capacity Scheduler FIFO Scheduler 多队列版本(常用)
  • Fair Scheduler 多队列,多用户共享资源

2.3.2 YARN多资源队列配置和使用

  1. 增加online队列和offline队列
    • 修改 capacity-scheduler.xml 文件,并同步其他节点
<property><name>yarn.scheduler.capacity.root.queues</name><value>default,online,offline</value><description>The queues at the this level (root is the root queue).</description>
</property>
<property><name>yarn.scheduler.capacity.root.default.capacity</name><value>70</value><description>Default queue target capacity.</description>
</property>
<property><name>yarn.scheduler.capacity.root.online.capacity</name><value>10</value><description>Online queue target capacity.</description>
</property>
<property><name>yarn.scheduler.capacity.root.offline.capacity</name><value>20</value><description>Offline queue target capacity.</description>
</property>
<property><name>yarn.scheduler.capacity.root.default.maximum-capacity</name><value>70</value><description>The maximum capacity of the default queue.</description>
</property>
<property><name>yarn.scheduler.capacity.root.online.maximum-capacity</name><value>10</value><description>The maximum capacity of the online queue.</description>
</property>
<property><name>yarn.scheduler.capacity.root.offline.maximum-capacity</name><value>20</value><description>The maximum capacity of the offline queue.</description>
</property>
- 重新启动
stop-all.sh
start-all.sh
  1. 向offline队列提交MR任务
    • online队列里面运行实时任务
    • offline队列里面运行离线任务
#解析命令行通过-D传递参数,添加至conf;也可修改java程序解析各参数
String[] remainingArgs = new GenericOptionsParser(conf,args).getRemainingArgs();
Job job = Job.getInstance(conf);
job.setJarByClass(WordCountJobQueue.class);#必须有,否则集群执行时找不到wordCountJob这个类
#重新编译上传执行
hadoop jar db_hadoop-1.0-SNAPSHOT-jar-with-dependencies.jar com.imooc.mr.WordCountJobQueue -Dmapreduce.job.queue=offline /test/hello.txt /outqueue

2.4Hadoop官方文档

  • 官方文档
  • 在CDH中的使用
  • 在HDP中的使用
    -(1080端口) Ambari组件,提供web界面

2.5总结

  • MapReduce
    • 原理
    • 计算过程
    • 执行步骤
    • wordcount案例
    • 日志查看:开启YARN日志聚合,启动historyServer进程
    • 程序扩展:去掉Reduce
    • Shuffle过程
  • 序列化
    • Writable实现类
    • 特点
  • 源码分析
    • InputFormat
    • OutputFormat
  • 性能优化
    • 小文件
    • 数据倾斜
  • YARN
    • 资源管理:内存+CPU
    • 调度器:常用CapacityScheduler

3待补充

4Q&A

5code

6参考

  • 大数据课程资料

相关文章:

大数据-学习实践-5企业级解决方案

大数据-学习实践-5企业级解决方案 (大数据系列) 文章目录大数据-学习实践-5企业级解决方案1知识点2具体内容2.1小文件问题2.1.1 SequenceFile2.1.2 MapFile2.1.3 小文件存储计算2.2数据倾斜2.3 YARN2.3.1 YARN架构2.3.2 YARN调度器2.3.2 YARN多资源队列配置和使用2.4Hadoop官方…...

破解吲哚花菁素IR-808 N3,IR-808 azide,IR-808叠氮,酯溶性染料修饰叠氮基团,相关知识

基础产品数据&#xff08;Basic Product Data&#xff09;&#xff1a;CAS号&#xff1a;N/A中文名&#xff1a;IR-808叠氮英文名&#xff1a;IR-808 N3&#xff0c;IR-808 azideIR-808结构式&#xff08;Structural&#xff09;&#xff1a;详细产品数据&#xff08;Detailed …...

面试官:MQ的好处到底有哪些?

&#x1f497;推荐阅读文章&#x1f497; &#x1f338;JavaSE系列&#x1f338;&#x1f449;1️⃣《JavaSE系列教程》&#x1f33a;MySQL系列&#x1f33a;&#x1f449;2️⃣《MySQL系列教程》&#x1f340;JavaWeb系列&#x1f340;&#x1f449;3️⃣《JavaWeb系列教程》…...

事务机制:Redis能实现ACID属性吗?

ACID特性无需多言。我们知道关系数据库比如mysql可以实现事务的ACID特性&#xff0c;begin,commit,回滚实现。 那么redis可以实现ACID吗&#xff0c;结论是不能完全保证。 首先要知道redis通过MULTI关键字开启事务&#xff0c;中间一系列操作&#xff0c;加到操作队列中并不执…...

如何在 Apinto 实现 HTTP 与 gRPC 的协议转换(上)

什么是 gRPC 像 gRPC 是由 google 开发的一个高性能、通用的开源 RPC 框架&#xff0c;主要面向移动应用开发且基于 HTTP/2 协议标准而设计&#xff0c;同时支持大多数流行的编程语言。 gRPC 基于 HTTP/2 协议传输&#xff0c;而 HTTP/2 相比 HTTP1.x &#xff0c;有以下优势:…...

3分钟看完-丄-Python自动化测试【项目实战解析】经验分享

目录&#xff1a;导读 引言 自动化测试 背景 测试团队 测试体系发展 测试平台 自动化测试现状 现状一&#xff1a; 现状二&#xff1a; 现状三&#xff1a; 现状四&#xff1a; 现状五&#xff1a; 现状六&#xff1a; 失败的背景 失败的经历 失败总结 引言 内…...

Web漏洞-命令执行和代码执行漏洞

命令执行原理就是指用户通过浏览器或其他辅助程序提交执行命令&#xff0c;由于服务器端没有针对执行函数做过滤&#xff0c;导致在没有指定绝对路径的情况下就执行命令。漏洞成因它所执行的命令会继承WebServer的权限&#xff0c;也就是说可以任意读取、修改、执行Web目录下的…...

Towards Unsupervised Text Classification Leveraging Experts and Word Embeddings

Towards Unsupervised Text Classification Leveraging Experts and Word Embeddings Abstract 该论文提出了一种无监督的方法&#xff0c;使用每个文档中相关单词之间的文本相似度以及每个类别的关键字字典将文档分为几类。所提出的方法通过人类专业知识和语言模型丰富了类别…...

linux进程管理

进程管理 进程是启动的可执行程序的一个指令 1、进程简介 &#xff08;1&#xff09;进程的组成部分 已分配内存的地址空间安全属性&#xff0c;包括所有权凭据和特权程序代码的一个或多个执行线程进程状态 &#xff08;2&#xff09;程序和进程的区别 程序是一个静态的二进制…...

【深度强化学习】(6) PPO 模型解析,附Pytorch完整代码

大家好&#xff0c;今天和各位分享一下深度强化学习中的近端策略优化算法&#xff08;proximal policy optimization&#xff0c;PPO&#xff09;&#xff0c;并借助 OpenAI 的 gym 环境完成一个小案例&#xff0c;完整代码可以从我的 GitHub 中获得&#xff1a; https://gith…...

【数据结构】第二站:顺序表

目录 一、线性表 二、顺序表 1.顺序表的概念以及结构 2.顺序表的接口实现 3.顺序表完整代码 三、顺序表的经典题目 1.移除元素 2.删除有序数组中的重复项 3.合并两个有序数组 一、线性表 在了解顺序表前&#xff0c;我们得先了解线性表的概念 线性表&#xff08;linear…...

嵌入式安防监控项目——实现真实数据的上传

目录 一、相关驱动开发 二、A9主框架 三、脚本及数据上传实验 https://www.yuque.com/uh1h8r/dqrma0/tx0fq08mw1ar1sor?singleDoc# 《常见问题》 上个笔记的相关问题 一、相关驱动开发 /* mpu6050六轴传感器 */ i2c138B0000 { /* #address-cells <1>…...

SAP 生成UUID

UUID含义是通用唯一识别码 (Universally Unique Identifier)&#xff0c;这 是一个软件建构的标准&#xff0c;也是被开源软件基金会 (Open Software Foundation, OSF) 的组织应用在分布式计算环境 (Distributed Computing Environment, DCE) 领域的一部分。 UUID-Universally…...

DevOPs介绍,这一篇就足够了

一、什么是DevOps&#xff1f; DevOps是一种将软件开发和IT运维进行整合的文化和运动。它的目标是通过加强软件开发、测试和运维之间的协作和沟通&#xff0c;使整个软件开发和交付过程更加高效、快速、安全和可靠。DevOps涵盖了从计划和设计到开发、测试、交付和部署的全生命…...

libcurl库简介

一、libcurl简介libcurl是一个跨平台的网络协议库&#xff0c;支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权&#xff0c;HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传&#xff0c;代理&#xff0c;cookies,和用户认证。…...

Spark SQL支持DataFrame操作的数据源

DataFrame提供统一接口加载和保存数据源中的数据&#xff0c;包括&#xff1a;结构化数据、Parquet文件、JSON文件、Hive表&#xff0c;以及通过JDBC连接外部数据源。一个DataFrame可以作为普通的RDD操作&#xff0c;也可以通过&#xff08;registerTempTable&#xff09;注册成…...

Java【归并排序】算法, 大白话式图文解析(附代码)

文章目录前言一、排序相关概念1, 什么是排序2, 什么是排序的稳定性3, 七大排序分类二、归并排序1, 图文解析2, 代码实现三、性能分析四、七大排序算法总体分析前言 各位读者好, 我是小陈, 这是我的个人主页 小陈还在持续努力学习编程, 努力通过博客输出所学知识 如果本篇对你有…...

【springboot】数据库访问

1、SQL 1、数据源的自动配置-HikariDataSource 1、导入JDBC场景 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency>数据库驱动&#xff1f; 为什么导入JD…...

普通和hive兼容模式下sql的差异

–odps sql –– –author:宋文理 –create time:2023-03-08 15:23:52 –– – 差异分为三块 – 1.运算符的差异 – 2.类型转换的差异 – 3.内建函数的差异 – 以下是运算符的差异&#xff1a; – BITAND&#xff08;&&#xff09; – 当输入参数是BIGINT类型的时候&…...

github开源自己代码

接下来&#xff0c;我们需要先下载Git&#xff0c;的网址&#xff1a;https://git-scm.com/downloads&#xff0c;安装时如果没有特殊需求&#xff0c;一直下一步就可以了&#xff0c;安装完成之后&#xff0c;双击打开Git Bash 出现以下界面&#xff1a; 第一步&#xff1a;…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)

🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...