本帖最后由 pig2 于 2014-2-6 22:07 编辑
这是我做的答案,有什么有问题的地方大家一起讨论一下。
1. 考虑后,决定使用 MR 来实现,于是使用Java,用一个MR Job完成这个事情:
https://gist.github.com/anonymous/8802923
2.
2.1 使用 find + sed 来实现:
- find /home/ocetl/app/hadoop -exec sed -i 's/\$HADOOP_HOME\$/\/home\/ocetl\/app\/hadoop/g' {} \;
复制代码
2.2 直接使用ssh的参数- #!/bin/bash
- if [ $# -ne 1 ]
- then
- echo "Usage: `basename $0` {command}"
- exit
- fi
-
- for i in H1 H2 H3 H4 H5 H6 H7 H8 H9 H10
- do
- echo "$i:"
- ssh $i "$1"
- done
复制代码
3.
3.1 不了解,HDFS用了缓存
3.2 问题是当硬盘空间很大,而内存页面缓存很少的时候,DN的Block report需要很长时间生成,而此时 FSVolumeSet 锁是锁住的,因此所有读写操作都无法执行,最终导致那些操作超时。此问题是建议提供一种方法使block report不需要持有FSVolumeSet锁,从而不会导致那些任务失败。
4. 只是替换分隔符从空格到逗号,以及增加搜索关键字列表:
https://gist.github.com/anonymous/8803741
5. 第五题的程序是什么?
6.
hosts:增加局域网主机名和ip对应关系,省得再记住ip;
hostname:该主机名,克隆虚拟机的时候经常需要这么做;
fstab:修改挂载点,加新硬盘的时候会需要;
profile, bash.bashrc: 修改系统范围环境变量时经常用;
network/interfaces:配置静态IP时需要。
7
7.1
https://gist.github.com/anonymous/8804298
7.2 可以使用Profiler来对性能进行评估分析,比如Eclipse的TPTP,或者JProfiler。可以观察不同函数调用次数和以及占用时间,从而减少调用次数,以及优化函数内部。
|