前言
离线处理和批处理 无论公司大小,都是类似的
大部分是日志
Compression 压缩 磁盘少 节省空间,减少开销 ,缺点:加大cpu的开销,如果你生生产上CPU很紧缺, 就不建议使用压缩了
lossless √没有损失的压缩 生产上肯定用这个 压缩不丢失 上产和学习在这个方面
Lossy 有小部分丢失
一:压缩格式的介绍和对比
其中要注意的是否支持分割
bzip2是支持分割的,
而loz是yes if indexed 输入索引,如果有索引就能分割
Compression Format: gzip/bzip2/lzo/snappy
Split 压缩在文件的是否支持分割,如果不能分割就要用task
大数据上要分流而至
查询hadoop是否支持压缩
在bin目录下面 hadoop checknative 执行这个命令
Hadoop需要编译一下
在lib下面 有个native 这里需要自己编译
寻找博客自己编译
Lzo就这个压缩,需要一额外的插件架包 其他的都是hadoop的压缩
压缩比和压缩速度是成反比的
二:压缩比
格式:以它为例子
8 core i7 CPU
• 8GB memory
• 64 bit CentOS
• 1.4GB Wikipedia Corpus 2-gram text input
三:压缩在hadoop中的应用
Compression in Hadoop 配置文件 这里配置工作当中你将要用到的所有压缩在要在这里配置
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,
</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.BZip2Codec</value>
</property>
在哪里查到 hadoop.apache.org 在左下角,配置文件中
四:整个生产中的过程
五注意:
六:操作
创建一张表 在hive上创建的表格
create table page_views(
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
查看一下表,然后加载数据进来
create table page_views_bzip2
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
as select * from page_views;
CTAS
load data local inpath '/home/hadoop/data/page_views.dat' overwrite into table page_views;
set key=value;
set key;
set hive.exec.compress.output; 这个参数是是否使用压缩输出
这是默认的压缩形式
Set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.DefaultCodec
我们可以更改为我们自己认为的形式BZIp2
Set mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.BZIp2Codec;
我们可以看一下
Set mapreduce.output.fileoutputformat.compress.codec;
我们在创建一张表 这张表相当于把数据导进来
create table page_views_bzip2
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
as select * from page_views;
看一下数据量 看一下原来数据量和现在数据量的都是多少,不要有丢失
Select count(1)from page_views:
Select count(1)from page_views_bzip2;
然后看一下大小
Hadoop fs -du -h 加上他的路径