需要为在沙河校区的56台服务器(x101~x156)安装HOD,torque是一个师姐装的,我在一个师兄的带领下,完成了下面的工作,
1、为56台服务器实现两两之间无密码登录
wumimadenglu.exp
#!/usr/bin/expect -f set password 123456 for {set i 1} {$i<57} {incr i} { if {$i<10} { set ip x10$i puts "it is the first if : $ip" } else { set ip x1$i puts "it is the first else : $ip" } spawn ssh $ip expect "*password:*" send "$password\r" expect eof expect "#" send "ssh-keygen -t rsa\r" expect "*save the key*" send "\r" expect "*Overwrite (y/n)?*" send "y\r" expect "*Enter passphrase*" send "\r" expect "*Enter same passphrase again*" send "\r" expect eof for {set j 1} {$j<57} {incr j} { if {$j<10} { set target x10$j puts "it is the second if : $ip to $target" } else { set target x1$j puts "it is the second else : $ip to $target" } expect "#" send "ssh-copy-id -i ~/.ssh/id_rsa.pub root@$target\r" expect "*password:*" send "$password\r" expect eof } } close
ssh-copy-id -i ~/.ssh/id_rsa.pub root@$target 的功能是将本机id_rsa.pub追加到目标服务器~/.ssh/authorized_keys文件末尾
功能等同于:scp ~/.ssh/id_rsa.pub root@$target:~/.ssh/tmp ; 然后到目标服务器下执行cat ~/.ssh/tmp >> ~/.ssh/authorized_keys
2、为56台服务器安装python
我下载的是Python-2.5.1.tgz,将此安装包放到x101特定目录下,并执行:
# tar zxvf Python-2.5.1.tgz # cd Python-2.5.1 # ./configure # make # make install
copypython.sh
for((i=2;i<57;i++)) do if [ $i -lt 10 ] then scp /root/Python-2.5.1.tgz root@x10$i:/root/ echo "it is the first if: x10$i" else scp /root/Python-2.5.1.tgz root@x1$i:/root/ echo "it is the first else: x1$i" fi donejieyapython.exp
#!/usr/bin/expect -f for {set i 2} {$i<57} {incr i} { if {$i<10} { set ip x10$i puts "it is the first if : $ip" } else { set ip x1$i puts "it is the first else : $ip" } spawn ssh $ip expect "#" send "tar zxvf Python-2.5.1.tgz\r" expect "#" send "cd Python-2.5.1\r" expect "#" send "./configure\r" expect "#" send "make\r" expect "#" send "make install\r" expect "#" send "exit\r" }
3、为56台服务器安装jdk
我下载的是jdk-6u13-linux-i586.bin,将这个文件拷贝到x101特定目录下后,执行
# chmod +x jdk-6u13-linux-i586.bin # ./jdk-6u13-linux-i586.bin
copyjdkfiletoall.sh
for((i=2;i<57;i++)) do if [ $i -lt 10 ] then scp -r /root/jdk1.6.0_13 root@x10$i:/root/ echo "it is the first if: x10$i" else scp -r /root/jdk1.6.0_13 root@x1$i:/root/ echo "it is the first else: x1$i" fi done
4、为56台服务器安装hadoop
我下载的是hadoop-0.20.2.tar.gz,将此安装包放到x101特定目录下,并执行:
# tar zxvf hadoop-0.20.0.tar.gz
编辑hadoop-0.20.2/conf/masters文件,加上x101 ; 编辑hadoop-0.20.2/conf/slaves文件,加上x102~x156
编辑hadoop-0.20.2/conf/hadoop-env.sh文件, 加上JAVA_HOME路径
编辑hadoop-0.20.2/conf/core-site.xml文件:
<?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://x101:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/root/hadoop/tmp</value> </property> </configuration>
编辑hadoop-0.20.2/conf/hdfs-site.xml文件:
<?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.name.dir</name> <value>/root/hadoop/hdfs/name</value> </property> <property> <name>dfs.data.dir</name> <value>/root/hadoop/hdfs/data</value> </property> </configuration>
编辑hadoop-0.20.2/conf/mapred-site.xml文件,:
<?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>x101:9001</value> </property> <property> <name>mapred.job.reuse.jvm.num.tasks</name> <value>10</value> </property> </configuration>
编辑hod/conf/hodrc(修改环境变量):
[hod] stream = True java-home = /root/jdk1.6.0_13 cluster = clus cluster-factor = 1.8 xrs-port-range = 32768-65536 debug = 3 allocate-wait-time = 3600 temp-dir = /tmp/hod [ringmaster] register = True stream = False temp-dir = /tmp/hod http-port-range = 8000-9000 work-dirs = /tmp/hod/1,/tmp/hod/2 xrs-port-range = 32768-65536 debug = 3 [hodring] stream = False temp-dir = /tmp/hod register = True java-home = /root/jdk1.6.0_13 http-port-range = 8000-9000 xrs-port-range = 32768-65536 debug = 3 [resource_manager] queue = batch batch-home = /var/spool/torque id = torque #env-vars = /root/Python-2.5.1/python [gridservice-mapred] external = False pkgs = /root/hadoop/hadoop-0.20.2 tracker_port = 8030 info_port = 50080 [gridservice-hdfs] external = False pkgs = /root/hadoop/hadoop-0.20.2 fs_port = 8020 info_port = 50070
copyhadoopfiletoall.sh
for((i=2;i<57;i++)) do if [ $i -lt 10 ] then echo "it is the first if: x10$i begin!" scp -r /root/hadoop/hadoop-0.20.2 root@x10$i:/root/hadoop/ echo "it is the first if: x10$i end!" else echo "it is the first else: x1$i begin!" scp -r /root/hadoop/hadoop-0.20.2 root@x1$i:/root/hadoop/ echo "it is the first else: x1$i end!" fi sleep 3 done5、为56台服务器配置环境变量
environmentValueSet.sh
export JAVA_HOME=/usr/local/jdk1.6.0_13 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH export HADOOP_HOME=/usr/local/hadoop/hadoop-0.20.2 export PATH=$HADOOP_HOME/bin:$PATH export CLUSTER_NAME=clus export RM_QUEUE=batch export RM_HOME=/var/spool/torque export PYTHON_HOME=/usr/local/Python-2.5.1 export PATH=$PYTHON_HOME:$PATH export HOD_PYTHON_HOME=/usr/local/Python-2.5.1/python export HOD_CONF_DIR=/usr/local/hadoop/hadoop-0.20.2/contrib/hod/conf export HOD_HOME=/usr/local/hadoop/hadoop-0.20.2/contrib/hod export PATH=$HOD_HOME/bin:$PATH
copyEnvironmentValuetoAll.sh
for((i=1;i<57;i++)) do if [ $i -lt 10 ] then scp /root/jinchao/environmentValueSet.sh root@x10$i:/root/ echo "it is the first if: x10$i" else scp /root/jinchao/environmentValueSet.sh root@x1$i:/root/ echo "it is the first else: x1$i" fi doneaddEnvironmentValue.exp
#!/usr/bin/expect -f for {set i 1} {$i<57} {incr i} { if {$i<10} { set ip x10$i puts "it is the first if : $ip" } else { set ip x1$i puts "it is the first else : $ip" } spawn ssh $ip expect "#" send "cat /root/environmentValueSet.sh >> /etc/profile\r" expect "#" send "exit\r" } close此外,如果x101的环境变量已经设置好了的话,可以更直接:
for((i=2;i<57;i++)) do if [ $i -lt 10 ] then echo "it is the first if: x10$i begin!" scp /etc/profile root@x10$i:/etc/ echo "it is the first if: x10$i end!" else echo "it is the first else: x1$i begin!" scp /etc/profile root@x1$i:/etc/ echo "it is the first else: x1$i end!" fi done