Hadoop3教程(三十五):(生产调优篇)HDFS小文件优化与MR集群简单压测
文章目录
- (168)HDFS小文件优化方法
- (169)MapReduce集群压测
- 参考文献
(168)HDFS小文件优化方法
小文件的弊端,之前也讲过,一是大量占用NameNode的空间,二是会使得寻址速度变慢。
另外,过多的小文件,在进行MR的时候,会生成过多切片,从而启动过多的MapTask,很容易造成,启动MapTask的时间比MapTask计算的时间还长,浪费资源。
那怎么解决小文件问题,有这么几个解决方向:
- 从数据源头上控制:
- 就是数据在采集的时候,就不让上传小文件,如果有小文件的话,就先合并成大文件之后,再上传到HDFS;
- 从存储上来控制:
- Hadoop Archive,即文件归档,将多个小文件压缩归档成一个大文件,可以减少NN的使用。
- 从计算方向上来控制:
- 采用CombineTextInputFormat,在切片过程中,将多个小文件生成一个切片;
- 开启uber模式,实现JVM重用。默认情况下,每个Task任务都需要开启一个JVM来运行,如果Task任务的计算量很小,那我们完全可以让多个Task运行在同一个JVM中,不需要开启多余的JVM。
下面举一下例子,在未开启Uber模式的情况下,我们在/input路径上上传多个小文件并执行wordcount程序:
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output2
观察控制台,里面会有行这样的输出:
2021-02-14 16:13:50,607 INFO mapreduce.Job: Job job_1613281510851_0002 running in uber mode : false
提示我们本次没有开启uber模式。
然后在yarn的网页里,查看刚刚运行完成的这个任务,如下图,会发现,它一共开启了5个容器:



接下来让我们开启uber模式,在mapred-site.xml中添加如下配置:
<!-- 开启uber模式,默认关闭 -->
<property><name>mapreduce.job.ubertask.enable</name><value>true</value>
</property><!-- uber模式中最大的mapTask数量,即JVM重用的次数,只能向下修改,即小于9 -->
<property><name>mapreduce.job.ubertask.maxmaps</name><value>9</value>
</property>
<!-- uber模式中最大的reduce数量,只能向下修改,即要不是0,要不是1 -->
<property><name>mapreduce.job.ubertask.maxreduces</name><value>1</value>
</property>
<!-- uber模式中最大的输入数据量,默认使用dfs.blocksize 的值,可向下修改 -->
<property><name>mapreduce.job.ubertask.maxbytes</name><value></value>
</property>
然后分发配置:
[atguigu@hadoop102 hadoop]$ xsync mapred-site.xml
继续执行刚才执行过的WordCount程序,这时候我们可以从控制台里观察到这么一行输出:
2021-02-14 16:28:36,198 INFO mapreduce.Job: Job job_1613281510851_0003 running in uber mode : true
同时查看yarn,如下图,会发现当前任务,其实只用了一个容器:

所以uber模式的开启,实现了共用容器的效果。
(169)MapReduce集群压测
集群搭建好后,可以通过压测,来了解下当前集群的计算能力。
比如说可以执行下面的任务,查看多长时间内,可以执行完这个任务,就可以大概估算出数据量和执行时间之间的关系。
(1)使用RandomWriter来产生随机数,每个节点运行10个Map任务,每个Map产生大约1G大小的二进制随机数
[atguigu@hadoop102 mapreduce]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar randomwriter random-data
(2)执行Sort程序
[atguigu@hadoop102 mapreduce]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar sort random-data sorted-data
(3)验证数据是否真正排好序了
[atguigu@hadoop102 mapreduce]$
hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar testmapredsort -sortInput random-data -sortOutput sorted-data
参考文献
- 【尚硅谷大数据Hadoop教程,hadoop3.x搭建到集群调优,百万播放】
相关文章:
Hadoop3教程(三十五):(生产调优篇)HDFS小文件优化与MR集群简单压测
文章目录 (168)HDFS小文件优化方法(169)MapReduce集群压测参考文献 (168)HDFS小文件优化方法 小文件的弊端,之前也讲过,一是大量占用NameNode的空间,二是会使得寻址速度…...
metersphere 接口自动化
Metersphere 使用步骤大致如下: 安装 Metersphere Metersphere 是一款基于 Docker 的应用程序,因此在使用 Metersphere 之前,需要先安装 Docker。安装 Docker 后,再下载 Metersphere 的安装包并解压缩。 启动 Metersphere 在终…...
Mac上安装和配置Git
在Mac上安装和配置Git是一个相对简单的过程,以下是一份详细的步骤指南。 首先,你需要确保你的Mac已经安装了Homebrew(如果还没有安装,可以通过以下命令安装:),Homebrew是一个包管理器ÿ…...
【文件操作】Java -操作File对象
个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ 文件操作 Java - File对象 Java - File对象 Fi…...
Socks5代理技术:驱动数字化时代跨界发展的利器
随着全球数字化进程的加速推进,Socks5代理技术作为一项关键的网络技术正日益成为推动跨界电商、爬虫数据分析、企业出海以及游戏体验优化等领域发展的重要驱动力。其高效稳定的网络连接能力以及灵活的应用方式,不仅为企业提供了全球市场拓展的无限可能&a…...
基于二维小波变换的散斑相位奇异构造算法matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 图(1)表示散斑原图像,(2)表示对(1)图像进行x轴方向的极化分析的小波相位图,呈周期的水平条纹,(3)表示对(1)图像…...
为啥么有奖章
6.1 域名系统 DNS 应用层的许多协议都是基于客户服务器方式。即使是 P2P 对等通信方式,实质上也是一种特殊的客户服务器方式。这里再明确一下,客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被…...
【报错】Unbalanced delimiter found in string
Unbalanced delimiter found in string uniapp报错Unbalanced delimiter found in string 查看代码发现原来是粗心导致的。条件编译删漏了一条 hid.close()// #endif加上前面的条件编译 or减去后面的即可...
Python(一)关键字、内置函数
程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一波电子书籍资料,包含《Effective Java中文版 第2版》《深入JAVA虚拟机》,《重构改善既有代码设计》,《MySQL高性能-第3版》&am…...
聊聊分布式架构10——Zookeeper入门详解
目录 01ZooKeeper的ZAB协议 ZAB协议概念 ZAB协议基本模式 消息广播 崩溃恢复 选举出新的Leader服务器 数据同步 02Zookeeper的核心 ZooKeeper 的核心特点 ZooKeeper 的核心组件 选举算法概述 服务器启动时的Leader选举 服务器运行期间的Leader选举 03ZooKeeper的…...
springmvc视图格式——模板引擎freemarker输出HTML文本
目录 1. freemarker 介绍创建测试工程2.2.2) 配置文件2.2.3) 创建模型类2.2.4) 创建模板2.2.5) 创建controller2.2.6) 创建启动类2.2.7) 测试 2.3) freemarker基础2.3.1) 基础语法种类2.3.2) 集合指令(List和Map)2.3.3) if指令2.3.4) 运算符2.3.5) 空值处…...
用长tree方式做等长线
我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 相关文章链接: 用set_data_check的方式做等长线 前面讲过了如何用set_data_check做等长线,这里再讲一下如何用cts的方式做。 1)写一个sdc,把等长线的起点设置成clock source,用于创建create_…...
C# out参数out多个参数
文章目录 C# out参数out多个参数背景说明作用方法定义调用方法测试结果注意 C# out参数out多个参数 背景说明 一个方法返回多个相同数据类型的变量,可以采用数据的方式; 我需要返回多个不同数据类型的方法,在这里采用out多个参数的方式。 …...
选择Android还是IOS?我终于明白了!
选择Android还是iOS,取决于个人的喜好和需求。以下是一些可能帮助您做出决策的考虑因素: 用户界面和易用性: iOS系统的界面比Android更加简单、易用,而且应用程序布局更加一致,可以更快地学会如何使用。Android系统除了…...
uniapp高德地图ios 使用uni.chooseLocation选取位置显示没有搜索到相关数据
uniapp云打包后,高德地图ios选取位置显示“ 对不起,没有搜索到相关数据” 详细问题描述 废话不多说,直接上图 解决方案 1.打开高德地图开发平台 2.重新创建key 3.获取云打包时的ios报名作为安全码 4.使用生成的高德key更改manifest.json里…...
Python绘制论文中的图形
一、条形图 使用场景:对多个实验方法的性能进行比较。代码: #条形图 import matplotlib.pyplot as plt import numpy as np#实验数据,每一行代表一个method,每一列代表一个性能指标 dataacc [[0.9504, 0.9315, 0.9420, 0.9409]…...
flutter复制口令返回app监听粘贴板
overridevoid didChangeAppLifecycleState(AppLifecycleState state) {switch (state) {case AppLifecycleState.inactive: // 处于这种状态的应用程序应该假设它们可能在任何时候暂停。break;case AppLifecycleState.resumed: //从后台切换前台,界面可见handle();b…...
学习pytorch14 损失函数与反向传播
神经网络-损失函数与反向传播 官网损失函数L1Loss MAE 平均MSELoss 平方差CROSSENTROPYLOSS 交叉熵损失注意code 反向传播在debug中的显示code B站小土堆pytorch视频学习 官网 https://pytorch.org/docs/stable/nn.html#loss-functions 损失函数 L1Loss MAE 平均 import to…...
windows平台下Qt Creator的下载与安装流程
下载 下载地址:https://download.qt.io/archive/ 下载界面 进入qt或者qtcreator都可以 版本选择 这里我选择进入qt进行下载,进入之后有多个版本可以选择。 注意:从Qt5.15版本开始,Qt公司不在提供开源离线安装程序,此…...
在 Python 中使用 Pillow 进行图像处理【3/4】
第三部分 一、腐蚀和膨胀 您可以查看名为 的图像文件dot_and_hole.jpg,您可以从本教程链接的存储库中下载该文件: 该二值图像的左侧显示黑色背景上的白点,而右侧显示纯白色部分中的黑洞。 侵蚀是从图像边界去除白色像素的过程。您可以通过使用…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
Linux中《基础IO》详细介绍
目录 理解"文件"狭义理解广义理解文件操作的归类认知系统角度文件类别 回顾C文件接口打开文件写文件读文件稍作修改,实现简单cat命令 输出信息到显示器,你有哪些方法stdin & stdout & stderr打开文件的方式 系统⽂件I/O⼀种传递标志位…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...
ThreadLocal 源码
ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物,因为每个访问一个线程局部变量的线程(通过其 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段,这些类希望将…...
拟合问题处理
在机器学习中,核心任务通常围绕模型训练和性能提升展开,但你提到的 “优化训练数据解决过拟合” 和 “提升泛化性能解决欠拟合” 需要结合更准确的概念进行梳理。以下是对机器学习核心任务的系统复习和修正: 一、机器学习的核心任务框架 机…...
