hadoop处理压缩文件|如何安装hadoop本地压缩库

hadoop处理压缩文件|如何安装hadoop本地压缩库的第1张示图

『壹』 数据压缩为什么选择hadoop

hadoop对于压缩格式的是透明识别,我们的MapRece任务的执行是透明的,hadoop能够自动为我们将压缩的文件解压,而不用我们去关心。

『贰』 如何检测hadoop中gz压缩文件是否损坏

执行hive任务的时候,进入到8088的map详细进度列表,即是RUNNING MAP attempts in job_1456816082333_1354,查看最后出错的map是哪个节点或者内在容页面直接点击logs进入详细log日志查看,或者进入到节点的Hadoop的logs/userlogs目录根据jobid找到对应的目录: application_1456816082333_1354,里面有错误的文件id,然后删除掉hdfs的对应的损坏文件。

『叁』 Hadoop到底是要处理什么样的文件大文件什么是大文件举个例子来说

大数据,hadoop就是用来处理大数据的,你把你的大文件,换一个名字,大数据版,你自己就理解了。数据权量大了,普通的数据库处理不仅慢,很多都运行不了,所以只能用hadoop这样采用分布式的处理方式处理大数据。来源:商业智能和数据仓库爱好者提供,。。商业智能和云计算。。。陪训。。。。包含。。hadoop

『肆』 如何安装hadoop本地压缩库

安装配置snappy压缩[一]、 实验环境CentOS 6.3 64位Hadoop 2.6.0JDK 1.7.0_75[二]、 snappy编译安装2.1、下载源码到官网 http://code.google.com/p/snappy/ 或者到 https://github.com/google/snappy 下载源码,目前版本为 1.1.1。2.2、编译安装解压 tar -zxvf snappy-1.1.1.tar.gz ,然后以 root 用户 执行标准的三步进行编译安装:/configuremakemake install默认是安装到 /usr/local/lib ,这时在此目录下查看:[[email protected] ~]$ ls -lh /usr/local/lib |grep snappy-rw-r–r– 1 root root 229K Mar 10 11:28 libsnappy.a-rwxr-xr-x 1 root root 953 Mar 10 11:28 libsnappy.lalrwxrwxrwx 1 root root 18 Mar 10 11:28 libsnappy.so -> libsnappy.so.1.2.0lrwxrwxrwx 1 root root 18 Mar 10 11:28 libsnappy.so.1 -> libsnappy.so.1.2.0-rwxr-xr-x 1 root root 145K Mar 10 11:28 libsnappy.so.1.2.0安装过程没有错误同时能看到上面的动态库,基本表示snappy 安装编译成功。[三]、Hadoop snappy 安装配置3.1、hadoop 动态库重新编译支持snappyhadoop动态库编译参考:Hadoop2.2.0源码编译 和 Hadoop2.x在Ubuntu系统中编译源码 ,只是把最后编译的命令中增加 -Drequire.snappy :1mvn package -Pdist,native -DskipTests -Dtar -Drequire.snappy把重新编译生成的hadoop动态库替换原来的。3.2、hadoop-snappy 下载目前官网没有软件包提供,只能借助 svn 下载源码:1svn checkout http://hadoop-snappy.googlecode.com/svn/trunk/ hadoop-snappy3.3、hadoop-snappy 编译1mvn package [-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR]PS:如果上面 snappy安装路径是默认的话,即 /usr/local/lib,则此处 [-Dsnappy.prefix=SNAPPY_INSTALLATION_DIR] 可以省略,或者 -Dsnappy.prefix=/usr/local/lib编译成功后,把编译后target下的 hadoop-snappy-0.0.1-SNAPSHOT.jar 复制到 $HADOOP_HOME/lib ,同时把编译生成后的动态库 到 $HADOOP_HOME/lib/native/ 目录下:1cp -r $HADOOP-SNAPPY_CODE_HOME/target/hadoop-snappy-0.0.1-SNAPSHOT/lib/native/Linux-amd64-64 $HADOOP_HOME/lib/native/3.4、编译过程中常见错误处理① 缺少一些第三方依赖官方文档中提到编译前提需要:gcc c++, autoconf, automake, libtool, java 6, JAVA_HOME set, Maven 3②错误信息:[exec] libtool: link: gcc -shared src/org/apache/hadoop/io/compress/snappy/.libs/SnappyCompressor.o src/org/apache/hadoop/io/compress/snappy/.libs/SnappyDecompressor.o -L/usr/local/lib -ljvm -ldl -m64 -Wl,-soname -Wl,libhadoopsnappy.so.0 -o .libs/libhadoopsnappy.so.0.0.1[exec] /usr/bin/ld: cannot find -ljvm[exec] collect2: ld returned 1 exit status[exec] make: *** [libhadoopsnappy.la] Error 1或者[exec] /bin/sh ./libtool –tag=CC –mode=link gcc -g -Wall -fPIC -O2 -m64 -g -O2 -version-info 0:1:0 -L/usr/local/lib -o libhadoopsna/usr/bin/ld: cannot find -ljvm[exec] collect2: ld returned 1 exit status[exec] make: *** [libhadoopsnappy.la] Error 1[exec] ppy.la -rpath /usr/local/lib src/org/apache/hadoop/io/compress/snappy/SnappyCompressor.lo src/org/apache/hadoop/io/compress/snappy/SnappyDecompressor.lo -ljvm -ldl[exec] libtool: link: gcc -shared src/org/apache/hadoop/io/compress/snappy/.libs/SnappyCompressor.o src/org/apache/hadoop/io/compress/snappy/.libs/SnappyDecompressor.o -L/usr/local/lib -ljvm -ldl -m64 -Wl,-soname -Wl,libhadoopsnappy.so.0 -o .libs/libhadoopsnappy.so.0.0.1[ant] Exiting /home/hadoop/codes/hadoop-snappy/maven/build-compilenative.xml.这个错误是因为没有把安装jvm的libjvm.so 链接到 /usr/local/lib。如果你的系统时amd64,可以执行如下命令解决这个问题:1ln -s /usr/java/jdk1.7.0_75/jre/lib/amd64/server/libjvm.so /usr/local/lib/[四]、hadoop配置修改4.1、修改 $HADOOP_HOME/etc/hadoop/hadoop-env.sh,添加:1export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native/Linux-amd64-64/4.2、修改 $HADOOP_HOME/etc/hadoop/core-site.xml:XHTMLio.compression.codecsorg.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.SnappyCodec4.3、修改 $HADOOP_HOME/etc/hadoop/mapred-site.xml 中有关压缩属性,测试snappy:XHTMLmaprece.map.output.compresstruemaprece.map.output.compress.codecorg.apache.hadoop.io.compress.SnappyCodec[五]、测试验证全部配置好后(集群中所有的节点都需要动态库和修改配置),重启hadoop集群环境,运行自带的测试实例 wordcount,如果maprece过程中没有错误信息即表示snappy压缩安装方法配置成功。当然hadoop也提供了本地库的测试方法 hadoop checknative :[[email protected] ~]$ hadoop checknative15/03/17 22:57:59 INFO bzip2.Bzip2Factory: Successfully loaded & initialized native-bzip2 library system-native15/03/17 22:57:59 INFO zlib.ZlibFactory: Successfully loaded & initialized native-zlib libraryNative library checking:hadoop: true /usr/local/share/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0zlib: true /lib64/libz.so.1snappy: true /usr/local/share/hadoop/lib/native/Linux-amd64-64/libsnappy.so.1lz4: true revision:99bzip2: true /lib64/libbz2.so.1openssl: true /usr/lib64/libcrypto.so

『伍』 如何让Hadoop读取以gz结尾的文本格式的文件

由于我的文件是gz结尾,所以hadoop把它当作了压缩文件,然后尝试解压缩后读取,所以解压失败了。于是去问google,没有搜到能够直接解决我问题的答案,但是搜到了此处相关的源代码:LineRecordReader.java;于是尝试着去阅读代码来解决问题,这个类很简单,继承自RecordReader,没有看到next函数和readLine函数,那就应该是基类实现的。很快发现了看名字是跟压缩解码相关的代码:private CompressionCodecFactory compressionCodecs = null;…compressionCodecs = new CompressionCodecFactory(job);final CompressionCodec codec = compressionCodecs.getCodec(file);…if (codec != null) {in = new LineReader(codec.createInputStream(fileIn), job);}else{…in = new LineReader(fileIn, job);}此处file就是拿到的文件路径,可以看到,应该就是通过CompressionCode.getCode(file)函数,拿到的codec类,然后读取的时候出异常了。那怎么让MapRece程序把这个.gz文件当作普通的文本文件呢?再点进去看CompressionCodeFactory.java的代码。getCodec函数的代码如下:/*** Find the relevant compression codec for the given file based on its* filename suffix.* @param file the filename to check* @return the codec object*/public CompressionCodec getCodec(Path file) {CompressionCodec result = null;if (codecs != null) {String filename = file.getName();String reversedFilename = new StringBuffer(filename).reverse().toString();SortedMap<String, CompressionCodec> subMap = codecs.headMap(reversedFilename);if (!subMap.isEmpty()) {String potentialSuffix = subMap.lastKey();if (reversedFilename.startsWith(potentialSuffix)) {result = codecs.get(potentialSuffix);}}}return result;}就是根据文件名称匹配来得到对应的解压缩类。咋们按图索骥,去看看codecs是在哪里赋值的:/*** Find the codecs specified in the config value io.compression.codecs * and register them. Defaults to gzip and zip.*/public CompressionCodecFactory(Configuration conf) {codecs = new TreeMap<String, CompressionCodec>();List<Class<? extends CompressionCodec>> codecClasses = getCodecClasses(conf);if (codecClasses == null) {addCodec(new GzipCodec());addCodec(new DefaultCodec());} else {Iterator<Class<? extends CompressionCodec>> itr = codecClasses.iterator();while (itr.hasNext()) {CompressionCodec codec = ReflectionUtils.newInstance(itr.next(), conf);addCodec(codec);}}}看样子从配置文件里,拿不到编码相关的配置,就会默认把GzipCodec,DefaultCodec加进去。再跟到getCodecClasses(conf)函数里去:/*** Get the list of codecs listed in the configuration* @param conf the configuration to look in* @return a list of the Configuration classes or null if the attribute* was not set*/public static List<Class<? extends CompressionCodec>> getCodecClasses(Configuration conf) {String codecsString = conf.get("io.compression.codecs");if (codecsString != null) {List<Class<? extends CompressionCodec>> result = new ArrayList<Class<? extends CompressionCodec>>();StringTokenizer codecSplit = new StringTokenizer(codecsString, ",");while (codecSplit.hasMoreElements()) {String codecSubstring = codecSplit.nextToken();if (codecSubstring.length() != 0) {try {Class<?> cls = conf.getClassByName(codecSubstring);if (!CompressionCodec.class.isAssignableFrom(cls)) {throw new IllegalArgumentException("Class " + codecSubstring +" is not a CompressionCodec");}result.add(cls.asSubclass(CompressionCodec.class));} catch (ClassNotFoundException ex) {throw new IllegalArgumentException("Compression codec " +codecSubstring + " not found.",ex);}}}return result;} else {return null;}}从这个函数里能够看到编码的配置是 io.compression.codecs 。可以看到,我们必须返回非null的result,那么直接让io.compression.codecs配置成空,应该就可以了,此时返回的result里面没有任何元素。问题解决方案:试了一把,执行这个MapRece程序时,加上 -Dio.compression.codecs=, 的参数,就可以了:hadoop jar ./mptools-0.1.jar dmp.tools.mr.Grep -Dio.compression.codecs=, "adgroupId=319356697" doc val

『陆』 hadoop sequencefile 怎么使用

1.SequenceFile特点:是 Hadoop 的一个重要数据文件类型,它提供key-value的存储,但与传统key-value存储(比如hash表,btree)不同的是,它是appendonly的,于是你不能对已存在的key进行写操作。2.SequenceFile 有三种压缩态:1 Uncompressed – 未进行压缩的状2.record compressed – 对每一条记录的value值进行了压缩(文件头中包含上使用哪种压缩算法的信息)3. block compressed – 当数据量达到一定大小后,将停止写入进行整体压缩,整体压缩的方法是把所有的keylength,key,vlength,value 分别合在一起进行整体压缩3.结构组成:3.1 header数据:保存文件的压缩态标识;3.2 Metadata数据:简单的属性/值对,标识文件的一些其他信息。Metadata 在文件创建时就写好了,所以也是不能更改3.3 追加的键值对数据3.4 流存储结构:流的存储头字节格式: Header: *字节头”SEQ”, 后跟一个字节表示版本”SEQ4”,”SEQ6”.//这里有点忘了 不记得是怎么处理的了,回头补上做详细解释 *keyClass name *valueClass name *compression boolean型的存储标示压缩值是否转变为keys/values值了 *blockcompression boolean型的存储标示是否全压缩的方式转变为keys/values值了 *compressor 压缩处理的类型,比如我用Gzip压缩的Hadoop提供的是GzipCodec什么的.. *元数据 这个大家可看可不看的 4.扩展实现:4.1 MapFile 一个key-value 对应的查找数据结构,由数据文件/data 和索引文件 /index 组成,数据文件中包含所有需要存储的key-value对,按key的顺序排列。索引文件包含一部分key值,用以指向数据文件的关键位置4.2 SetFile – 基于 MapFile 实现的,他只有key,value为不可变的数据。4.3 ArrayFile – 也是基于 MapFile 实现,他就像我们使用的数组一样,key值为序列化的数字。4.4 BloomMapFile – 他在 MapFile 的基础上增加了一个 /bloom 文件,包含的是二进制的过滤表,在每一次写操作完成时,会更新这个过滤表。5.使用如下:主要是Writer和Reader对象完成文件的添加和读功能,应用demo参照下面链接,其中Map端以SequenceFileInputFormat格式接收,Map的key-value应为SequenceFile保持一致。

『柒』 我在解压hadoop压缩包的时候遇到这问题怎么办

I would go back and re-gzip the tar file though (to save space):gzip xxxxxx.x.x.tartar -zxvf xxxxxx.x.x.tar.gz想刨根问底的可以查下他的意思,在看下TAR 指令的用法,。总之:我出现这个错误时专,就是属把指令改为:tar -xvf xxxx.tar.gz然后指令就运行了。。

『捌』 hadoop框架是如何处理大量小文件的

hdfs不适合存小文件,要处理大量小文件,2个办法。一 ,小文件合并成大文件再存。二,安装hbase,以数据的形式存小文件。

『玖』 关于hadoop小文件处理

这不能被实现在现有的Hadoop。时设置的目录中,文件中的目录信息被读入Hadoop的输入已被确定房东当时就完成所有文件的MapRece,Hadoop的还是会等待输入,但房东可以想像,你能不能给Hadoop的信号,让他停止运行

『拾』 hadoop用什么压缩工具最好

hadoop用什么抄压缩工具最好填充可以按从下到上的顺序叠加选中图层control+command+m创建蒙版control+c会出现放大镜,然后可以方便选择颜色替换当前选择对象的颜色画布的控制使用空格进行抓手移动画布按command加鼠标滚轮进行画布放大和缩小control+p能够切换到像素模式查看,相当于输出png后点开图片查看的效果。control+g开启关闭网格按住option键能够看到各个对象之间的距离command+1缩小至能看到所有对象,command+2放大到选中对象到屏幕适合的大小,command+0缩小至100%Symbol共享元素,一次编辑所有地方都能够生效。

未经允许不得转载:山九号 » hadoop处理压缩文件|如何安装hadoop本地压缩库

赞 (0)