【问题标题】:HBase with YARN throws ERROR带有 YARN 的 HBase 抛出错误
【发布时间】:2015-06-29 21:36:48
【问题描述】:

我在 Ubuntu 14.04 上使用 Hadoop 2.5.1 和 HBase 0.98.11

我可以在伪分布式模式下运行它。现在我想在分布式模式下运行。我按照站点的说明操作,最终在 RUNTIME 中出现了一个名为“错误:org/apache/hadoop/hbase/HBaseConfiguration”的错误(而我编译代码时没有错误)。

在尝试之后,我发现如果我在 mapred-site.xml 中注释 mapreduce.framework.name 并在 yarn-site 中添加东西,我可以成功运行 hadoop。

但我认为这是单节点运行(我不知道,只是通过将运行时间与我在 Pseudo 中运行的时间进行比较来猜测,并且在 master 上运行作业时,slave 的节点 jps 中没有 MR)。

这是我的一些配置:

hdfs 站点

<property>
<name>dfs.replication</name>
<value>2</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
<!-- <property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>

<property>
<name>dfs.datanode.use.datanode.hostname</name>
<value>false</value>
</property>

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

地图红点

 <property>
   <name>mapred.job.tracker</name>
   <value>localhost:54311</value>
   <description>The host and port that the MapReduce job tracker runs
   at.  If "local", then jobs are run in-process as a single map
   and reduce task.
   </description>
 </property>

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

纱线站点

 <!-- Site specific YARN configuration properties -->

 <!--<property>
     <name>yarn.nodemanager.aux-services</name>
     <value>mapreduce_shuffle</value>
 </property>
 <property>
     <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
     <value>org.apache.hadoop.mapred.ShuffleHandler</value>
 </property>
 <property>
     <name>yarn.resourcemanager.address</name>
     <value>10.1.1.177:8032</value>
 </property>
 <property>
     <name>yarn.resourcemanager.scheduler.address</name>
     <value>10.1.1.177:8030</value>
 </property>
 <property>
     <name>yarn.resourcemanager.resource-tracker.address</name>
     <value>10.1.1.177:8031</value>
 </property>-->

非常感谢您的每一个帮助

更新:我尝试通过像这样添加 yarn.applicon.classpath 对 yarn-site 进行一些更改

https://dl-web.dropbox.com/get/Public/yarn.png?_subject_uid=51053996&w=AABeDJfRp_D31RiVHqBWn0r9naQR_lFVJXIlwvCwjdhCAQ

错误已更改为 EXIT CODE。

https://dl-web.dropbox.com/get/Public/exitcode.jpg?_subject_uid=51053996&w=AAAQ-bYoRSrQV3yFq36vEDPnAB9aIHnyOQfnvt2cUHn5IQ

UPDATE2:在应用程序日志的 syslog 中显示

2015-04-24 20:34:59,164 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:为应用程序 appattempt_1429792550440_0035_000002 创建了 MRAppMaster 2015-04-24 20:34:59,589 WARN [main] org.apache.hadoop.conf.Configuration:job.xml:尝试覆盖最终参数:mapreduce.job.end-notification.max.retry.interval;无视。 2015-04-24 20:34:59,610 WARN [main] org.apache.hadoop.conf.Configuration:job.xml:尝试覆盖最终参数:mapreduce.job.end-notification.max.attempts;无视。 2015-04-24 20:34:59,616 FATAL [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:启动 MRAppMaster 时出错 java.lang.NoSuchMethodError: org.apache.hadoop.http.HttpConfig.setPolicy(Lorg/apache/hadoop/http/HttpConfig$Policy;)V 在 org.apache.hadoop.mapreduce.v2.app.MRAppMaster.main(MRAppMaster.java:1364) 2015-04-24 20:34:59,621 INFO [Thread-1] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:MRAppMaster 收到信号。发信号通知 RMCommunicator 和 JobHistoryEventHandler。

有什么建议

【问题讨论】:

  • 请添加错误跟踪
  • 抱歉,我不确定什么是错误跟踪。顺便说一句,运行时显示的错误只是 Map 0% Reduce 0% 之后的“错误:org/apache/hadoop/hbase/HBaseConfiguration”。谢谢。
  • 这是我运行作业时出现的(不知道这是否是您提到的错误跟踪)dl-web.dropbox.com/get/Public/Pics/… 谢谢

标签: apache hadoop mapreduce hbase hadoop-yarn


【解决方案1】:

我猜您没有正确设置您的 hadoop 集群,请按照以下步骤操作:

Hadoop 配置:

第一步:编辑hadoop-env.sh如下:

# The java implementation to use.  Required.
export JAVA_HOME=/usr/lib/jvm/java-6-sun

第 2 步:现在创建一个目录并设置所需的所有权和权限

$ sudo mkdir -p /app/hadoop/tmp
$ sudo chown hduser:hadoop /app/hadoop/tmp
# ...and if you want to tighten up security, chmod from 755 to 750...
$ sudo chmod 750 /app/hadoop/tmp

第三步:编辑core-site.xml

<property>
  <name>hadoop.tmp.dir</name>
  <value>/app/hadoop/tmp</value>
</property>

<property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:54310</value>
</property>

第 5 步:编辑mapred-site.xml

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

第6步:编辑hdfs-site.xml

<property>
  <name>dfs.replication</name>
          <value>1</value>
</property>

<property>
  <name>dfs.name.dir</name>
  <value>file:///home/hduser/hadoopdata/hdfs/namenode</value>
</property>

<property>
  <name>dfs.data.dir</name>
  <value>file:///home/hduser/hadoop/hadoopdata/hdfs/datanode</value>
</property>

第 7 步:编辑yarn-site.xml

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

最后格式化你的 hdfs(你需要在第一次设置 Hadoop 集群时这样做)

$ /usr/local/hadoop/bin/hadoop namenode -format

Hbase 配置:

编辑你hbase-site.xml:

<property>
  <name>hbase.rootdir</name>
  <value>hdfs://localhost:54310/hbase</value>
</property> 

<property>
   <name>hbase.cluster.distributed</name>
   <value>true</value>
</property>

<property>
   <name>hbase.zookeeper.quorum</name>  
   <value>localhost</value>
</property>

<property>   
  <name>dfs.replication</name>   
  <value>1</value>    
</property>

 <property>       
  <name>hbase.zookeeper.property.clientPort</name>  
  <value>2181</value>                                                                                 
 </property>

 <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/local/hbase/zookeeper</value>   
 </property>                                                                                                                          

希望对你有帮助

【讨论】:

  • 我认为这和我所做的一样。在我完成 Hadoop 集群设置后,我尝试运行 PI 和 WordCount 作业,并且成功运行。所以我不知道我到底做错了什么。谢谢。
  • 哦,对不起,我的意思是我在遇到问题之前就是这样做的。然后我尝试使用 HBase 运行作业并显示错误。我尝试评论了 mapreduce.framework.name 并且我可以再次正确运行作业,但它似乎只在 1 个节点上运行。谢谢
  • 如果你还是因为我的沟通能力不好而混淆了这个想法。我设置了 mapred-site 和 yarn-site 有点像你发布的那种(但在 yarn-site 我有 yarn.nodemanager.aux-services.mapreduce_shuffle.class、yarn.resourcemanager.address、yarn.resourcemanager.scheduler.address ,yarn.resourcemanager.resource-tracker.address),我可以成功运行“hadoop jar hadoop-mapreduce-examples-2.5.1.jar pi 5 50”。但是当涉及到带有 HBase 的程序时,就会抛出错误。
  • 尝试将 HADOOP_HOME 中的 hadoop-core-*.jar 和 HADOOP_HOME/lib 文件夹中的 commons-collections-x.y.z.jar 复制到 HBASE_HOME/lib 文件夹中。
  • 我在相应的文件夹中都没有。我正在使用 Hadoop 2.5.1
【解决方案2】:

在解决问题超过 3 天后(可能是我对概念的误解),我可以通过将 HADOOP_CLASSPATH(就像我在 hadoop-env 中设置伪分发时所做的那样)添加到纱线环境。

我不太了解。但是,是的,希望这可以在将来对某人有所帮助。

干杯。

【讨论】:

    【解决方案3】:

    我在 Yarn 上使用 Spark 时遇到了同样的错误。实际上,spark jar 具有 hadoop-client 和 hadoop-mapreduce-client-* jar 的内部依赖项,它们指向旧的 2.2.0 版本。因此,我将这些条目与我正在运行的 Hadoop 版本一起包含在我的 POM 中,并进行了干净的构建。

    这为我解决了这个问题。希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 2021-07-29
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-03
      相关资源
      最近更新 更多