在CDH4.0.1 VM上使用MRV1运行wordcount示例

时间:2012-10-11 02:16:26

标签: hadoop cloudera

我从https://downloads.cloudera.com/demo_vm/vmware/cloudera-demo-vm-cdh4.0.0-vmware.tar.gz

下载了虚拟机

我发现系统启动后,下面列出的服务正在运行。

  • MRV1服务

的hadoop-0.20-MapReduce的JobTracker的
Hadoop的0.20-MapReduce的的TaskTracker

  • MRV2服务

Hadoop的纱线节点管理器
Hadoop的纱线的ResourceManager
Hadoop的MapReduce的historyserver

  • HDFS服务

Hadoop的HDFS-名称节点
Hadoop的HDFS-数据节点

单词计数示例正常运行并按预期生成输出

/usr/bin/hadoop jar /usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar wordcount input output

但是,以上运行使用MRv2 - YARN框架

我的目标是使用MRv1运行。正如Cloudera文档中所建议的,我停止了MRV2服务,并编辑了/etc/hadoop/conf/mapred-site.xml

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

到“经典”(也试过“本地”)

  <property>
    <name>mapreduce.framework.name</name>
    <value>classic</value>
  </property

我预计它会使用MRV1(jobtracker和tasktracker)运行。但是,我看到以下错误:

12/10/10 21:48:39 INFO mapreduce.Cluster: Failed to use org.apache.hadoop.mapred.LocalClientProtocolProvider due to error: Invalid "mapreduce.jobtracker.address" configuration value for LocalJobRunner : "172.30.5.21:8021"
12/10/10 21:48:39 ERROR security.UserGroupInformation: PriviledgedActionException as:cloudera (auth:SIMPLE) cause:java.io.IOException: Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the correspond server addresses.
java.io.IOException: Cannot initialize Cluster. Please check your configuration for mapreduce.framework.name and the correspond server addresses.
        at org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:121)
        at org.apache.hadoop.mapreduce.Cluster.<init>(Cluster.java:83)
        ......

有人可以建议可能出错的地方。为什么错误指向无效配置?

2 个答案:

答案 0 :(得分:2)

我认为您的群集仍然指向MRv2配置目录,而不是MRv1。

在群集中指向具有高优先级的MRv1配置目录的每个节点中更新/安装hadoop-conf替代。

然后重新启动所有服务。

例如:

$ sudo update-alternatives --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.mrv1 50
$ sudo update-alternatives --set hadoop-conf /etc/hadoop/conf.mrv1

答案 1 :(得分:1)

以下答案不是我的,而是OP,这是在问题本身中发布的。


我错过了导致上述失败的一件事。确保在hadoop-env.sh中更改&#34;导出HADOOP_MAPRED_HOME = / usr / lib / hadoop-mapreduce&#34;到&#34; export HADOOP_MAPRED_HOME = / usr / lib / hadoop-0.20-mapreduce&#34;。

错误有点误导。另外,我已经在shell上导出了变量,但是我认为这个变量会覆盖它(需要验证)。