Hadoop之旅--Hadoop的一些经验总结

[b]1.map/reduce
[/b]
map:
子任务,一个map/reduce任务首先会分解成多个map子任务,会被分配到多个节点运行;
每一个map任务执行计算作业的一部分;
每个map任务执行完成之后,会产生中间文件;
reduce的任务就是将map任务产生的中间文件作为输入数据,将所有的map任务汇总输出;


[b]2.编写JAVA代码出现如下问题[/b]

[color=darkred][b]2012-4-20 19:36:55 org.apache.hadoop.util.NativeCodeLoader <clinit>
璀﹀憡: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable[/b]
[/color]

Hadoop是使用Java语言开发的,但是有一些需求和操作并不适合使用java,所以就引入了本地库(Native Libraries)的概念,通过本地库,Hadoop可以更加高效地执行某一些操作。
上述意思是说不能再如本地类库,处理的方式也比较简单:

在Hadoop的配置文件core-site.xml中可以设置是否使用本地库:

<property>
<name>hadoop.native.lib</name>
<value>true</value>
<description>Should native hadoop libraries, if present, be used.</description>
</property>

[b]3.HIVE的使用[/b]
HIVE中是等值JOIN的,也支持左右连接;
在使用写有 Join 操作的查询语句时有一条原则:应该将条目少的表/子查询放在 Join 操作符的左边。
原因是在 Join 操作的 Reduce 阶段,位于 Join 操作符左边的表的内容会被加载进内存,将条目少的表放在左边,可以有效减少发生 OOM 错误的几率。


[b]4.hadoop原生默认的压缩文件的解析[/b]
hadoop中的文件是默认压缩的,在hadoop中的API中是根据文件后缀名成来判断该文件的压缩类型的
例如test.deflate文件,其hadoop的文件压缩格式就是deflate,这种是默认的hadoop文件格式,当然还支持其他好几种压缩格式,比如Gzip,bzip2,zlib等
下面是hadoop解压文件,并输出成string的代码:
CompressionCodecFactory factory = new CompressionCodecFactory(conf);
CompressionCodec codec = factory.getCodec(p);
if (codec == null) {
throw new IOException(
String.format(
"Can't find any suitable CompressionCodec to this file:%s",
p.toString()));
}
in = fs.open(p);
CompressionInputStream cin = codec.createInputStream(in);
br = new BufferedReader(new InputStreamReader(cin, encoding),
bufferSize);


表1 Hadoop支持的压缩格式
压缩格式 工具 算法 文件扩展名 Hadoop压缩编码/解码器
DEFLATE 无 DEFLATE .deflate Org.apache.hadoop.io.compress.DefaultCodec
Gzip gzip DEFLATE .gz Org.apache.hadoop.io.compress.GzipCodec
bzip2 bzip2 bzip2 .bz2 Org.apache.hadoop.io.compress.BZip2Codec
LZO lzop LZO .lzo Com.hadoop.compression.lzo.LzopCodec
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值