hadoop streaming -archives 解压jar、zip、tar.gz的验证

1、archives作用描述:

Hadoop中DistributedCache方法之一(其他参考文章后面的参考文章) ,作用是 将指定文件分发到各个Task的工作目录下,并对名称后缀为“.jar”、“.zip”,“.tar.gz”、“.tgz”的文件自动解压,默认情况下,解压后的内容存放到工作目录下名称为解压前文件名的目录中,比如压缩包为dict.zip,则解压后内容存放到目录dict.zip中。为此,你可以给文件起个别名/软链接,比如dict.zip#dict,这样,压缩包会被解压到目录dict中。

2、测试jar文件(基本直接摘抄参考文档的)

$ ls test_jar/
file  file1    file2 
file = this is file1(实验的时候这里搞错了,应该是用file1,对结果无影响,不做修改了)
file2 = this is file2
$ jar cvf cache.jar -C test_jar/ .
$ hdfs dfs -put cache.jar /user/work/cachefile
#touch 一个input.txt文件,然后put到 /user/work/cachefile
$ hdfs dfs -cat /user/root/samples/cachefile/input.txt
cache/file   (cache是解压后的目录名,用#重定义的别名,参加下面的)
cache/file2

HADOOP_HOME=/home/hadoop/hadoop-2.3.0-cdh5.1.3
$HADOOP_HOME/bin/hadoop fs -rmr /cacheout/

$HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.3.0-cdh5.1.3.jar  -archives  /user/work/cachefile/cache.jar#cache  -Dmapred.map.tasks=1  -Dmapred.reduce.tasks=1  -Dmapred.job.name="Experiment"  -input "cachefile/input2.txt"   -output "/cacheout/"  -mapper "xargs cat"  -reducer "cat"
 
hadoop fs -cat /cacheout/*
this is file 2
this is file1

3、测试zip & tar.gz

分别打包zip , tar.gz的压缩包,put到hdfs继续测试。

-archives  /user/work/cachefile/cache.tar.gz#cache \    只修改后缀名,会报文件找不到的错误

查错:确认是否能解压,将mapper 改成:

-mapper "ls cache" \

发现:jar文件 :结果有4个文件,分别是META-INF、file、file1、file2

zip & tar.gz:只有一个,是test_jar的目录名

然后查看3种包的压缩文件,显然是解压成功了,找不到文件的原因是目录问题,这个就要详细研究下3中打包方式了,不再赘述。:

            

总结:-archives是一个很实用的参数,但是使用中尤其要注意目录问题。

参考:

http://blog.javachen.com/2015/02/12/hadoop-streaming.html

http://hadoop.apache.org/docs/r2.6.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/HadoopStreaming.html#Working_with_Large_Files_and_Archives

http://dongxicheng.org/mapreduce-nextgen/hadoop-distributedcache-details/

时间: 2024-08-02 19:26:28

hadoop streaming -archives 解压jar、zip、tar.gz的验证的相关文章

linux 常用命令 – 解压文件(zip,rar,gz,tar.gz)

Linux下自带了一个unzip的程序可以解压缩文件, 解压命令是:unzip filename.zip 同样也提供了一个zip程序压缩zip文件,命令是 zip filename.zip files 会将files压缩到filename.zip 另外看看你的文件的后缀名,不同的后缀的文件解压和压缩的命令都不一样 总结一下 1.*.tar 用 tar –xvf 解压 2.*.gz 用 gzip -d或者gunzip 解压 3.*.tar.gz和*.tgz 用 tar –xzf 解压 4.*.bz

Linux中下载、解压、安装.tar.gz文件

一.将解压包发送到linux服务器上: 1.在windos上下载好.tar.gz文件后,通过winscp等SFTP客户端传送给linux 2.在linux中通过wget命令直接下载 #wget [选项] [下载地址] wget常用参数: -b:后台下载(默认下载到当前目录) -O:用自定义的名字保存下载文件.下载下来的文件默认会用“下载地址的最后一个“/”符号后面的字符串来命名”,而我们可以使用“-O 新文件名” 来重新命名. -limit-rate:限速下载,如wget --limit-rat

linux commands - 一次性解压多个tar.gz文件

1 echo *.tar.gz | xargs -n 1 tar -zxvf list所有tar.gz文件,然后利用xargs将其作为参数传给tar命令.-n 1表示每次传一个参数. xargs: https://www.cnblogs.com/wangqiguo/p/6464234.html 阅读目录 为什么要用xargs,问题的来源 xargs是什么,与管道有什么不同 xargs的一些有用的选项 回到顶部 为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的

贴一段java读取hdfs 解压gz zip tar.gz保存到hdfs的代码

package main.java; import java.io.*;import java.util.LinkedList;import java.util.List;import java.util.zip.*; import org.apache.commons.compress.archivers.ArchiveException; import org.apache.commons.compress.archivers.ArchiveInputStream; import org.a

[Java] Java 打包成jar包 和 解压jar包

解压jar包 jar xf xxx.jar 打包成jar包 方法一:通过jar命令 jar命令的用法: 下面是jar命令的帮助说明: 用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ... 选项包括:     -c  创建新的归档文件     -t  列出归档目录     -x  解压缩已归档的指定(或所有)文件     -u  更新现有的归档文件     -v  在标准输出中生成详细输

C# .NET 使用第三方类库DotNetZip解压/压缩Zip文件 (ZT)

DotNetZip on CodePlex: http://dotnetzip.codeplex.com/ 详细的可以看源代码--总之感觉比SharpZipLib好用.而且DotNetZip支持VB,C#以及任何.NET语言. 加压:(从CodePlex上偷过来的) using (ZipFile zip = new ZipFile()) { // add this map file into the "images" directory in the zip archive 把这个PN

[转]unzip解压windows zip乱码的处理

[转]unzip解压windows zip乱码的处理 http://blog.sina.com.cn/s/blog_6c9d65a101012gz0.html 朋友从windows传过来的zip文件,我解压之后就乱码,很郁闷. 之前有一个方法,用命令行把文件的编码变成utf8,之后再解压或解压后再转. 具体方法:http://blog.sina.com.cn/s/blog_6c9d65a10100nev8.html 不过很麻烦,今天找到一个更快捷的方法: unzip -O 字符集   xxx.z

换个新的思路 代替解压jar包 例证:wechat4j 框架中的templateMsg类

很多朋友在写java的程序的时候都喜欢用第三方的jar包和框架,有可能遇到jar包中的内容已经跟不上官方开发者文档的更新,导致部分内容出错了,这个时候可能就要放弃这个jar的使用,但是这个jar中的其他的东西都很好,这个时候我们应该怎么办呢. 首先,肯定是利用jd_gui.exe去解压jar包,然后修改源文件,再重新编译.这个方法比较率直.听起来思路不错,但是中途会遇到很多问题,比如修改完源文件之后,再编译的过程中,有包的名字和结构的问题出现,类似不再复述. 其次有一个方案是拷贝源码使用,并修改

linux ubuntu12.04 解压中文zip文件,解压之后乱码

在windows下压缩后的zip包,在ubuntu下解压后显示为乱码问题 1.zip文件解压之后文件名乱码: 第一步 首先安装7zip和convmv(如果之前没有安装的话) 在命令行执行安装命令如下: sudo apt-get install p7zip-full convmv 第二步 假设zip文件名为y05文档.zip,那么先进入zip文件所在的目录,然后命令行执行 LANG=C 7z x y05文档.zip convmv -f cp936 -t utf8 -r --notest * 2.文