hdfs小文件使用fsimage分析实例

【Hadoop-HDFS】HDFS中Fsimage与Edits详解 在HDFS中,NameNode 保存了整个 HDFS 的元数据信息,而这些数据最终会被持久化到 Fsimage 文件和 EditLog 文件。换而言之,NameNode 的元数据信息由Fsimage和Editlog组成。Fsimage 存放上次 checkpoint 生成的文件系统元数据。EditLog 则存放文件系统的操作日志,也就是用户对目录、文件的每个写操作(包括创建、删除、写入等)都会被记录到 Editlog 文件中。注意。【Hadoop-HDFS】HDFS中Fsimage与Edits详解 阅读详情

1 小文件来源分析

1.1 数据主要来源:

  1. 滴漏数据(Trickling data) - 数据是以小批量的形式进行增量抽取会导致小文件的产生,那只能事后定期使用一些额外的作业去合并这些小文件。
  2. 大量的map或者reduce任务 - 大量map或者reduce任务的MapReduce作业或Hive查询很多文件,比如Map-Only的作业有多少个map就会生成多少个文件,如果是Map-Reduce作业则有多少个reduce就会生成多少个文件。
  3. 过度分区的表 - 比如一个Hive表有太多分区,每个分区下只有几个文件甚至只有一个小文件,这时考虑降低分区的粒度比如从按照天分区改为按照月份分区。
  4. 上述情况的组合 - 如果上面三种情况组合出现,会加剧小文件问题。比如过度分区的Hive表,每个分区下都是很多个小文件而不是大文件。

对比到我们的业务 大约就是一下场景:
实时计算引擎的中间结果
日志文件
maoreduce的多个reduce产生的多个文件
上报数据多个文件

2 处理方案

2.1 实时计算任务

可以考虑将任务中缓存文件及数据状态使用第三方外部存储,如redis等 存储任务的中间状态,减少对hdfs的读写和文件生成(非常的不靠谱,直接忽略)

2.2 hive做优化,小文件做合并:

在这里插入图片描述

2.2.1 已有数据

可以考虑HAR 文件,或把文件合并成一个文件。在重新load进hive中

SET hive.merge.mapfiles = true;
SET hive.merge.mapredfiles = true;
SET hive.merge.size.per.task = 256000000;
SET hive.merge.smallfiles.avgsize = 134217728;
SET hive.exec.compress.output = true;
SET parquet.compression = snappy; 
INSERT OVERWRITE TABLE db_name.table_name
SELECT *
FROM db_name.table_name;

这个方法其实就是使用Hive作业从一个表或分区中读取数据然后重新覆盖写入到相同的路径下。必须为合并文件的Hive作业指定一些类似上面章节提到的一些参数,以控制写入HDFS的文件的数量和大小。

合并一个非分区表的小文件方法:

SET mapreduce.job.reduces = <table_size_MB/256>;
SET hive.exec.compress.output = true;
SET parquet.compression = snappy;
INSERT OVERWRITE TABLE db_name.table_name
SELECT *
FROM db_name.table_name
SORT BY 1;

合并一个表分区的小文件:

SET mapreduce.job.reduces = <table_size_MB/256>;
SET hive.exec.compress.output = true;
SET parquet.compression = snappy;

INSERT OVERWRITE TABLE db_name.table_name
PARTITION (part_col = '<part_value>')
SELECT col1, col2, ..., coln
FROM db_name.table_name
WHERE part_col = '<part_value>'
SORT BY 1;

合并一个范围内的表分区的小文件:

SET hive.merge.mapfiles = true;
SET hive.merge.mapredfiles = true;
SET hive.merge.size.per.task = 256000000;
SET hive.merge.smallfiles.avgsize = 134217728;
SET hive.exec.compress.output = true;
SET parquet.compression = snappy;
SET hive.exec.dynamic.partition.mode = nonstrict;
SET hive.exec.dynamic.partition = true;

INSERT OVERWRITE TABLE db_name.table_name
PARTITION (part_col)
SELECT col1, col2, ..., coln, part_col
FROM db_name.table_name
WHERE part_col BETWEEN '<part_value1>' AND '<part_value2>';

2.2.2 新接入数据做数据合并后在load进hive

新表dwd层及以后可以通过设置这些参数。

Hive会在本身的SQL作业执行完毕后会单独起一个MapReduce任务来合并输出的小文件。在这里插入图片描述
但这个设置仅对Hive创建的文件生效,比如使用Sqoop导数到Hive表,或者直接抽数到HDFS等,该方法都不会起作用。

2.2.3 mapreduce 定义规范

定义文件输出个数大小,定义reduce数量,减少输出文件数

3fsimage 离线分析hdfs内容

fsimage文件是NameNode中关于元数据的镜像,一般称为检查点,它是在NameNode启动时对整个文件系统的快照。包括mr操作中 都会对edit以及fsimage做操作修改,可以说fsimage就是整个hdfs的目录清单,通过对其进行分析,可以分析出hdfs上小文件的分布情况

3.1创建hive表 存储元数据,做分析用

CREATE TABLE fsimage_info_csv(
 path string, 
 replication int, 
 modificationtime string, 
 accesstime string, 
 preferredblocksize bigint, 
 blockscount int, 
 filesize bigint, 
 nsquota string, 
 dsquota string, 
 permission string, 
 username string, 
 groupname string)
ROW FORMAT SERDE 
 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ( 
 'field.delim'=',', 
 'serialization.format'=',') 
STORED AS INPUTFORMAT 
 'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
 'hdfs://Direction_Wind/apps/hive/warehouse/Direction_Wind.db/fsimage_info_csv';

3.2 处理fsimage文件

3.2.1获取fsimage文件:

hdfs dfsadmin -fetchImage /data

3.2.2从2进制文件解析:

hdfs oiv -i /data/fsimage_0000000003621277730 -t /temp/dir -o /data/fs_distribution -p Delimited -delimiter “,”(-t使用临时文件处理中间数据 不加的话全部使用内存 容易OOM)
(hdfs oiv -p FileDistribution -i fsimage_0000000003621277730 -o fs_distribution )

3.2.3加载进hive中

hdfs dfs -put /data/fs_distribution hdfs://Direction_Wind/apps/hive/warehouse/Direction_Wind.db/fsimage_info_csv/
Hive : MSCK REPAIR TABLE fsimage_info_csv;

3.2.4 统计文件整体情况

hdfs oiv -p FileDistribution -i fsimage_0000000003621277730 -o fs_distribution
当前文件总体状况(3.21)

totalFiles = 64324882
totalDirectories = 3895729
totalBlocks = 62179776
totalSpace = 331986259384110
maxFileSize = 269556045187

3.2.5 一级目录一级目录差查看谁下 的小文件多

SELECT
    dir_path ,
    COUNT(*) AS small_file_num 
FROM
    (    SELECT
            relative_size,
            dir_path 
        FROM
            (    SELECT
                    (
                    CASE filesize < 4194304 
                        WHEN TRUE 
                        THEN 'small' 
                        ELSE 'large' 
                    END)  AS relative_size,
                    concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2], '/'
                    ,split(PATH,'\/')[3], '/',split(PATH,'\/')[4], '/', split(
                    PATH,'\/')[5]) AS dir_path 
                FROM
                    Direction_Wind.fsimage_info_csv 
                WHERE
                    permission not LIKE 'd%'
                    ) t1
        WHERE
            relative_size='small') t2 
GROUP BY
    dir_path  desc
ORDER BY
    small_file_num
    limit 1000

表数据量多大 中途用了多种拆分方式 分散做统计

from (
  select `path`,`replication`,`modificationtime`,`accesstime`,`preferredblocksize`,`blockscount`,`filesize`,`nsquota`,`dsquota`,`permission`,`username`,`groupname` ,floor(rand() * 8) as part from fsimage_info_csv
) t
insert into fsimage_info_csv_pt1 select `path`,`replication`,`modificationtime`,`accesstime`,`preferredblocksize`,`blockscount`,`filesize`,`nsquota`,`dsquota`,`permission`,`username`,`groupname`  where part = 0
insert into fsimage_info_csv_pt2 select `path`,`replication`,`modificationtime`,`accesstime`,`preferredblocksize`,`blockscount`,`filesize`,`nsquota`,`dsquota`,`permission`,`username`,`groupname`  where part = 1
insert into fsimage_info_csv_pt3 select `path`,`replication`,`modificationtime`,`accesstime`,`preferredblocksize`,`blockscount`,`filesize`,`nsquota`,`dsquota`,`permission`,`username`,`groupname`  where part = 2
insert into fsimage_info_csv_pt4 select `path`,`replication`,`modificationtime`,`accesstime`,`preferredblocksize`,`blockscount`,`filesize`,`nsquota`,`dsquota`,`permission`,`username`,`groupname`  where part = 3
insert into fsimage_info_csv_pt5 select `path`,`replication`,`modificationtime`,`accesstime`,`preferredblocksize`,`blockscount`,`filesize`,`nsquota`,`dsquota`,`permission`,`username`,`groupname`  where part = 4
insert into fsimage_info_csv_pt6 select `path`,`replication`,`modificationtime`,`accesstime`,`preferredblocksize`,`blockscount`,`filesize`,`nsquota`,`dsquota`,`permission`,`username`,`groupname`  where part = 5
insert into fsimage_info_csv_pt7 select `path`,`replication`,`modificationtime`,`accesstime`,`preferredblocksize`,`blockscount`,`filesize`,`nsquota`,`dsquota`,`permission`,`username`,`groupname`  where part = 6
insert into fsimage_info_csv_pt8 select `path`,`replication`,`modificationtime`,`accesstime`,`preferredblocksize`,`blockscount`,`filesize`,`nsquota`,`dsquota`,`permission`,`username`,`groupname`  where part = 7
insert overwrite table fsimage_info_csv_partition2 partition(pt) 
select * 
, concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2]) as pt 
from fsimage_info_csv;

3.2.5.1查找1级目录的 文件结果:

在这里插入图片描述

3.2.5.2查找2级目录的文件数量:
select dir_path,countn from (
        select dir_path,sum(countn) as countn
        from (
                SELECT
                dir_path 
                ,count(*) as countn
                from (
                        select concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2]
                                        ) as dir_path
                        FROM
                            Direction_Wind.fsimage_info_csv_pt1 
                            where  concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2] ) != '/apps/hive'
                  ) t1
                group by dir_path 
                union all
                SELECT
                dir_path 
                ,count(*) as countn
                from (
                        select concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2]
                                        ) as dir_path
                        FROM
                            Direction_Wind.fsimage_info_csv_pt2 
                            where  concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2] ) != '/apps/hive'
                  ) t1
                group by dir_path
                union all
                SELECT
                dir_path 
                ,count(*) as countn
                from (
                        select concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2]
                                        ) as dir_path
                        FROM
                            Direction_Wind.fsimage_info_csv_pt3 
                            where  concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2] ) != '/apps/hive'
                  ) t1
                group by dir_path
                union all
                SELECT
                dir_path 
                ,count(*) as countn
                from (
                        select concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2]
                                        ) as dir_path
                        FROM
                            Direction_Wind.fsimage_info_csv_pt4 
                            where  concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2] ) != '/apps/hive'
                  ) t1
                group by dir_path
                union all
                SELECT
                dir_path 
                ,count(*) as countn
                from (
                        select concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2]
                                        ) as dir_path
                        FROM
                            Direction_Wind.fsimage_info_csv_pt5 
                            where  concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2] ) != '/apps/hive'
                  ) t1
                group by dir_path
                union all
                SELECT
                dir_path 
                ,count(*) as countn
                from (
                        select concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2]
                                        ) as dir_path
                        FROM
                            Direction_Wind.fsimage_info_csv_pt6 
                            where  concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2] ) != '/apps/hive'
                  ) t1
                group by dir_path
                union all
                SELECT
                dir_path 
                ,count(*) as countn
                from (
                        select concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2]
                                        ) as dir_path
                        FROM
                            Direction_Wind.fsimage_info_csv_pt7
                            where  concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2] ) != '/apps/hive'
                  ) t1
                group by dir_path
                union all
                SELECT
                dir_path 
                ,count(*) as countn
                from (
                        select concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2]
                                        ) as dir_path
                        FROM
                            Direction_Wind.fsimage_info_csv_pt8
                            where  concat('/',split(PATH,'\/')[1], '/',split(PATH,'\/')[2] ) != '/apps/hive'
                  ) t1
                group by dir_path
        ) unionp
        group by dir_path
) orderp
order by countn desc
limit 30

在这里插入图片描述
不包含hive的结果:
在这里插入图片描述

3.2.5.3查找3级目录的的 文件大小小于4mb的文件数量:

这一步就是在sql上增加一个 filesize 大小的where条件
不包含hive排序结果:
在这里插入图片描述

3.2.5.4 hive下查找4级目录的的文件结果 文件小于4mb的数量:

在这里插入图片描述

3.2.5.5 hive下查找5级目录的的文件结果 文件小于4mb的数量:

在这里插入图片描述

4 处理历史文件中hive小文件并跳过大文件的方案

使用Hive来压缩表中小文件的一个缺点是,如果表中既包含小文件又包含大文件,则必须将这些大小文件一起处理然后重新写入磁盘。如上一节所述,也即没有办法只处理表中的小文件,而保持大文件不变。

FileCrusher使用MapReduce作业来合并一个或多个目录中的小文件,而不会动大文件。它支持以下文件格式的表:

  • TEXTFILE
  • SEQUENCEFILE
  • AVRO
  • PARQUET

它还可以压缩合并后的文件,不管这些文件以前是否被压缩,从而减少占用的存储空间。默认情况下FileCrusher使用Snappy压缩输出数据。

FileCrusher不依赖于Hive,而且处理数据时不会以Hive表为单位,它直接工作在HDFS数据之上。一般需要将需要合并的目录信息以及存储的文件格式作为输入参数传递给它。

为了简化使用FileCrusher压缩Hive表,我们创建了一个“包装脚本”(wrapper script)来将Hive表的相关参数正确解析后传递给FileCrusher。

crush_partition.sh脚本将表名(也可以是分区)作为参数,并执行以下任务:

  • 在合并之前收集有关表/分区的统计信息
  • 计算传递给FileCrusher所需的信息
  • 使用必要参数执行FileCrusher
  • 在Impala中刷新表元数据,以便Impala可以查看合并后的文件
  • 合并后搜集统计信息
  • 提供合并前和合并后的摘要信息,并列出原始文件备份的目录位置

当FileCrusher运行时,它会将符合压缩条件的文件合并压缩为更大的文件,然后使用合并后的文件替换原始的小文件。合并后的文件格式为:
“crushed_file--<some_numbers>”

原始文件不会被删除,它们会被移动的备份目录,备份目录的路径会在作业执行完毕后打印到终端。原始文件的绝对路径在备份目录中保持不变,因此,如果需要回滚,则很容易找出你想要拷贝回去的目录地址。例如,如果原始小文件的目录为:

/user/hive/warehouse/prod.db/user_transactions/000000_1/user/hive/warehouse/prod.db/user_transactions/000000_2

合并后会成为一个文件:

/user/hive/warehouse/prod.db/user_transactions/crushed_file-20161118102300-0-0

原始文件我们会移动到备份目录,而且它之前的原始路径我们依旧会保留:

/user/admin/filecrush_backup/user/hive/warehouse/prod.db/user_transactions/000000_1/user/admin/filecrush_backup/user/hive/warehouse/prod.db/user_transactions/000000_2

本文提到的crush_partition.sh github全路径为:
https://github.com/asdaraujo/filecrush/tree/master/bin

脚本的方法如下所示:

Syntax: crush_partition.sh <db_name> <table_name> <partition_spec> [compression] [threshold] [max_reduces]

具体参数解释如下:
db_name - (必须)表所存储的数据库名
table_name -(必须)需要合并的表名
partition_spec -(必须)需要合并的分区参数,有效值为:

  • “all” – 合并非分区表,或者合并分区表的所有分区内的文件
  • 指定分区参数,参数必须用引号引起来,例如:
    • “year=2010,state=‘CA’”
    • “pt_date=‘2016-01-01’”
      compression -(可选,默认Snappy)合并后的文件写入的压缩格式,有效值为:snappy, none (for no compression), gzip, bzip2 and deflate。
      threshold -(可选,默认0.5)符合文件合并条件的相对于HDFS block size的百分比阈值,必须是 (0, 1] 范围内的值。默认的0.5的意思是小于或等于HDFS block size的文件会被合并,大于50%的则会保持不变。
      max_reduces -(可选,默认200)FileCrusher会被分配的最大reduce数,这个限制是为了避免在合并非常大的表时分配太多任务而占用太多资源。所以我们可以使用这个参数来平衡合并文件的速度以及它在Hadoop集群上造成的开销。
Hadoop:HDFS应用实践(1) Hadoop:HDFS应用实践(1) 实验题目:HDFS应用实践——网易云热评采集与存储模块 实验环境: 操作系统:Windows 10 虚拟机环境:VMware Workstation 16 Pro Linux系统:CentOS 7 开发工具:IntelliJ IDEA 2020.2.1 x64 JDK环境:JDK 1.8.0_301 Hadoop版本:3.2.2 实验内容: ​ 该网易云热评采集与存储模块主要有以下几个功能:上传网易云热评文件、下载网易云热评文件、复制网易云 阅读详情

相关推荐

离线分析fsimage文件进行数据深度分析

HDFS元数据分析

有问题的请私信或关注v【技术印记】留言 1432

HDFS——fsimage

【前言】在《HDFS——editLog文件》一文中提到了namenode(后面简称nn)的元数据信息由editlog和fsimage文件组成。editlog文件记录对文件系统的写操作,f...

hncscwc的博客 3504

HDFS中fsimage和edits究竟是什么

fsimage和edits是Hadoop HDFS(Hadoop分布式文件系统)中的两个关键组件,用于存储文件系统的元数据,以确保文件系统的持久性和一致性。在理解它们的作用之前,我们先了解一下HDFS的基本工作原理。HDFS采用了一种分布式文件系统的架构,其中数据被划分成块并分布在不同的数据节点上,而元数据(文件和目录的信息)则由单独的组件进行管理。元数据的持久性和一致性非常重要,因为文件系统的正确操作依赖于它们。

清平乐的技术专栏 504

HDFS : Fsimage与Edits 详解

Fsimage Edits详解 NameNode元数据解析 (1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载edits和fsimage文件到内存。 (2)客户端对元数据进行增删改的请求。 (3)namenode记录操作日志,更新滚动日志。 (4)namenode在内存中对数据进行增删改查。 Fsimage保存了最新的元数据检查点,在H...

1万+

【计算机三级-数据库技术】操作题大题(第1套)

从触发器的语法中可知,【1】处应该填写的是执行触发器的表,【2】处应该填写指定在表或视图上执行哪些数据修改语句时将激活触发器的关键字。使用FOR或AFTER选顶定义的触发器为后触发器,即只有在引发触发器执行的语句中的操作都已成功执行,并且所有的约束检查也成功完成后,才执行触发器。转换成新的独立的模式,模式的属性由联系本身的属性及两个实体的键构成,主键由两端实体的键组合而成。实体的转换:在从ER图转换为关系模式时,一个实体转换成一个关系模式,实体的属性就是关系模式的属性,实体的键就是关系的主键。

放纵小开爱的博客 1096

MOSFET导通电阻Rdson全解析:物理组成、公式推导与工程选型要点

在功率电子设计中,MOSFET作为核心开关器件,其导通电阻Rdson直接决定导通损耗与系统效率。从半导体物理角度看,Rdson并非单一固定值,而是由源极电阻、沟道电阻、累积层电阻、JFET区电阻、漂移区电阻及衬底电阻等多个分量串联而成,并随栅极驱动电压、结温以及击穿电压等级发生显著变化。理解Rdson的物理来源与数学表达,有助于工程师在低压大电流与高压小电流等不同场景中合理选型、优化驱动电压并准确估算热损耗。文章从沟道电阻公式出发,深入剖析耐压与导通电阻的物理矛盾、温度系数的影响规律,并给出数据手册参数的正

weixin_29163857的博客 175

0464-如何离线分析HDFS的FsImage查找集群小文件

Fayson的github: https://github.com/fayson/cdhproject 推荐关注微信公众号:“Hadoop实操”,ID:gh_c4c535955d0f,或者扫描文末二维码。 1.文档编写目的 随着Hadoop集群数据量的增长,集群中也同时会存在大量的小文件,即文件Size比HDFS的Block Size(默认128MB)小的多的文件。Hadoop集群中存在大量的...

Hadoop_SC的博客 1522

QTabWidget动态标签页管理:从代码创建到UI设计的实战指南

本文深入探讨了QTabWidget动态标签页管理的实战技巧,涵盖从纯代码创建到UI设计器布局的两种核心方法。详细讲解了如何动态添加、插入、关闭标签页,并管理其内容与生命周期。文章还提供了标签页精细化控制、界面优化(如设置图标、样式表)以及构建简易多文档编辑器的进阶实战案例,帮助开发者灵活应对数据监控、多文档编辑等复杂界面需求。

omega的博客 859

如何离线分析HDFS的FsImage查找集群小文件

章编写目的 随着Hadoop集群数据量的增长,集群中也同时会存在大量的小文件,即文件Size比HDFS的Block Size(默认128MB)小的多的文件。Hadoop集群中存在大量的小文件对集群造成的影响如下: 1.对NameNode的内存造成很大的压力以及性能问题,在HDFS中任何文件、目录或者block在NameNode内存中均以对象的方式表示(即元数据),默认每个元数据对象约占150b...

蘑菇丁的专栏 2106

UE4/5项目GPU崩溃?可能是Windows的TDR机制在搞鬼!深入浅出聊聊TdrDelay与显卡超时

本文深入探讨了UE4/5项目中GPU崩溃的常见原因,揭示了Windows TDR机制的工作原理及其对渲染进程的影响。通过调整TdrDelay参数和优化GPU负载,提供了解决显卡超时问题的实用方案,帮助开发者提升项目稳定性。

weixin_30691649的博客 406

Win11笔记本BIOS设置避坑大全:Secure Boot、RST、UEFI引导,一次讲清

本文详细解析了Win11笔记本BIOS设置中的关键问题,包括Secure Boot、Intel RST和UEFI引导的配置方法,帮助用户避开双系统安装中的常见陷阱。特别针对不同品牌笔记本的BIOS界面差异,提供了实用的操作指南和优化建议,确保系统兼容性和启动效率。

weixin_29251131的博客 680

离线分析HDFS的FsImage查找集群小文件

统计中有两个重要参数parent_id和instr(path,'/',1,2)这两个参数主要表示指定统计的HDFS目录以及目录钻取深度,instr()函数中的最后一个参数即为目录钻取深度(如果为parent_id=1为根目录“/”,钻取深度则为2,即根目录下所有的数据目录,需要钻取根深的目录则依次递增)。如下统计方式主要基于Hive库和表的统计分析,统计Hive中所有库存的数据文件数、Block数量、文件总大小(bytes)及平均文件大小(bytes)。2.使用hdfs oiv命令解析FsImage文件。

qq_36864672的博客 625

RK3588+YT9215快速拓展以太网口

YT9215支持7个端口的非阻塞数据传输,确保高效的数据流处理;在开发过程中,最重要的一点就是YT9215与RK3588的GMAC连接和配置部分,下面是gmac1对应dtsi文件的修改,包括注释掉rgmii_phy1对应的mdio1,以及gmac1对应的phy-handle部分,同时将gmac1修改成1000Mbps全双工模式。这就是最简单,最快速的RK3588拓展网口的方法了,如果需要用到交换芯片的其他功能,那就不可以直接使用原厂提供的bin,而是需要对YT9215进行另外的驱动开发。

带着耳朵取流浪的博客 2777

利用fsimage分析HDFS小文件

在Hive中,所谓的小文件是指文件大小远小于HDFS块大小的文件,通常小于128 MB,甚至更少。这些小文件可能是Hive表的一部分,每个小文件都包含一个或几个表的记录,它们以文本格式存储。存储空间占用过多:在Hadoop生态系统中,每个小文件都将占用一定的存储空间,而且每个小文件也需要一个块来存储。如果存在大量的小文件,将浪费大量的存储空间。处理延迟:小文件数量过多,会引起大量IO操作,导致处理延迟。查询性能下降:小文件用于分区和表划分,可能导致查询延迟并降低查询性能。

bigdata_player 1073

EPLAN 电气制图(六):电机正反转副勾主电路绘制

【插入】→【设备】→选择 “SIE.3RV2011-1AA15”(Q1)和 “SIE.1TL0001-1DB3”(M1),放置于图纸左侧。生成端子排 X3:【端子排导航器】→新建编号 “1-20”,部件 “PXC.3211814”,放置于电机上方,功能文本标注 “电机端子”。属性设置:双击结构盒,在 “显示设备标识符” 中输入位置代号(如 “+ 柜外”),并在 “格式” 选项卡中调整线型与颜色。实用技巧:勾选【选项】→【设置】→【图形的编辑】中的 “绘制带有空白区域的结构盒”,可使元件布局更清晰。

电工 2020

【AI理论学习】手把手推导扩散模型:Diffusion Models(DDPM)

生成扩散模型DDPM如下图所示分为前向、逆向两个过程,它首先通过不断往原始清晰数据中添加噪声使其变成标准高斯噪声(前向过程),而后期望从标准高斯噪声中还原原始数据(逆向过程)。若能实现,那便可从已知的标准高斯分布中采样一个噪声数据,而后利用DDPM模型生成符合原始数据分布的新数据。 Diffusion模型包含两个过程:数学符号:y∝xy\propto xy∝x:y正比于x,即y随着x增大而线性增大。 条件概率:贝叶斯公式:p(A∣B)=p(B∣A)×p(A)p(B)p(A|B)=\frac{p(B|A)\

小哲的博客 1498

HDFS小文件分析保姆级详解

(统计文件整体情况: hdfs oiv -p FileDistribution -i fsimage_0000000012255765347 -o fs_distribution )两个/tmp目录临时文件140W小文件,需要规范使用清理临时目录,可以清理出HDFS44.4T数据,腾出133.3T左右存储空间。hive表小文件最多的表77w+,超过10w小文件的12个,5w小文件的42个,超过1w的158个。目录中查找过期文件按大小排序 -type 按类型进行查找,d查找目录,f查找文件。

sunxunyong的博客 686

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

fsimage文件丢失_HDFS中小文件的排查方式之分析fsimage

问题cloudera manager监控页面HDFS大部分机器出现类似告警"存在隐患 : DataNode 有 xxxxxx个块。 警告阈值:500,000 块。",cm给出的建议:这是 DataNode 运行状况检查,用于检查 DataNode 是否含有过多的块。如果 DataNode 含有过多的块,可能影响 DataNode 的性能。具有大量块数的 DataNode 将需要较大的 java ...

weixin_32819955的博客 511

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

大数据HDFS集群运维之小文件统计

随着公司集群规模越来越大,数据增长越来越快,文件Size比HDFS的Block Size(默认128MB)小的多的文件,小文件治理也迫在眉睫。目前采用离线分析Namenode元数据的方式进行统计分析。提示:以下是本篇文章正文内容,下面案例可供参考使用Fsimage文件可以获取到HDFS的文件情况,使用sql进行统计分析能获取到集群文件使用情况,具体看业务需要,运维人员也方便对现HDFS集群做出更好的判断。

weixin_51100441的博客 857

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

HDFS自定义小文件分析功能

前言 看完本文的标题,可能有读者会心想:HDFS为什么会与小文件分析挂钩呢?Hadoop的设计初衷不是偏向于存储单位体量规模较大的文件的吗?设计这样的功能有什么实际用途呢?这背后其实是有很多内容可以讲的,说起HDFS中的小文件,我们并不是关心它到底有多小,而是在于它太多.而文件太多的原因往往在于其外部程序写入单个文件的量太小导致,在同样规模待写入数据量的前提下,单位文件过小显然会造成大批量的

走在前往架构师的路上 6213

HDFS中小文件的排查方式之分析fsimage

问题 cloudera manager监控页面HDFS大部分机器出现类似告警"存在隐患 : DataNode 有 xxxxxx 个块。 警告阈值:500,000 块。",cm给出的建议: 这是 DataNode 运行状况检查,用于检查 DataNode 是否含有过多的块。如果 DataNode 含有过多的块,可能影响 DataNode 的性能。具有大量块数的 DataNode 将需要较大的 java 堆并且可能遇到较长时间的垃圾回收暂停。另外,大量块数可能表明存在许多小文件。不会为处理许多小文件

刀锋 1845

HDFS中小文件的排查方式之分析fsimage 问题

cloudera manager监控页面HDFS大部分机器出现类似告警"存在隐患 : DataNode 有 xxxxxx 个块。 警告阈值:500,000 块。",cm给出的建议: 这是 DataNode 运行状况检查,用于检查 DataNode 是否含有过多的块。如果 DataNode 含有过多的块,可能影响 DataNode 的性能。具有大量块数的 DataNode 将需要较大的 java 堆并且可能遇到较长时间的垃圾回收暂停。另外,大量块数可能表明存在许多小文件。不会为处理许多小文件而优化 HDFS,

萌兔兔MMQ!! 900

一种分析HDFS文件变化及小文件分布情况的方法

文档编写目的 目前各个企业都在利用Hadoop大数据平台,每天都会通过ETL产生大量的文件到hdfs上,如何有效的去监测数据的有效性,防止数据的无限增长导致物理资源跟不上节奏,我们必须控制成本,让有限的资源发挥大数据的极致功能。本文介绍如何去分析hdfs上的文件变化情况,以及老生常谈的小文件的监控情况的一种实现方式。 实现方式说明 本次分析方案有两种: 利用hdfs的api文档,通过hdfs实例的listStatus方法递归出hdfs上所有的文件及目录的具体情况,包括path、ower、size等重要属性

卢说 804

hive 小文件分析

5、统计叶子目录下小文件数据量(4194304 H字节,即

sunxunyong的博客 702

主机和HDFS小文件解析

【代码】主机和HDFS小文件解析。

HomieJ的博客 626
上一篇: 数据上报服务
下一篇: 空0012
Direction_Wind
博客等级 码龄8年 6437粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Direction_Wind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值