Hadoop 常用指令

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. 然后再尝试去集群上跑

原文地址:https://www.cnblogs.com/hopelee/p/7063154.html