[英]HBase with YARN throws ERROR
我在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中運行的時間進行比較來猜測,並且在主節點上運行作業時從節點的jps中沒有MR)。
這是我的一些conf:
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.applicaton.classpath來對紗線位置進行一些更改
錯誤更改為退出代碼。
UPDATE2:在應用程序日志的syslog中,它說
2015-04-24 20:34:59,164信息[主] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:為應用程序appattempt_1429792550440_0035_000002創建了MRAppMaster 2015-04-24 20:34:59,589 WARN [主] org.apache .hadoop.conf.Configuration:job.xml:嘗試覆蓋最終參數:mapreduce.job.end-notification.max.retry.interval; 無視。 2015-04-24 20:34:59,610警告[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信息[線程- 1] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:MRAppMaster收到信號。 向RMCommunicator和JobHistoryEventHandler發出信號。
任何建議請
我想您沒有正確設置hadoop集群,請按照以下步驟操作:
Hadoop配置:
步驟1:按如下所示編輯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
步驟3:編輯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>
希望這對您有幫助
解決問題超過3天后(也許是由於我對概念的誤解),我可以通過將HADOOP_CLASSPATH(如在hadoop-env中設置偽分配時所做的那樣)添加到yarn-env中來解決問題。 。
我不十分詳細。 但是,是的,希望這將來能夠對某人有所幫助。
干杯。
我在Yarn上使用Spark並收到相同的錯誤。 實際上,火花罐具有指向較舊的2.2.0版本的hadoop-client和hadoop-mapreduce-client- * jar的內部依賴性。 因此,我將這些條目包含在我正在運行的Hadoop版本的POM中,並進行了干凈的構建。
這為我解決了這個問題。 希望這對某人有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.