日期:2014-05-16 浏览次数:20424 次
建立一个三台服务器的hadoop集群,三台服务器ip和对应的主机名分别为:
?????????? 192.168.0.100:shirleyren100,
?????????? 192.168.0.101:shirleyren101,
?????????? 192.168.0.102:shirleyren102,
其中192.168.0.100为namenode,另外两台为datanode。在三台服务器上创建hadoop账号
1,在namenode上创建hadoop账号的无密码公钥方式登录
ssh-keygen \-t dsa \-P '' \-f \~/.ssh/id_dsa
? ? 将namenode的上生成的id_dsa.pub和id_dsa文件复制到datanode上,并将id_dsa.pub 文件追加到datanode 的authorized_keys 内,以保证各台服务器之间的正常通信
2,在各台服务上安装sun jdk
????
为防止不必要的错误,请尽量保证各服务器上的JDK版本和安装路径的一致,并将JAVA安装路径放到环境变量中 /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.22 export JRE_HOME=/usr/lib/jvm/java-6-sun-1.6.0.22/jre
?3,安装hadoop
?? 在namenode上安装hadoop, 将下载的压缩包解压到安装目录下即可,附件中是我配置中修改的conf/下的文件
?? 把hadoop 的安装路径添加到环境变量/etc/profile 中
export HADOOP_HOME=/home/hadoop/hadoop/hadoop-0.20.203.0 export HADOOP_CONF_DIR=/home/hadoop/hadoop/hadoop-0.20.203.0/conf
?4,在conf/hadoop-env.sh中配置JAVA路径
?? 在此文件中要把java的安装路径配置进去,即在该文件中加上以下代码
export JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.22
?5,配置conf/core-site.xml, conf/hdfs-site.xml 及conf/mapred-site.xml三个文件
??? 以下代码为最简单的配置方式,其他的属性可以根据自己的情况自行配置
?? core-site.xml:
<configuration> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop/tmp</value> <description>A base for other temporary directories.</description> </property> <property> <name>fs.default.name</name> <value>hdfs://shirleyren100:9000</value> </property> </configuration>
?hdfs-site.xml
?replication 默认为3,建议将replicatio设置为小于或等于datanode的数量
<configuration> <property> <name>dfs.name.dir</name> <value>/home/hadoop/hadoop/name</value> </property> <property> <name>dfs.data.dir</name> <value>/home/hadoop/hadoop/data</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
?mapred-site.xml:
<configuration> <property> <name>mapred.job.tracker</name> <value>shirleyren100:9001</value> </property> </configuration>
5,配置datanode
??? 将以上配置好的hadoop包直接复制到datanode上即可
?6,配置namenode的conf/masters 和conf/slaves 文件
masters: shirleyren100 slaves: shirleyren101 shirleyren102
?
?
?
?此时所有的配置就完成了,下面启动以下试试看
?首次启动的时候需要首先格式化文件系统,进入到/home/hadoop/hadoop/hadoop-0.20.203.0路径下执行以下命令
bin/hadoop namenode -format
之后在namenode上执行
bin/start-all.sh
?
此时可以使用jps命令在namenode和datanode上查看已启动的进程,
在namenode上看到的是
23550 JobTracker 16368 Jps 23215 NameNode 23462 SecondaryNameNode
?
?在datanode上看到的是
3972 DataNode 21990 Jps 4063 TaskTracker
?
??同样可以在web下查看,在浏览器输入以下地址http://192.168.0.100:50070/
?也可以执行几个hadoop的命令,验证hadoop是否正确启动
?
1,bin/hadoop dfs -mkdir input /*创建名为input的目录*/ 2,bin/hadoop dfs -put test.txt input/ /*将文件test.txt上传到input目录下*/ 3,bin/hadoop dfs -ls input/ /*查看input目录下的文件*/?
?
?
1,在第4步的配置文件中,一定使用主机域名而不是ip地址;
2,建议各台服务器的JDK和Hadoop的安装路径一直,这样就可以避免由于路径的问题,在不同服务器上频繁修改配置文件;
3,replication的值建议修改为小于或