(可省略查看)(可按照“17”中的“1.修改*”来配置,无需自己编译)
1.资源准备(jar包)
(1)hadoop-2.7.2-src.tar.gz
(2)jdk-8u144-linux-x64.tar.gz
(3)snappy-1.1.3.tar.gz
(4)apache-maven-3.0.5-bin.tar.gz
(5)protobuf-2.5.0.tar.gz
2.jar包安装(注意使用root用户)
2.1--JKD解压,java环境,验证
tar -zxvf jdk-8u144-linux-x64.tar.gz -C /root/app/
vi /etc/profile
#JAVA_HOME
export JAVA_HOME=/root/app/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile
java-version
2.2--Maven解压,maven环境,验证
tar -zxvf apache-maven-3.0.5-bin.tar.gz
vi /etc/profile
#MAVEN_HOME
export MAVEN_HOME=/opt/module/apache-maven-3.0.5
export PATH=$PATH:$MAVEN_HOME/bin
source /etc/profile
mvn-version
3.编译源码
3.1--准备编译环境
yum install svn
yum install autoconf automake libtool cmake
yum install ncurses-devel
yum install openssl-devel
yum install gcc*
3.2--编译安装snappy
tar -zxvf snappy-1.1.3.tar.gz -C /root/app/
cd /root/app/snappy-1*
./configure
make
make install
# 查看snappy库文件
ls -lh /usr/local/lib | grep snappy
3.3--编译安装protobuf
tar -zxvf protobuf-2.5.0.tar.gz -C /root/app/
cd /root/app/protobuf-2*
./configure
make
make install
# 查看protobuf版本以测试是否安装成功
protoc --version
3.4--编译hadoop native
tar -zxvf hadoop-2.7.2-src.tar.gz
cd root/app/hadoop-2.7.2-src/
mvn clean package -DskipTests -Pdist,native -Dtar -Dsnappy.lib=/usr/local/lib -Dbundle.snappy
执行成功后,/root/app/hadoop-2.7.2-src/hadoop-dist/target/hadoop-2.7.2.tar.gz
即为新生成的支持snappy压缩的二进制安装包。
二、Hadoop压缩配置
1.MR支持的压缩编码
http://google.github.io/snappy/
2.压缩参数配置
io.compression.codecs(在mapred-site.xml中配置)
3.开启Map输出阶段压缩
开启map输出阶段压缩可以减少job中map和Reduce task间数据传输量。
具体配置如下:
(1)开启hive中间传输数据压缩功能
set hive.exec.compress.intermediate=true;
(2)开启mapreduce中map输出压缩功能
set mapreduce.map.output.compress=true;
(3)设置mapreduce中map输出数据的压缩方式
set mapreduce.map.output.compress.codec
=org.apache.hadoop.io.compress.SnappyCodec;
(4)执行查询语句
select count(ename) name from emp;
4.开启Reduce输出阶段压缩
当Hive将输出写入到表中时,输出内容同样可以进行压缩。属性hive.exec.compress.output控制着这个功能。
用户可能需要保持默认设置文件中的默认值false,这样默认的输出就是非压缩的纯文本文件了。
用户可以通过在查询语句或执行脚本中设置这个值为true,来开启输出结果压缩功能。
具体配置如下:
(1)开启hive最终输出数据压缩功能
set hive.exec.compress.output=true;
(2)开启mapreduce最终输出数据压缩
set mapreduce.output.fileoutputformat.compress=true;
(3)设置mapreduce最终数据输出压缩方式
set mapreduce.output.fileoutputformat.compress.codec =
org.apache.hadoop.io.compress.SnappyCodec;
(4)设置mapreduce最终数据输出压缩为块压缩
set mapreduce.output.fileoutputformat.compress.type=BLOCK;
(5)测试一下输出结果是否是压缩文件
insert overwrite local directory '/root/hivedate/distribute-result'
select * from emp distribute by deptno sort by empno desc;