在HDFS的完全分布式模式部署完毕后,现在开始执行MapReduce的一个jar包来测试集群是否工作正常:

大致流程:

1) 启动集群
2) 在本地创建输入文件
3) 进入hdfs,在hdfs中创建输入文件夹,并把本地的输入文件上传进去
4) 执行MapReduce程序
5) 进入hdfs,查看程序执行结果(输出文件)

具体操作(不做特别说明,每一步操作都在master上进行):

新建/root/hadoop/data/目录,作为测试文件存放的目录:

hadoop在哪找案例数据库 hadoop案例实战_hadoop

在这个目录下新建2个txt文件,里面随便编辑一些内容,作为wordcount程序的输入:

hadoop在哪找案例数据库 hadoop案例实战_大数据_02

hadoop在哪找案例数据库 hadoop案例实战_linux_03

查看hdfs中的根目录:

hadoop在哪找案例数据库 hadoop案例实战_分布式_04

在hdfs的根目录中创建input目录:

hadoop在哪找案例数据库 hadoop案例实战_分布式_05

通过-put指令,将本地刚创建的2个txt文件上传到hdfs的input目录中(这里记得关闭所有结点的防火墙):

hadoop在哪找案例数据库 hadoop案例实战_linux_06

master切换到${HADOOP_HOME}/share/hadoop/mapreduce目录下,让hadoop执行对应的jar包:

hadoop在哪找案例数据库 hadoop案例实战_hadoop_07


hadoop在哪找案例数据库 hadoop案例实战_hadoop_08

从这里可以体现出,用MapReduce实现运算时,分为2步,map+reduce:

hadoop在哪找案例数据库 hadoop案例实战_大数据_09

提交的job执行完成:

hadoop在哪找案例数据库 hadoop案例实战_linux_10

查看hdfs中根目录的文件,出现了output1目录,output1目录中又有了MapReduce执行运算的结果(其中第一个文件_SUCCESS是为了说明程序执行成功,里面没有内容(可以-cat试试),/tmp是系统自动添加的路径):

hadoop在哪找案例数据库 hadoop案例实战_hadoop在哪找案例数据库_11

通过-cat查看输出结果的文件,发现已经将input中的2个txt文件中的单词统计了出来:

hadoop在哪找案例数据库 hadoop案例实战_分布式_12

附:
集群守护进程无法正常启动的情况及原因:

  1. 格式化集群时,报错。
    可能的原因:
    -当前用户使用不当;
    -/etc/hosts里面ip和主机名的映射关系有误;
    -ssh免密登录配置异常;
    -jdk环境变量配置错误;
    -防火墙没有关闭。
  2. NameNode进程启动失败。
    可能的原因:
    -当前用户使用不当;
    -(经常遇到)重新格式化时,忘记删除${hadoop.tmp.dir}目录下的文件(tmp目录);
    -网络震荡,造成edit日志文件的事务ID号不连续。
  3. DataNode进程启动失败(有时还不报错,就是启动不了)。
    可能的原因:
    -/etc/hosts里面ip和主机名的映射关系有误;
    -master结点ssh免密登录此结点异常;
    -(经常遇到)重新格式化时,忘记删除${hadoop.tmp.dir}目录下的文件(tmp目录),造成DataNode的唯一标识符不在新集群中;

上述问题的解决方法(暴力):

  • 先删除每台机器上${hadoop.tmp.dir}目录下的文件(tmp目录),然后再格式化集群;
  • 最好把logs目录下的内容也清空,因为这些log都是老集群的了,没有意义。
    但是这个方法一般只适用于没有重要数据的集群,如果集群有重要数据,则不能重新格式化,会丢失数据。