10

我从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-yarn-nodemanager
hadoop-yarn-resourcemanager
hadoop-mapreduce-historyserver

  • HDFS 服务

hadoop-hdfs-namenode
hadoop-hdfs-datanode

字数统计示例运行良好并按预期生成输出

/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)
        ......

有人可以建议可能出了什么问题。为什么错误指向无效配置?

4

2 回答 2

2

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

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

然后重新启动所有服务。

例如:

$ sudo update-alternatives --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.mrv1 50
$ sudo update-alternatives --set hadoop-conf /etc/hadoop/conf.mrv1
于 2013-11-18T11:40:29.217 回答
1

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


我错过了导致上述失败的一件事。确保在 hadoop-env.sh 中,将“export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce”更改为“export HADOOP_MAPRED_HOME=/usr/lib/hadoop-0.20-mapreduce”。

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

于 2014-07-02T12:30:54.240 回答