主机和HDFS小文件解析

# 主机小文件解析
查询48小时内未修改的文件
find ./ -type f -mtime +1
统计48小时之内未修改过的文件。
find ./ -type f -mtime +1  | wc -l
统计48小时之前未修改过并<10M(小文件)
find ./ -type f -mtime +1 -size -10M | wc -l
按照文件大小排序
find /var/log/ -type f -mtime +1 | xargs du --time | sort -h
按照文件大小排序,寻找前三并转换单位
find /var/log/ -type f -mtime +1 | xargs du --time | sort -h | awk -F " " '{print $1/1024 "M  " $4 }' | tail -n 3
统计目录,排序
du -h /var/log | sort -h
查找大于200M的文件排序
find /var/log -type f -size +200M | xargs du -sh |sort -h
# HDFS小文件
## fsimage离线分析
1、获取fsimage文件(将最新的Image文件下载到本地)
hdfs dfsadmin -fetchImage /home/fionn/ 
2、解析faimage文件(使用-t参数使用临时文件处理中间数据,不加全部使用内存容易OOM)
hdfs oiv -i /home/fionn/fsimage_0000000000011359839 -t  /home/fionn/tmpdir -o /home/fionn/fs_distribution -p Delimited -delimiter ','
    -i: 要处理的FSImage或XML文件。
    -t: 使用临时目录缓存中间文件,结果生成DetectCorruption或分隔输出。如果未设置,则处理器在内存中构造命名空间在输出文本之前。
    -o: 输出文件的名称。如果指定文件存在,它将被覆盖。(默认情况下输出到stdout)如果输入文件是一个XML文件,还将创建一个<outputFile>.md5文件。
    -p: 选择要应用的处理器类型针对图像文件。(XML|FileDistribution|ReverseXML|Web|Delimited|DetectCorruption)默认为Web。
    -delimiter: 要与Delimited一起使用的分隔字符串。
3、创建hive库加载HDFS元数据
create database if not exists hdfsinfo;
use hdfsinfo;
4、创建表
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';
4、上传文件
hdfs dfs -put ./fs_distribution /user/hive/warehouse/hdfsinfo.db/fsimage_info_csv
5、表查询分析
## 查询小于4M的文件
select path_dir, count(*) as small_file
from (select relative_size
           , path_dir
      from (select case
                       when filesize < 4194304
                           then 'small'
                       else 'large'
          end                                   as relative_size
                 , concat('/', split(path, '\/')[1], '/', split(path, '\/')[2], '/', split(path, '\/')[3], '/',
                          split(path, '\/')[4]) as path_dir
            from fsimage_info_csv
            where replication = 0
              and path like '/user/hive%') t1
      where relative_size = 'small'
        and path_dir is not null)  t2
group by path_dir
order by small_file desc ;




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值