1. 察看hdfs文件系统运行情况
bin/hdfs dfsadmin -report
2. 为了方便执行 HDFS 的操作指令,我们可以将需要的 Hadoop 路径写入环境变量中,便于直接执行命令。
如原本需要在 Hadoop 的安装路径下:bin/hadoop fs -ls / 才能执行的命令。我们在 ~/.bash_profile 文件中写入
export HADOOP_HOME=~/hadoop2.8.0
export PATH=$PATH:$HADOOP_HOME/bin
使用 source ~/.bash_profile 命令使当前用户的环境变量生效后,就可以直接输入 hadoop fs -ls / 来访问 HDFS 的根目录了。
3. 察看并保存部分 HDFS 上的文件内容
1. 依次察看一个比较大的文件内容
hadoop fs -cat /user/test | less
2. 保存大文件的部分内容到本地
hadoop fs -cat /user/test | head -n 100 > test
在这个过程中即使管道符后面的命令执行完了,也不会自动停止。因为会在后台默认执行管道符前面的内容,即显示文件的全部内容,此时手动中断即可。
4. 合并 HDFS 输出文件
hadoop fs -getmerge /user/ouput output.dat
上述命令中 /user/output 是 HDFS 上的输出目录,下面有很多个输出文件。该命令可以将所有这些文件合并到本地的 output.dat 文件中。
5. MapReduce 任务有多个输入时,每个 mapper 对应一个输入文件或者一个输入文件的一部分,此时可以通过环境变量来识别当前 mapper 处理的是哪个输入文件
通过 os.environ["map_input_file"] 可以获取到当前输入文件的 HDFS 完整路径。再对路径进行分割判断即可。
注意 os.path.split(path) 返回的是由路径和文件名组成的元组。如果路径为一个目录,那么返回目录,文件名为空。因此如果需要获取目录的某个特定级字段,需要手动对路径分割。
import os
os.path.split('C:/libo/test/filename')
#输出结果为 ('C:/libo/test', 'filename')
6. MapReduce 程序写完,一定要在本地测试
1. 使用 echo -e "test" | python mapper.py 测试 mapper.py 函数功能
2. 使用 echo -e "test" | python reducer.py 测试 reducer.py 函数功能
3. 使用 echo -e "test" | python mapper.py | python reducer.py 测试整体功能
4. 然后再尝试去集群上跑