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/
*
|
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 ***