Hadoop archives 说明

本文介绍如何使用Hadoop创建归档文件并查看这些文件。归档文件能有效利用磁盘空间,但不会减少NameNode的内存占用,并且在执行MapReduce任务时仍会将每个文件视为单独的输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建归档文件(会执行maprreduce)

hadoop archive -archivename test.har /test/vot/  /test/har/

2.查看归档文件

hdfs dfs -ls -R har:///test/har/vot.har

hdfs dfs -ls -R har://hdfs-dns:9000/har/vot.har(外部访问)

3.说明

1创建archive文件要消耗和原文件一样多的硬盘空间

2archive文件不支持压缩,尽管archive文件看起来象已经被压缩过了。

3archive文件一旦创建就无法改变,你要改一些东西的话,你需要创新创建archive文件

4虽然解决了namenode的内存空间问

但是在执行mapreduce时,仍然会把每个文件当做一个map的输入(前提文件小于块大小)





### Hadoop `-archives` 参数使用说明 在分布式计算环境中,Hadoop 提供了多种方式来管理文件系统中的资源。其中,`-archives` 是一个非常有用的命令行选项,用于解压存档文件并将其作为软链接放置到运行时的工作目录下。 当指定 `-archives` 选项时,Hadoop 将会自动处理这些压缩包,在作业执行期间将它们解压,并创建指向已解压内容的符号链接[^1]。这使得应用程序可以方便地访问所需的库或其他依赖项而无需手动分发这些文件给集群节点。 具体来说,该参数接受逗号分隔的一个或多个 URI 列表,每个 URI 可能代表本地路径、HDFS 路径或者其他支持协议下的位置: ```bash hadoop jar your-application.jar com.example.MainClass -D some.property=value -archives hdfs://namenode/path/to/your-archive.zip#optionalLinkName ``` 上述命令中 `#optionalLinkName` 部分为可选配置;如果不提供,则默认采用档案名称去掉扩展名后的部分作为链接名字。 对于所提到的不同类型的压缩格式,默认情况下 Hadoop 支持 ZIP 和 TAR.GZ 文件。如果需要其他特定格式的支持,则可能要通过自定义实现相应的 Codec 类来进行适配[^2]。 #### 实际应用案例展示 假设有一个 MapReduce 应用程序依赖于 Python 解释器及其标准库之外的一些额外模块(比如 NumPy)。为了简化部署流程,可以把整个 Anaconda 发行版打包成 tarball 并上传至 HDFS 上某个公共可读取的位置 `/shared/libraries/python-env.tar.gz` 。接着修改提交脚本如下所示: ```bash yarn jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming*.jar \ -file mapper.py -mapper mapper.py \ -file reducer.py -reducer reducer.py \ -input /input/data.csv \ -output /output/result \ -archives hdfs:///shared/libraries/python-env.tar.gz#pyenv ``` 在这个例子里面,“pyenv”就是被创建出来的临时工作区内的相对路径,Python 程序可以通过这个路径找到所需要的环境变量和第三方库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值