我从https://downloads.cloudera.com/demo_vm/vmware/cloudera-demo-vm-cdh4.0.0-vmware.tar.gz
下载了虚拟机我发现系统启动后,下面列出的服务正在运行。
的hadoop-0.20-MapReduce的JobTracker的
Hadoop的0.20-MapReduce的的TaskTracker
Hadoop的纱线节点管理器
Hadoop的纱线的ResourceManager
Hadoop的MapReduce的historyserver
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)
......
有人可以建议可能出错的地方。为什么错误指向无效配置?
答案 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上导出了变量,但是我认为这个变量会覆盖它(需要验证)。