`
thecloud
  • 浏览: 882649 次
文章分类
社区版块
存档分类
最新评论

hadoop 集群配置

 
阅读更多


今天做了一下hadoop集群的相关配置,搞了半天才搞定,中间遇到了大概两个问题。先说基本配置吧:

1、下载jdk、hadoop安装文件,最好下载 *.tar.gz文件,这样直接解压就可以了,配置路径主要是在/etc/profile中配置,配置完成后,使用 source /etc/profile使配置生效;

比如我有三个主机,一个master,两个slaves,那么首先我在三台机上都配置好jdk,(输入命令 java -version 有显示版本就ok了)。

2、配置ssh :一般的ubuntu系统的话是有自带的,可以不用下载,或者使用sudo apt-get ssh命令下载

完成后,进入用户目录,一般是:/home/username,使用 ls -al 查看当前文件夹中是否有.ssh文件夹,若没有,则创建一个,接着
使用命令 ssh-keygen -t rsa ,然后点击两次确认,进入 .ssh目录,使用命令:cp id_rsa.pub authorized_keys;

使用 ls 可以看到: authorized_keys id_rsa id_rsa.pub,复制 authorized_keys 到salves节点: scp authorized_keys salve1@ip_address:/home/username/.ssh/authorized_keys id_ ,然后输入用户名和密码就可以了;
输入ssh localhost 、ssh salve1,ssh salve2 ,看是否可以无密码登录,是则ok。

3、配置hadoop ,可以只在master上面配置(在配置这个之前,最好先在每个节点的/etc/hosts里面做些ip和主机名的映射):

配置文件如下:

core-site.html:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/username/hadoop/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
hdfs-site.html:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>dfs.replication</name>
<!--设置一个数据块存储的份数-->
<value>2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/username/hadoop/hadoopfs/data1,/home/username/hadoop/hadoopfs/date2</value>
</property>

<property>
<name>dfs.name.dir</name>
<value>/home/username/hadoop/hadoopfs/name1,/home/username/hadoop/hadoopfs/name2</value>
</property>
</configuration>

mapred-site.html:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
master:

master
slaves:

slave1
slave2
hadoop-env.sh里面只用配置下JAVA路径就可以了,然后把 整个hadoop的安装目录打包,拷贝到salves: scp hadoop-1.*.tar.gz salve1@ip_address:/home/username/ ;

scp hadoop-1.*.tar.gz salve2@ip_address:/home/username/ ; 然后在salves上使用命令 tar -zxvf hadoop-1.*.tar.gz解压就可以了。

下面说下我遇到的问题:

2012-09-12 23:13:41,888 ERROR org.apache.hadoop.hdfs.server.datanode.DataNode: java.net.UnknownHostException: unknown host:

这里发生错误的原因是我的salves 的/etc/hosts里面配置的机器名写错了,该过后这个问题没有了

另一个是:

2012-09-12 15:50:54,500 INFO org.apache.hadoop.ipc.Server: IPC Server handler 7 on 9000, call addBlock(/home/username/hadoop/tmp/mapred/system/jobtracker.info, DFSClient_1300323158, null) from 192.168.0.6:34780: error: java.io.IOException: File /home/botwave/hadoop/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
java.io.IOException: File /home/username/hadoop/tmp/mapred/system/jobtracker.info could only be replicated to 0 nodes, instead of 1
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1558)
	at org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:696)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:601)
	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:563)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1388)
	at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1384)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:415)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1093)
	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1382)

这里的问题还是/etc/hosts里面的问题,由于在这个文件里面一个机器名对应了两个Ip地址,所以有这个错误,注释掉一个就可以了,可以参考http://blog.csdn.net/chjjunking/article/details/6908130

总而言之,配置这个集群虽然说是参考网上的教程来的,但是学到了很多,特别是网上说要自己看logs文件,查看出错原因,这点很好,由于某种原因,我不能直接操作salves,所以,只能用 scp save1@ip_address:/home/username/hadoop-*/logs/ /home/username/tmp 下载到本机才能查看,或者ssh 链接过去使用cat,但是太多logs了,所有个人建议还是下载到本地比较好。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics