当前位置: 首页 > 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;…...

数据库基础语法

sql&#xff08;Structured Query Language 结构化查询语言&#xff09; SQL语法 use DataTableName; 命令用于选择数据库。set names utf8; 命令用于设置使用的字符集。SELECT * FROM Websites; 读取数据表的信息。上面的表包含五条记录&#xff08;每一条对应一个网站信息&…...

【Java】期末复习知识点总结(4)

适合Java期末的复习~ &#xff08;Java期末复习知识点总结分为4篇&#xff0c;这里是最后一篇啦&#xff09;第一篇~https://blog.csdn.net/qq_53869058/article/details/129417537?spm1001.2014.3001.5501第二篇~https://blog.csdn.net/qq_53869058/article/details/1294751…...

IDEA好用插件:MybatisX快速生成接口实体类mapper.xml映射文件

目录 1、在Idea中找到下载插件&#xff0c;Install&#xff0c;重启Idea 2、一个测试java文件&#xff0c;里面有com包 3、在Idea中添加数据库 --------以Oracle数据库为例 4、快速生成entity-service-mapper方法 5、查看生成的代码 6、自动生成&#xff08;增删查改&#xff0…...

【JavaEE】初识线程

一、简述进程认识线程之前我们应该去学习一下“进程" 的概念&#xff0c;我们可以把一个运行起来的程序称之为进程&#xff0c;进程的调度&#xff0c;进程的管理是由我们的操作系统来管理的&#xff0c;创建一个进程&#xff0c;操作系统会为每一个进程创建一个 PCB&…...

智慧水务监控系统-智慧水务信息化平台建设

平台概述柳林智慧水务监控系统&#xff08;智慧水务信息化平台&#xff09;是以物联感知技术、大数据、智能控制、云计算、人工智能、数字孪生、AI算法、虚拟现实技术为核心&#xff0c;以监测仪表、通讯网络、数据库系统、数据中台、模型软件、前台展示、智慧运维等产品体系为…...

【Linux】进程优先级前后台理解

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅&#x1f339;相关文章推荐&#xff1a;【Linux】冯.诺依曼体系结构与操作系统【Linux】进程理解与学习&#xff08;Ⅰ&#xff09;浅谈Linux下的shell--BASH【Linux…...

时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元)

时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元) 目录 时序预测 | MATLAB实现基于EMD-GRU时间序列预测(EMD分解结合GRU门控循环单元)效果一览基本描述模型描述程序设计参考资料效果一览...

python 模拟鼠标,键盘点击

信息爆炸 消息轰炸模拟鼠标和键盘敲击import time from pynput.keyboard import Controller as key_col from pynput.mouse import Button,Controller def keyboard_input(insertword):keyboardkey_col()keyboard.type(insertword)def mouth():mouseController()mouse.press(…...

【CSS】盒子边框 ③ ( 设置表格细线边框 | 合并相邻边框 border-collapse: collapse; )

文章目录一、设置表格细线边框1、表格示例2、合并相邻边框3、完整代码示例一、设置表格细线边框 1、表格示例 给定一个 HTML 结构中的表格 , 默认样式如下 : <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8" />…...

TensorRT量化工具pytorch_quantization代码解析(一)

量化工具箱pytorch_quantization 通过提供一个方便的 PyTorch 库来补充 TensorRT &#xff0c;该库有助于生成可优化的 QAT 模型。该工具包提供了一个 API 来自动或手动为 QAT 或 PTQ 准备模型。 API 的核心是 TensorQuantizer 模块&#xff0c;它可以量化、伪量化或收集张量的…...

c2c网站开发策划/公众号软文是什么意思

Latex基本语法的备忘录 Latex基本语法前言一、常见的数学符号1. 数学上的“**属于**”、“**不属于**”符号。2. 数学的矩阵的**转置符号**书写。3. 数学中求和公式。4.数学中字母代上标5.数字或公式上添加方框6.数学分式7.数学公式中在某些符号下添加花括号8.数学中的垂直符号…...

php可以做网站布局吗/我要登录百度

作者&#xff1a;指针不指南吗 专栏&#xff1a;蓝桥杯倒计时冲刺 &#x1f43e;马上就要蓝桥杯了&#xff0c;最后的这几天尤为重要&#xff0c;不可懈怠哦&#x1f43e; 文章目录1.Floyd求最短路2.Dijkstra求最短路&#xff08;堆优化版&#xff09;1.Floyd求最短路 题目 链接…...

毕业设计做网站起个名字/公司网站注册流程和费用

字段不超过8000的话可以这样&#xff1a; update 表名 set 字段名replace(convert(varchar(8000),字段名),要替换的,替换为的) 转载于:https://www.cnblogs.com/alon/archive/2009/10/13/1582308.html...

威客做网站/高端网站建设报价

本文实例为大家分享了Java简易抽奖系统的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下需求&#xff1a;实现一个抽奖系统1 注册2 登录3 抽奖必须先注册 再登陆 再抽奖随机产生4个随机数作为幸运卡号用户注册后 登录的时候 用户名密码输入判断只有三次机会需要做…...

网站建设技术标准/百度百科优化排名

<script type"text/javascript">//Dom对象不能使用Jquery对象的方法//Jquery对象也不能使用Dom对象的方法//Dom对象转Jquery对象$(function () {var Dom1 document.getElementById(div1);var s $(Dom1).html();alert(s);});//Jquery对象转Dom对象$(function …...

wp网站搬家教程/百度网盘搜索入口

从Java 5 开始引入了静态导入语法&#xff08;import static&#xff09;使用静态导入可以使被导入类的静态变量和静态方法在当前类直接可见&#xff0c;使用这些静态成员无需再给出他们的类名。package cn.itcast.p6.staticimport;import java.util.*; import static java.uti…...