Centos7下编译CDH版本hadoop源码支持Snappy压缩
1 下载snappy包并编译
wget https://github.com/google/snappy/releases/download/1.1.3/snappy-1.1.3.tar.gz
tar xvfz snappy-1.1.3.tar.gz
cd snappy-1.1.3/
./configure
make
sudo make install
ls -lh /usr/local/lib |grep snappy
2 编译hadoop源码
cd hadoop-2.6.0-cdh5.7.0
mvn package -DskipTests -Pdist,native,docs -Dtar
异常
第一个异常 jdk版本不对 修改编译版本为jdk1.7
第二个异常 ssl远程连接关闭 SSLHandshakeException: Received fatal alert: handshake_failure
修改环境变量 增加maven参数 export MAVEN_OPTS='-Dhttps.protocols=TLSv1.2'
[root@hdp1 /mnt/software/hadoop-2.6.0-cdh5.7.0]#source /etc/profile
3 之后编译成功
4 重新解压编译好的hadoop tar包 部署
[root@hdp1 /mnt/software/hadoop-2.6.0-cdh5.7.0/hadoop-dist/target]#pwd
/mnt/software/hadoop-2.6.0-cdh5.7.0/hadoop-dist/target
cp hadoop-2.6.0-cdh5.7.0.tar.gz /mnt/software/
tar -zvxf hadoop-2.6.0-cdh5.7.0.tar.gz
5 检查snappy压缩支持
成功支持
6 重新格式化集群
删除之前的hdfs文件目录 然后 重新格式化 遇到点问题 openssl文件缺失
拷贝 hdp1下面的libcrypto.so文件 到 hdp2 hdp3 hdp4 解决问题
7 最后自己用之前的Sqoop导出mysql数据到hdfs启用snappy压缩 验证
sqoop import --connect jdbc:mysql://hdp1:3306/company --username root --password yourpasswd --target-dir /temp --delete-target-dir --num-mappers 1 --fields-terminated-by "\t" --query 'select name,sex from staff where id <=1 and $CONDITIONS;' --compression-codec org.apache.hadoop.io.compress.SnappyCodec;
去hdfs查询结果 发现成功保存为snappy格式