首先博主用的64位ubuntu,hadoop官方只提供32位版本,这样的话启动本地库无法兼容,需要自己编译为64位版本,或下载别人编译好的64位版本。

下载好需要在etc/hadoop目录下改动以下几个配置

其中hadoop-env.sh中需要指定JAVA_HOME

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_75

core-site.xml配置

<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://xiao:9000/</value>
</property>
<property>
<name>hadoop.native.lib</name>
<value>true</value>
<description>Should native hadoop libraries, if present, be used.</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/xiao/download/hadoop-2.4.0/tmp/</value>
</property>
</configuration>

hdfs-site.xml配置

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

mapred-site.xml配置

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

yarn-site.xml配置

<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>xiao</value>
</property>
<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>
</configuration>

配置好后启动需要关闭防火墙以及安装好ssh

sudo apt-get update

sudo apt-get install openssh-server

然后格式化namenode

hadoop namenode -format

然后切换到sbin目录下启动

start-dfs.sh

start-yarn.sh

查看目录下文件

hadoop fs -ls hdfs://xiao:9000/

拷贝本地文件到hdfs下

hadoop fs -put a.txt hdfs://xiao:9000/

这一步楼主遇到一个故障

尝试了网上各种办法无效。

看了下logs里面的日志其中datanode日志无错误,namenode日志报上述错误,可见跟datanode无关,用命令查看datanode状态

按照report的数据DFS还剩下(541.63 MB)的大小,应该是可以创建的,但是抛出了这个异常,肯定是对DATANODE的剩余最小容量做了限制。

查了一下HADOOP 2.2.0的源码,org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault的方法isGoodTarget中,会对DATANODE的剩余容量进行判断:

long remaining = node.getRemaining() -
(node.getBlocksScheduled() * blockSize);
// check the remaining capacity of the target machine
if (blockSize* HdfsConstants.MIN_BLOCKS_FOR_WRITE>remaining) {
if(LOG.isDebugEnabled()) {
threadLocalBuilder.get().append(node.toString()).append(": ")
.append("Node ").append(NodeBase.getPath(node))
.append(" is not chosen because the node does not have enough space ");
}
return false;
}

然后博主清空了下目录里面的文件,剩余大小为900多M,再执行下命令,成功。

最新文章

  1. 马化腾称春节前推出微信小程序
  2. hive修改 表/分区语句
  3. Prim算法(一)之 C语言详解
  4. 临时表之IF-ELSE
  5. js之正则1
  6. iOS开发中的一些定时器
  7. sdust 2410 Mine Number
  8. linux下简单文本处理
  9. 原始启动log&amp;新log
  10. ubuntu 下安装sublime
  11. Linux中的盘符问题
  12. C语言文件操作函数大全
  13. unity android相互调用
  14. Tomcat安装和目录简介
  15. iOS开发系列
  16. two pointers
  17. Windows环境使用Nexus-3.x搭建Maven私服
  18. 2018-2019-1 20189221 《Linux内核原理与分析》第六周作业
  19. View Stack容器,按钮选择子容器
  20. gbk文件转为utf8文件

热门文章

  1. JavaScript之apply()和call()的区别
  2. 性能优化工具---top
  3. Div实现滚动条效果
  4. android UI-EditText的长度监听慎用TextWatcher
  5. 标准模板库——IO库
  6. 腾讯QQ首次在PC端采用气泡式聊天界面(from:36kr)
  7. 整理部分JS 控件 WEB前端常用的做成Jsp项目,方便今后直接用
  8. JS兼容性问题列表
  9. codeforces 632C. The Smallest String Concatenation 排序
  10. 《Pointers On C》读书笔记(第五章 操作符和表达式)