標籤:
首先博主用的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,再執行下命令,成功。
hadoop配置及無法移動檔案到hdfs故障解析