HDFS小文件问题分析与解决方案(面试层面~)

news/2024/5/20 2:22:03 标签: hadoop, hdfs, 运维

会造成的影响

(1)存储层面:

在HDFS中,每个block,文件或者目录在内存中均以对象的形式存储
1个文件块,占用namenode多大内存150字节
1亿个小文件*150字节
1个文件块 * 150字节
这样会使namenode内存容量严重影响了集群的扩展。如果访问大量小文件,需要不断的从一个datanode跳到另一个datanode,严重影响性能。

(2)计算层面:

每个小文件都会起到一个MapTask,占用了大量计算资源

解决方法

(1)采用har归档方式,将小文件归档

使用har归档方式时,要注意两点:第一,对小文件进行存档后,原文件并不会自动被删除,需要用户自己删除;第二,创建HAR文件的过程实际上是在运行一个mapreduce作业,因而需要有一个hadoop集群运行此命令。

(2)采用CombineTextInputFormat

它可以将多个文件合并成一个单独的split,并且可以设置存储位置。

(3)有小文件场景开启JVM重用;如果没有小文件,不要开启JVM重用,因为会一直占用使用到的task卡槽,直到任务完成才释放。

JVM重用可以使得JVM实例在同一个job中重新使用N次,N的值可以在Hadoop的mapred-site.xml文件中进行配置。通常在10-20之间

<property>
    <name>mapreduce.job.jvm.numtasks</name>
    <value>10</value>
    <description>How many tasks to run per jvm,if set to -1 ,there is  no limit</description>
</property>

在这里插入图片描述


http://www.niftyadmin.cn/n/1854818.html

相关文章

python做测试_Python实现性能自动化测试竟然如此简单

一、思考❓❔ 1.什么是性能自动化测试?性能 系统负载能力 超负荷运行下的稳定性 系统瓶颈 自动化测试 使用程序代替手工 提升测试效率 性能自动化 使用代码模拟大批量用户 让用户并发请求 多页面多用户并发请求 采集参数&#xff0c;统计系统负载能力 生成报告 2.Python中的性…

Eclipse 报错 Missing artifact jdk.tools:jdk.tools:jar:1.6(已解决)

在eclipse中创建java项目后&#xff0c;pom文件中照常添加依赖&#xff0c;结果报错Missing artifact jdk.tools:jdk.tools:jar:1.6 pom文件中添加如下依赖&#xff0c;然后右键项目刷新Refresh后&#xff0c;没有再报错 <dependency><groupId>jdk.tools</grou…

Kettle实现:MongoDB与MySQL数据互传

一&#xff0c;mongodb传数据到mysql 在kettle中&#xff0c;mongodb input组件。 编辑组件 输入连接信息 选择数据库 写查询语句 选择字段。上面的复选框选择是否输入json格式&#xff0c;这时不选。 点击get fileds&#xff0c;获取字段对应关系。 $代表根目录 .代…

lambda函数if_三种基本用法、五种应用场景,理清C++的Lambda表达式

lambda表达式是指能够捕获作用域中的变量的无名函数对象&#xff0c;狭义的理解&#xff0c;就是匿名函数。无论是在项目中&#xff0c;还是在开源网站&#xff0c;总是能够看到lambda的身影。 为了能够轻松阅读代码&#xff0c;进而熟练地使用&#xff0c;本文首先将讲解lambd…

冷启动问题分析与解决办法

1、什么是冷启动问题&#xff1f; 在缺乏有价值数据的时候&#xff0c;如何有效地满足业务需求的问题&#xff0c;就是“冷启动问题”。为了沟通方便&#xff0c;下面统一从推荐系统的角度来讲“冷启动问题”&#xff0c;其他业务场景同理。 冷启动问题是机器学习系统中十分常…

python文本处理指南_Python指南:文件处理

原标题&#xff1a;Python指南&#xff1a;文件处理 来源&#xff1a; C与Python实战&#xff08;ID&#xff1a;CPythonPractice&#xff0c;已获授权&#xff09; 大多数程序都需要向文件中存储或从文件中加载信息&#xff0c;比如数据或状态信息。本文将深入全面地介绍文件处…

File类对文件的目录、基本操作、递归、遍历(超详细整理~)

创建和删除 //创建文件 File file1 new File("不存在的文件.txt");//注意&#xff0c;这一步并没有创建文件&#xff0c;只是把磁盘中的文件封装成了一个对象 System.out.println(file1.exists() "--" file1.createNewFile());//false--true。这一步是…

python保存mat文件_Python 保存加载mat格式文件的示例代码

mat为matlab常用存储数据的文件格式&#xff0c;python的scipy.io模块中包含保存和加载mat格式文件的API&#xff0c;使用极其简单&#xff0c;不再赘述&#xff1b;另附简易示例如下&#xff1a; # -*- coding: utf-8 -*- import numpy as np import scipy.io as scio # data …