大数据开发--hadoop压缩 snappy测试

摘要:

  我们用Apache或者CDH下载下来的hadoop安装包来安装hadoop是不支持snappy压缩的,我们可以查看$HADOOP_HOME/lib/native,最开始里面是空的。或者执行hadoop checknative -a来查看支持的压缩,发现压缩格式基本都是false。如果要用snappy压缩,需要重新编译hadoop。下面我们来编译hadoop。

一、编译准备

  • 部署JAVA环境
  • 安装maven
  • 安装Protocol Buffer
  • 安装Findbugs
    以上安装过程可以参考之前的博客或参考网上其他教程。

为了支持native,我们需要手动去安装支持这些压缩的本地库,具体操作如下:

$>yum install -y openssl openssl-devel svn ncurses-devel zlib-devel libtool
$>yum install -y snappy snappy-devel bzip2 bzip2-devel lzo lzo-devel lzop autoconf automake

二、开始编译
首先我们先到官网下载hadoop的源码包,我这里使用的CDH版本的hadoop,下载包的版本为hadoop-2.6.0-cdh5.7.0-src.tar.gz。

首先将源码包解压,我这里解压到app目录下。

tar -zxvf hadoop-2.6.0-cdh5.7.0-src.tar.gz -C ~/app

然后进入到解压好的app/hadoop-2.6.0-cdh5.7.0-src目录下

执行如下命令开始编译

mvn clean package -Pdist,native -DskipTests -Dtar

编译需要下载很多依赖包,根据个人网络情况编译时间不定,需要等待一段时间。
如果最后显示BUILD SUCCESS,则表示编译成功。我们来查看下压缩是否支持

hadoop checknative -a

大数据开发--hadoop压缩 snappy测试_第1张图片
如上图所示,hadoop已经支持各种压缩了。

三、编译遇到的问题
1、在编译的时候,pom默认是从cdh的lib库里面下载依赖包,但是有一些lib在上面已经找不到了。我这里在settings.xml添加了阿里的镜像地址。


		nexus-aliyun
		central
		Nexus aliyun
		http://maven.aliyun.com/nexus/content/groups/public
/

2、可能是公司网络的原因,我最开始编译了好多次都失败了。报有一些包无法找到,但是我按照报错的信息在镜像库里面却可以找到这些包。最后我在家编译一次通过。如果有遇到这种情况,可以换个网络再编译试试。

四、测试
首先,我们要在core-site.xml这个配置文件当中添加这个配置项


    io.compression.codecs
    
    org.apache.hadoop.io.compress.GzipCodec,
    org.apache.hadoop.io.compress.DefaultCodec,
    org.apache.hadoop.io.compress.BZip2Codec,
      com.hadoop.compression.lzo.LzoCodec,
      org.apache.hadoop.io.compress.Lz4Codec,
    org.apache.hadoop.io.compress.SnappyCodec
    

然后配置mapred-site.xml,重启hadoop。

 
      mapreduce.output.fileoutputformat.compress 
      true
 
             
 
      mapreduce.output.fileoutputformat.compress.codec 
      org.apache.hadoop.io.compress.SnappyCodec
 

我在MySQL里面建了一张表user_click,表里面有数据
大数据开发--hadoop压缩 snappy测试_第2张图片
然后使用sqoop将该表导入到HDFS里面

sqoop import \
--connect jdbc:mysql://localhost:3306/test \
--username root \
--password 123456 \
--delete-target-dir \
--table user_click \
--fields-terminated-by ','

执行完后,查看HDFS 目录/user/hadoop/user_click下,数据文件是以.snappy为后缀的,说明测试成功。

你可能感兴趣的:(Hadoop,sqoop)