大数据开发--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已经支持各种压缩了。

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

<mirror>
		<id>nexus-aliyun</id>
		<mirrorOf>central</mirrorOf>
		<name>Nexus aliyun</name>
		<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>/

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

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

<property>
    <name>io.compression.codecs</name>
    <value>
    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
    </value>
</property>

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

 <property>
      <name>mapreduce.output.fileoutputformat.compress</name> 
      <value>true</value>
 </property>
             
 <property>
      <name>mapreduce.output.fileoutputformat.compress.codec</name> 
      <value>org.apache.hadoop.io.compress.SnappyCodec</value>
 </property>

我在MySQL里面建了一张表user_click,表里面有数据
在这里插入图片描述
然后使用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为后缀的,说明测试成功。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值