Hadoop is a framework written in Java for running applications on large clusters of commodity hardware and incorporates features similar to those of the Google File System and of MapReduce. HDFS is a highly fault-tolerant distributed file system and like Hadoop designed to be deployed on low-cost hardware.
开始搭建hadoop。这些天做的是single-node,单机模式。本周计划完成multi-node,多机模式的搭建。
我参考的教程来自于这里,这是比官方网站还要详细的教程。
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/
我在配置的过程中,走了一圈又一圈的弯路,现在记录记录。
1配置之前对使用环境的要求
必须:JRE
必须:SSH
推荐:给hadoop用户专设一个用户名和用户组
其中,SSH需要配置一下。Hadoop requires SSH access to manage its nodes, i.e. remote machines plus your local machine if you want to use Hadoop on it (which is what we want to do in this short tutorial). For our single-node setup of Hadoop, we therefore need to configure SSH access to localhost for the hadoop user we create in the previous section.
2权限修改问题
sudo创建文件夹完成之后,默认所有的权限都只给了root,应该及时地chown,chmod。
3如果你重启过namenode,你可能会遇到一个Java的IOException。
在用start-all.sh开启了hadoop之后,需要用jps检验是否真正成功开启了。
-----[标准显示]-----------
hadoop@ubuntu:/usr/local/hadoop$ jps
2287 TaskTracker
2149 JobTracker
1938 DataNode
2085 SecondaryNameNode
2349 Jps
1788 NameNode
-----[我的显示]-----------
hadoop@felicia-laptop:/usr/local/hadoop/hadoop-0.20.2$ jps
3811 JobTracker
3459 NameNode
4039 Jps
-----[解决之道]-----------
去log里面看,发现没有写入的权限,于是把相应的文件夹权限改为了rwx。
------[新的问题]-------------------
在log文件中,看到了这么一句报错信息
“Incompatible namespaceIDs in /app/hadoop/tmp/dfs/data…”我猜会不会是重启namenode那里出事儿了,google这个错误,却是如此。
------[解决之道】-------------------
每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,导致启动时失败。
只需要在每次fotmat前,先清空tmp下的所有目录.再执行hadoop namenode -format
实际上,这个问题也不完全是用户的问题。在官网上面,它被作为了一个bug。https://issues.apache.org/jira/browse/HDFS-107
4换不同的用户
user@ubuntu:~$ su - hadoop