hadoop文件系统上的小文件合并-Hadoop Archives
1. 什么是Hadoop archives
Hadoop archives是特殊的档案格式。一个Hadoop archive对应一个文件系统目录。 Hadoop archive的扩展名是.har。Hadoop archive包含元数据(形式是_index和_masterindx)和数据(part-)文件。_index文件包含了档案中的文件的文件名和位置信息。
2. 创建archives
创建archives是一个Map/Reduce job。你应该在map reduce集群上运行这个命令。
用法:hadoop archive -archiveName name -p <parent> <src>* <dest>
(1) -archiveName用来指定要创建的archive的文件名,必须以.har结尾,例如:foo.har;
(2) 参数"-p"为src path的前缀
示例1:
hadoop archive -archiveName IotBillBackup201805.har -p /IotBillBackup201805 /har/IotBillBackup201805
在上面的例子中,/IotBillBackup201805目录下的所有文件会被归档到这个文件系统目录下/har/IotBillBackup201805/IotBillBackup201805.har。
示例2:
hadoop archive -archiveName foo.har -p /user/hadoop dir1 dir2 /user/zoo/
在上面的例子中,/user/hadoop/dir1 和 /user/hadoop/dir2 会被归档到这个文件系统目录下/user/zoo/foo.har。
注意:当创建archive时,源文件不会被更改或删除。
3. 访问archives
hdfs dfs -ls har:///har/IotBillBackup201805/IotBillBackup201805.har
hdfs dfs -ls har:///user/zoo/foo.har
4. 解压archives
(1) 串行解压
# 把IotBillBackup201805.har中的文件全部解压到/IotBillBackup201805目录下
hdfs dfs -cp har:///har/IotBillBackup201805/IotBillBackup201805.har/* hdfs:/IotBillBackup201805
hdfs dfs -cp har:////user/hadoop/dir1 hdfs:/user/zop/newdir1
hdfs dfs -cp har:////user/hadoop/dir2 hdfs:/user/zop/newdir2
(2) 并行解压(Map/Reduce job),使用DistCp:
hadoop distcp har:///har/IotBillBackup201805/IotBillBackup201805.har/* hdfs:/IotBillBackup201805
启动一个Mapreduce任务来完成解压
5. archives的局限性
(1) 创建archive文件要消耗和原文件一样多的硬盘空间;
(2) archive文件不支持压缩,尽管archive文件看起来象已经被压缩过了;
(3) archive文件一旦创建就无法改变,这就意味这你要改一些东西的话,你需要重新创建archive文件。
hadoop文件系统上的小文件合并-Hadoop Archives的更多相关文章
- Hadoop实战项目:小文件合并
项目背景 在实际项目中,输入数据往往是由许多小文件组成,这里的小文件是指小于HDFS系统Block大小的文件(默认128M),早期的版本所定义的小文件是64M,这里的hadoop-2.2.0所定义的小 ...
- Hadoop MapReduce编程 API入门系列之小文件合并(二十九)
不多说,直接上代码. Hadoop 自身提供了几种机制来解决相关的问题,包括HAR,SequeueFile和CombineFileInputFormat. Hadoop 自身提供的几种小文件合并机制 ...
- Hadoop经典案例(排序&Join&topk&小文件合并)
①自定义按某列排序,二次排序 writablecomparable中的compareto方法 ②topk a利用treemap,缺点:map中的key不允许重复:https://blog.csdn.n ...
- Hadoop记录-hive merge小文件
1. Map输入合并小文件对应参数:set mapred.max.split.size=256000000; #每个Map最大输入大小set mapred.min.split.size.per.no ...
- hive小文件合并设置参数
Hive的后端存储是HDFS,它对大文件的处理是非常高效的,如果合理配置文件系统的块大小,NameNode可以支持很大的数据量.但是在数据仓库中,越是上层的表其汇总程度就越高,数据量也就越小.而且这些 ...
- HDFS操作及小文件合并
小文件合并是针对文件上传到HDFS之前 这些文件夹里面都是小文件 参考代码 package com.gong.hadoop2; import java.io.IOException; import j ...
- Hive merge(小文件合并)
当Hive的输入由非常多个小文件组成时.假设不涉及文件合并的话.那么每一个小文件都会启动一个map task. 假设文件过小.以至于map任务启动和初始化的时间大于逻辑处理的时间,会造成资源浪费.甚至 ...
- hive优化之小文件合并
文件数目过多,会给HDFS带来压力,并且会影响处理效率,可以通过合并Map和Reduce的结果文件来消除这样的影响: set hive.merge.mapfiles = true ##在 map on ...
- MR案例:小文件合并SequeceFile
SequeceFile是Hadoop API提供的一种二进制文件支持.这种二进制文件直接将<key, value>对序列化到文件中.可以使用这种文件对小文件合并,即将文件名作为key,文件 ...
随机推荐
- 二叉搜索树 [四边形不等式优化区间dp]
二叉搜索树 [四边形不等式优化区间dp] 题目描述 有 \(n\) 个结点,第 \(i\) 个结点的权值为 \(i\) . 你需要对它们进行一些操作并维护一些信息,因此,你需要对它们建立一棵二叉搜索树 ...
- 用python进行实际地址经纬度提取
实际地址经纬度提取 请求接口: https://apis.map.qq.com/ws/place/v1/suggestion/ 所需参数: 参数名称 是否必须 参数类型 说明 keyword 是 St ...
- JavaScript正则表达式的模式匹配教程,并且附带充足的实战代码
JavaScript正则表达式的模式匹配 引言 正文 一.正则表达式定义 二.正则表达式的使用 三.RegExp直接量 (1)正则表达式初体验 (2)深入了解正则 字符类 重复 选择 分组与引用 指定 ...
- js的事件循环和任务队列
js 异步.栈.事件循环.任务队列 在开发中经常遇到js的异步问题,为了方便理解,记录下来,随时回顾. 以下的所有代码都是在浏览器环境下运行 在浏览器中js的运行是依赖浏览器js引擎来解析的,并且是在 ...
- Netbox 开源 IPAM 管理工具搭建详细流程
原文链接:Netbox 开源 IPAM 管理工具搭建详细流程 参考资料:https://netbox.readthedocs.io/en/stable/ PostgreSQL数据库安装 1.yum 下 ...
- JavaScript面向对象的学习
1.面向过程与面向对象 1.1面向过程 面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候再一个一个的依次调用就可以了. 1.2面向对象 面向对象是把事务分解成为一个 ...
- 基于postman的api自动化测试实践
测试的好处 每个人都同意测试很重要,但并不是所有人都会去做.每当你添加新的代码,测试可以保证你的api按照预期运行.通过postman,你可以为所有api编写和运行测试脚本. postman中的测试 ...
- 跳转语句 break 和 continue
break跳出循环体,结束本次循环. continue结束本次循环. for(var i=0; i<5; i++){ if(i == 3) break; document.write(" ...
- MySql 错误:In aggregated query without GROUP BY, expression #1 of SELECT list contains....
前段时间做sql注入的时候 使用group_concat时,出现标题上的错误.经查阅一位大佬的博客,成功解决!故写此博文! 当mysql的sql_mode是only_full_group_by的时候 ...
- (Android图片内存优化)Picasso加载图片 教程。。详细版
Picasso 是 Android 上一个强大的图片下载和缓存库. 示例代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Picasso.with( ...