Hadoop Tips

1、MapReduce计数器


2、hadoop fs 和hadoop dfs的区别?(注意还有一个hadoop dfsadmin)

  粗略的讲,fs是个比较抽象的层面,在分布式环境中,fs就是dfs;但在本地环境中,fs是local file system,这个时候dfs就不能用。


3、将hadoop的jar包添加到classpath,举例walker在/etc/profile中添加了:

1
export  CLASSPATH=.: /home/walker/hadoop-1 .2.1/*: /home/walker/hadoop-1 .2.1 /lib/ *


4、HBase中为什么要有Column Family?


5、从python角度理解map/reduce:Python内建函数之——filter,map,reduce 。


6、MapReduce Job(摘自《Hadoop实战(第2版)——3.2 MapReduce 计算模型》)

  在Hadoop中,每个MapReduce任务都被初始化为一个Job。每个Job又可以分为两个阶段:Map阶段和Reduce阶段。这个两个阶段分别用两个函数来表示,即Map函数和Reduce函数。Map函数接收一个<key, value>形式的输入,然后产生同样为<key, value>形式的中间输出,Hadoop会负责将所有具有相同中间key值的value集合到一起传递给Reduce函数,Reduce函数接收一个如<key, (list of values)>形式的输入,然后对这个value集合进行处理并输出结果,Reduce的输出也是<key, value>形式的。


7、如果copyFromLocalFile过程中出现下面类似错误,可能是local文件系统上crc文件原因。abc.txt文件的crc文件为.abc.txt.crc,注意最前面有个点。参考:HADOOP中的CRC数据校验文件

1
2
3
4
5
6
7
8
9
10
11
12
13
2015-11-25 14:21:14,743 INFO org.apache.hadoop.fs.FSInputChecker: Found checksum error: b[0, 16384]=53514c69746520666f726d61742
org.apache.hadoop.fs.ChecksumException: Checksum error: /usr/local/.../xxx.txt at 0
     at org.apache.hadoop.fs.FSInputChecker.verifySum(FSInputChecker.java:350)
     at org.apache.hadoop.fs.FSInputChecker.readChecksumChunk(FSInputChecker.java:294)
     at org.apache.hadoop.fs.FSInputChecker.read1(FSInputChecker.java:228)
     at org.apache.hadoop.fs.FSInputChecker.read(FSInputChecker.java:195)
     at java.io.DataInputStream.read(DataInputStream.java:83)
     at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:56)
     at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:110)
     at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:263)
     at org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:1632)
     at org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:1610)
     at org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:1582)


8、Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputFormat的map任务数量) 


9、关于输入压缩文件

(0)、查看当前支持哪些格式,在hadoop/conf/core-site.xml配置文件中,查找配置项io.compression.codecs的值。

(1)、可以在SetMRInfo中这样设置:

1
job.getConfiguration().set( "io.compression.codecs" "org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec" );

(2)、Hadoop 压缩实现分析

(3)、GZIP、LZO、Zippy/Snappy压缩算法应用场景小结

(4)、hadoop对于压缩文件的支持


10、设置输出gzip压缩格式。(hadoop深入研究:(九)——mapreduce中的压缩

1
2
3
4
import  org.apache.hadoop.io.compress.GzipCodec;  
 
TextOutputFormat.setCompressOutput(job,  true );
TextOutputFormat.setOutputCompressorClass(job, GzipCodec. class );


11、mapred.reduce.slowstart.completed.maps (map完成多少百分比时,开始shuffle)。例如:

1
job.getConfiguration().setFloat( "mapred.reduce.slowstart.completed.maps" 0 .9f);


12、grep查找hdfs文件内容。(对HDFS上多个文件并行执行grep操作

1
2
3
hadoop fs - ls  /我是 /HDFS/ 目录 | \
awk  '{print $8}'  | \
xargs  -n 1 -I {} -P 10  bash  -c  "hadoop fs -cat {} | zgrep '要查找的字符串'"


13、HDFS查看目录大小。

1
2
3
4
5
6
单位Byte:
bin /hadoop  fs - du  / |  sort  -n
单位MB:
bin /hadoop  fs - du  / |  awk  -F  ' '   '{printf "%.2fMB\t\t%s\n", $1/1024/1024,$2}'  sort  -n
单位GB,大于1G:
bin /hadoop  fs - du  / |  awk  -F  ' '   '{num=$1/1024/1024/1024; if(num>1){printf "%.2fGB\t\t%s\n", num, $2} }'  sort  -n


14、关于BytesWritable。

1、两个坑。

(1)、getBytes()返回的byte数组后面可能有无效内容。(Hadoop使用ByteWritable时的一个注意事项

(2)、像下面这样在Reduce中遍历迭代器时,并没有重新new对象,只是用set方法替换内容。(Hadoop BytesWritable的一些有趣发现

1
2
3
for  (BytesWritable item : values) {
     //item是同一个对象
}

2、反序列化BytesWritable。

1
2
3
4
5
6
for  (BytesWritable item : values) {
     XXXXObject xObj =  new  XXXXObject();
     byte [] bs =  new  byte [item.getLength()];  
     System.arraycopy(item.getBytes(),  0 , bs,  0 , item.getLength());  
     VipcloudUtil.DeserializeObject(bs, xObj);
}


*** walker ***

本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1357489如需转载请自行联系原作者

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值