运行我的首个mapreduce程序

之前整了套hadoop的实验集群,部署过程在这篇博文里做了记录:http://blog.csdn.net/strangerzz/article/details/45040441。不过那时候还只是4个节点,只开启了hdfs,后来一直没有时间搞。最近项目组刀片机又空出来了几台,正好被我拿来扩充我的小集群,将节点数量扩充到了9台,有了余量多部署一个secondary-namenode,datanode数量也增加到了7台,另外忙里偷闲学习了怎么配置yarn跑mapreduce。
顺便一说,yarn是hadoop2.0之后才有的,手头有本书是hadoop1.x的,网上的资料不少也是hadoop1.x的,都没有yarn的相关资料。

首先在namenode(也就是我这里的hadoop0)上试了一下执行start-yarn.sh,之后执行jps就可以看到ResourceManager进程了,也可以通过web访问hadoop0:8088查看集群的状态。
这时访问web发现节点数为0,但是可以执行hadoop自带的example。比如我在hdfs上建立了/input文件夹,里面放了一些文件

hadoop jar /opt/hadoop/share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.6.0-sources.jar org.apache.hadoop.examples.WordCount /input  /output

可以统计hdfs中/input文件夹下的文件的文件中的每个单词出现的次数,并将结果输出到hdfs上的/output文件夹里(如果/output已经存在的话就会失败,所以每次跑的时候要换个输出路径或者把原来的结果删掉)
因为这时候mapred-site.xml中的mapreduce.framework.name属性的值默认为local,也就是在namenode单机执行的。
修改hadoop文件夹中etc/hadoop/mapred-site.xml为:

<configuration>
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
</configuration>

这样提交的任务就可以分布式执行了。但是要注意,此时因为yarn中的nodes为0,所以没有实际可以执行的tasktracker节点,只有namenode在做jobtracker,所以提交的任务会一直处于Apps Pending状态,不能实际运行。查看datanode节点上的yarn的log发现,nodeManager认为resourcesManager的ip为0.0.0.0,所以连接resourcesManager反复失败,所以yarn中实际没有开启的nodeManager节点。

修改yarn-site.xml,加上这个配置:

    <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>hadoop0</value>
    </property>

也就是设置一下resourcesManager的地址,重启yarn,就可以在yarn的web上看到目前有若干节点,以及他们各自的状态了。

再次执行hadoop的exapmle,mapreduce可以执行了,但是却报了个错误:

Container launch failed for container_1430820352489_0001_01_000007 : org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:mapreduce_shuffle does not exist

网上查找资料发现,这是Hadoop的一个bug,auxService本来应该是有默认值的,但是不手动设置的话还是会报错。再次修改hadoop文件夹中的etc/hadoop/yarn-site.xml,加上这个参数:

    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>

重启yarn后提交任务,OK,终于顺利跑完了。只是速度比单机的时候慢了很多。毕竟hadoop是为了处理大文件设计的,启动mapreduce有其本身的固定消耗,所以处理小文件反而不如单机跑快。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值