Linux下搭建hadoop集群环境

小编写在前面的话

“天下武功,唯快不破”,但是如果不清楚原理,快也是徒劳。在这物欲横行,数据爆炸的年代,BigData时代到了,如果熟悉了整个hadoop的搭建过程,我们是否也能从中攫取一桶金?!

前期准备

l  两台linux虚拟机(本文使用redhat5,IP分别为 192.168.1.210、192.168.1.211)

l  JDK环境(本文使用jdk1.6,网上很多配置方法,本文省略)

l  Hadoop安装包(本文使用Hadoop1.0.4)

搭建目标

210作为主机和节点机,211作为节点机。

搭建步骤

1修改hosts文件

在/etc/hosts中增加:

2 实现ssh无密码登陆

2.1 主机(master)无密码本机登陆

直接回车,完成后会在 ~/.ssh/ 生成两个文件: id_dsa 和 id_dsa.pub 。这两个是成对出现,类似钥匙和锁。

再把 id_dsa.pub 追加到授权 key 里面 ( 当前并没有 authorized_key s文件 ) :

实验:

还是要输入密码,一般这种情况都是因为目录或文件的权限问题,看看系统日志,确实是权限问题,

.ssh下的authorized_keys权限为600,其父目录和祖父目录应为755

 

2.2 无密码登陆节点机(slave)

slave上执行:

生成.ssh目录。

 

将master上的authorized_keys复制到slave上:

实验:在master上执行

实现无密码登陆。

3 配置Hadoop

3.1拷贝hadoop

将hadoop-1.0.4.tar.gz ,拷贝到usr/local 文件夹下,然后解压。

解压命令:

3.2查看 cat /etc/hosts

3.3 配置 conf/masters 和 conf/slaves

conf/masters:

conf/slaves:

3.4 配置 conf/hadoop-env.sh

加入

3.5 配置 conf/core-site.xml

加入

3.6 配置 conf/hdfs-site.xml

加入

3.7 配置conf/mapred-site.xml

加入

 

3.8 建立相关的目录

/usr/local/hadoop/                     //hadoop数据和namenode目录

【注意】只创建到hadoop目录即可,不要手动创建data和namenode目录。

其他节点机也同样建立该目录。

3.9 拷贝hadoop文件到其他节点机

将hadoop文件远程copy到其他节点(这样前面的配置就都映射到了其他节点上),

命令:

3.10 格式化Active master(192.168.201.11)

命令:

3.11 启动集群 ./start-all.sh

现在集群启动起来了,看一下,命令:

2个datanode,打开web看一下

浏览器输入:192.168.1.210:50070

 

打完收工,集群安装完成!  

 

常见问题

1 Bad connection to FS. command aborted

 

需要查看日志,我的日志中显示:

2013-06-09 15:56:39,790 ERROR org.apache.hadoop.hdfs.server.namenode.NameNode: java.io.IOException: NameNode is not formatted.

at org.apache.hadoop.hdfs.server.namenode.FSImage.recoverTransitionRead(FSImage.java:330)

at org.apache.hadoop.hdfs.server.namenode.FSDirectory.loadFSImage(FSDirectory.java:100)

at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.initialize(FSNamesystem.java:388)

at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.<init>(FSNamesystem.java:362)

at org.apache.hadoop.hdfs.server.namenode.NameNode.initialize(NameNode.java:276)

at org.apache.hadoop.hdfs.server.namenode.NameNode.<init>(NameNode.java:496)

at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1279)

at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1288)

 

NameNode没被格式化!!!

 

解决办法:

原因是我手动建了 /usr/local/hadoop/data 和 /usr/local/hadoop/namenode,把这两个目录删除重新格式化namenode即可。

 

2 WARN org.apache.hadoop.hdfs.server.datanode.DataNode: Invalid directory in dfs.data.dir: Incorrect permission for /usr/local/hadoop/data, expected: rwxr-xr-x, while actual: rwxrwxrwx

解决办法:

/usr/local/hadoop/目录权限过高,改成chmod 755即可。

 

3 eclipse插件问题

异常1:2011-08-03 17:52:26,244 INFO org.apache.hadoop.ipc.Server: IPC Server handler 6 on 9800, call getListing(/home/fish/tmp20/mapred/system) from 192.168.2.101:2936: error: org.apache.hadoop.security.AccessControlException: Permission denied: user=DrWho, access=READ_EXECUTE, inode=”system”:root:supergroup:rwx-wx-wx

org.apache.hadoop.security.AccessControlException: Permission denied: user=DrWho, access=READ_EXECUTE, inode=”system”:root:supergroup:rwx-wx-wx

at org.apache.hadoop.hdfs.server.namenode.PermissionChecker.check(PermissionChecker.java:176)

at org.apache.hadoop.hdfs.server.namenode.PermissionChecker.checkPermission(PermissionChecker.java:111)

at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:4514)

at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPathAccess(FSNamesystem.java:4474)

at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getListing(FSNamesystem.java:1989)

at org.apache.hadoop.hdfs.server.namenode.NameNode.getListing(NameNode.java:556)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508)

at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)

at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)

at java.security.AccessController.doPrivileged(Native Method)

at javax.security.auth.Subject.doAs(Subject.java:396)

at org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)

 

解决方法:在hdfs-site.xml里加入下面的

 

 

HDFS常用命令

创建文件夹

上传文件

查看文件夹里有哪些文件

查看文件内容

删除文件

删除文件夹

相关文章推荐《WIN08+tomcat实现负载均衡

日币奖励:

本文为原创文章、首发,根据本站积分规则给予日币奖励共6枚。

AD:本站开放投稿及积分(日币),日币可兑换实物奖励,每月top3可获得礼品一份。