一. 配置机器名
配置/etc/hosts和/etc/sysconfig/network
注意:NameNode的hosts文件必须有其slaves指定的所有节点的机器名
二. ssh设置 (hadoop中需要在namenode 和 datanode 中直接连接集群内的机器,需要配置ssh)
NameNode节点运行
- ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
- cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
要达到的目的:
A机器ssh登录B机器无需输入密码;
加密方式选 rsa|dsa均可以,默认dsa
做法:
1、登录A机器
2、ssh-keygen -t [rsa|dsa],将会生成密钥文件和私钥文件 id_rsa,id_rsa.pub或id_dsa,id_dsa.pub
3、将 .pub 文件复制到B机器的 .ssh 目录, 并 cat id_dsa.pub >> ~/.ssh/authorized_keys
4、大功告成,从A机器登录B机器的目标账户,不再需要密码了;
ssh-keygen做密码验证可以使在向对方机器上ssh ,scp不用使用密码.
具体方法如下:
ssh-keygen -t rsa
然后全部回车,采用默认值.
这样生成了一对密钥,存放在用户目录的~/.ssh下。
将公钥考到对方机器的用户目录下,并拷到~/.ssh/authorized_keys中。
要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。
- mkdir ~/.ssh (如果没有 ~/.ssh 文件夹的话)
- chmod 700 ~/.ssh/
- 追加NameNode的authorized_keys到自身的authorized_keys中,可以在NameNode执行
scp ~/.ssh/authorized_keys hadoop@10.1.243.27:~/.ssh/temp
,然后在DataNode上执行cat temp >> authorized_keys, rm temp - chmod 600 ~/.ssh/authorized_keys
配置结束后,可以在NameNode上执行
ssh DataNode机器名来验证配置是否成功
注意:DataNode节点的~/.ssh/authorized_keys必须有其关联的所有NameNode的公钥
环境变量设置
JAVA_HOME=/home/hadoop/jdk1.6.0_21 export JAVA_HOME PATH=$JAVA_HOME/bin:$PATH export PATH export HADOOP_DEV_HOME=/home/hadoop/hadoop-0.23.0 export HADOOP_MAPRED_HOME=${HADOOP_DEV_HOME} export HADOOP_COMMON_HOME=${HADOOP_DEV_HOME} export HADOOP_HDFS_HOME=${HADOOP_DEV_HOME} export YARN_HOME=${HADOOP_DEV_HOME} export PATH=$HADOOP_DEV_HOME/bin:$HADOOP_DEV_HOME/sbin:$PATH
四. 其他:
Hadoop-0.23的配置文件默认在etc/hadoop下,具体参数请参考附件core-site.xml和hdfs-site.xml
每个NameNode的slaves文件可以不一样,就是说可能一个集群中,某NameNode管理4个节点,某NameNode管理2个节点
运行
http://NameNode IP:50070/dfsclusterhealth.jsp
查看Federation情况
NameNode IP:50070/
查看各个NameNode情况
在Hadoop根目录执行
hadoop jar hadoop-mapreduce-examples-0.23.0.jar pi -Dmapreduce.clientfactory.class.name=org.apache.hadoop.mapred.YarnClientFactory -libjars modules/hadoop-mapreduce-client-jobclient-0.23.0.jar 16 10000
如果打印出PI值,说明Hadoop可以正常运行了 补充
如果机器之间连接出问题,可能需要关闭防火墙
service iptables stop
和关闭sellinux
vi /etc/selinux/config
官方的log4j.properties在我这有问题,增加log4j.appender.NullAppender=org.apache.log4j.varia.NullAppender这行就可以了
补充2011-12-23:现在已经有这个patch, https://issues.apache.org/jira/browse/HADOOP-7837
------------------------------------------------------------------------------------------------------
命令补充:
拷贝命令 scp~/.ssh/authorized_keysocdc_dev@10.1.253.99:~/.ssh/temp
scp 源文件 其他机器用户名@IP:目标文件
拷贝文件夹: scp -r ~/bin/jdk1.6.0_21 ocdc_dev@10.1.253.99:~/bin/jdk1.6.0_21
scp 是可以拷贝通过配置ssh的两台电脑之间的数据,数据加密,比FTP安全.