一、初始说明
export JAVA_HOME="/usr/java/jdk1.7.0"
export JRE_HOME="/usr/java/jdk1.7.0/jre"
export HADOOP_HOME="/home/hadoop/hadoop-1.0.3"
export CLASSPATH=.:$JAVA_HOME/LIB:$JRE_HOME/lib:$HADOOP_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$PATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#每台机子上的/etc/profile文件都要修改哈~
五、配置hadoop环境变量:修改HADOOP_HOME/conf/下的hadoop-env.sh,fedora下javaJDK默认被安装到/usr/java下。
追加:
export JAVA_HOME="/usr/java/jdk1.7.0"
六、使用SSH令所有机器相互可无密码访问
只演示两台间A、B的操作,Fedora15默认已经安装SSH:
1)ssh-keygen -t rsa 2)cat id_rsa.pud >> authorized_keys #请用cat,否则当机器很多的时候用cp可能覆盖原来的文件,而导致之前配置好的机器的配置失效。 3)chmod 600 authorized_keys 4)scp authorized_keys hadoop@B的IP:/home/hadoop/ #如果对ssh原理和scp命令不熟悉,建议你不要直接scp进入B的.ssh目录中,否则在多台机器时会出现覆盖 5)ssh B #需要密码 6)touch ~/.ssh/authorized_keys #如果authorized_keys文件不存在,创建之 7)chmod 600 authorized_keys 8)cat ~/authorized_keys >> ~/.ssh/authorized_keys #将前面复制过来的文件内容追加到.ssh目录下的authorized_keys中。 到此时,A可以无密码登录B |
1)ssh-keygen -t rsa 2)cat id_rsa.pub >> authorized_keys 3)scp authorized_keys hadoop@A的IP:/home/hadoop/ 4)ssh A 6)cat ~/authorized_keys >> ~/.ssh/authorized_keys 到此时,B也可无密码登录A |
ssh -v localhost
tail /var/log/secure -n 20 #查看系统日志,需要root用户
七、修改每台机子的主机名,为了以后方便,修改方式:
NETWORKING=yesHOSTNAME=datanode6
3. 修改/etc/hosts文件,我尚没尝试使用同步工具,因此我是先修改namenode的配置再使用scp命令复制到其它机子上的。
192.168.0.113 posa
192.168.0.118 datanode6
192.168.0.119 secondarynamenode
192.168.0.111 datanode2
192.168.0.121 datanode13
192.168.0.125 datanode16
192.168.0.116 datanode21
每台机子修改后,要重启服务:/etc/init.d/network restart
此时如果使用命令hostname发现主机名没有成功改动,重启电脑即可。
八、配置hadoop
在NameNode:
datanode2 datanode13 datanode6 datanode16 datanode21 |
secondarynamenode |
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>fs.default.name</name> <value>hdfs://posa:8022/</value> </property> <property> <name>io.file.buffer.size</name> <value>65536</value> </property> <property> <name>fs.trash.interval</name> <value>72000</value> <description>回收站是用户级特性,当回收站被启用,每个用户都有独立的回收站目录。HDFS会自动删除回收站文件,但其他文件系统不会,而不许定期用hadoop fs -expunge来删除回收站中超过最小时间的文件</description> </property> </configuration> |
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration> <property> <name>dfs.name.dir</name> <value>/home/hadoop/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/home/hadoop/hdfs/data</value> </property> <property> <name>dfs.http.address</name> <value>192.168.0.113:50070</value> </property> <property> <name>dfs.secondary.http.address</name> <value>secondarynamenode:50090</value> </property> <property> <name>fs.checkpoint.period</name> <value>300</value> <description>The number of seconds between two periodic checkpoints</description> </property> <property> <name>fs.checkpoint.dir</name> <value>/home/hadoop/hdfs/namesecondary</value> </property> </configuration> |
<?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>posa:8021</value> </property> <property> <name>mapred.local.dir</name> <value>/home/hadoop/mapred/local</value> </property> <property> <name>mapred.system.dir</name> <value>/tmp/hadoop/mapred/system</value> </property> <property> <name>mapred.tasktracker.map.tasks.maximum</name> <value>4</value> </property> <property> <name>mapred.tasktracker.reduce.tasks.maximum</name> <value>4</value> </property> <property> <name>mapred.child.java.opts</name> <value>-Xmx400m</value> </property> </configuration> |
如复制到B:
scp -r hadoop-1.0.3 hadoop@B的主机名或IP:/home/hadoop/
十、在NameNode启动hadoop
start-all.sh
如果你发现要在HADOOP_HOME/bin/下使用./start-all 命令才能成功,那么检查你的/etc/profile文件的配置是否正确。
十一、看系统是否正常工作
1、hadoop dfsadmin -report
如果出现乱码,则说明没正常工作,检查NameNode及各个节点的自己查看错误原因,很可能是以上配置出错。
2、使用浏览器,localhost:50070,看是否出现正常页面。
3、hadoop dfsadmin -put 文件名 /user 是否成功执行
4、jps查看守护进程是否正常启动。
常见错误(以下的错误仅是可能的原因,是我犯过的错误):
一般的纠错总结成一句话:查看日志。