在大规模集群中直接自动化安装软件JDK和Hadoop,效率是可想而知的。
这一部分紧接之前3个部分的环境配置,完成jdk和hadoop的安装,这样hadoop大规模集群算是完成了。
本小节的步骤较多,但并不复杂:
》首先准备好要分发到从节点的文件,包含以下三个文件:
软件包(*tar.gz)+环境变量设置文本(*env)+从节点上执行的脚本(.sh)
脚本文件会在各个从节点上运行,其功能主要是解压软件包,并将软件的环境变量配置添加入当前节点的~/.bashrc文件中。
1.jdk.sh
#!bin/bash
tar -zxvf ~/myscript/jdk/jdk-8u131-linux-x64.tar.gz -C ~/
mv ~/jdk1.8.0_131 ~/jdk1.8
cat ~/myscript/jdk/jdkenv >> ~/.bashrc
source ~/.bashrc
2.jdkenv
# java Env
export JAVA_HOME=~/jdk1.8
export JRE_HOME=~/jdk1.8/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
3.hadoop.sh
#!bin/bash
tar -zxvf ~/myscript/hadoop/hadoop-2.6.0.tar.gz -C ~/
cat ~/myscript/hadoop/hadoopenv >> ~/.bashrc
source ~/.bashrc
4.hadoopenv
# Hadoop Env
export HADOOP_HOME=~/hadoop-2.6.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH
》主节点上操纵从节点执行上述的脚本文件,完成该功能的脚本jdk_hadoop.sh,改文件存在于主节点中,直接在主节点中执行改文件,即可完成自动化在各个从节点上解压文件并更新用户的环境变量。
主要过程:
对slavenodes(解释见前几部分博文)中的各个从节点,创建相应的文件夹,再使用rsync命令将之前所述的三类文件分发到各个从节点的相应文件夹中,最后,则直接控制执行从节点文件夹中的脚本文件即可。
#!bin/bash
nodes=($(awk "{print \$1}" slavenodes))
for node in ${nodes[*]}
do
ssh $node "mkdir -p /home/ubuntu/myscript/jdk/"
ssh $node "mkdir -p /home/ubuntu/myscript/hadoop/"
rsync -r --progress ~/myscript/jdk/ ubuntu@$node:/home/ubuntu/myscript/jdk/
rsync -r --progress ~/myscript/hadoop/ ubuntu@$node:/home/ubuntu/myscript/hadoop/
ssh $node "bash /home/ubuntu/myscript/jdk/jdk.sh"
ssh $node "bash /home/ubuntu/myscript/hadoop/hadoop.sh"
done
》最后则是配置hadoop的conf相关文件,具体修改的hadooppath/etc/hadoop/路径下的相关文件,具体修改内容,请参考https://my.oschina.net/jackieyeah/blog/657750。先在主节点上将这些文件修改后,再利用脚本将修改后的文件直接分发到从节点即可。
#!bin/bash
#完成hadoop/etc/hadoop/下的所有配置文件设置后,将配置文件分发到slave节点上
nodes=($(awk "{print \$1}" slavenodes))
for node in ${nodes[*]}
do
# 重新格式化主节点并重启时,需要将datanode中hadoop下的tmp和logs文件清空或直接删除。
# ssh $node "rm -r /home/ubuntu/hadoop-2.6.0/tmp"
# ssh $node "rm -r /home/ubuntu/hadoop-2.6.0/logs"
# 分发配置文件
rsync -r --progress ~/hadoop-2.6.0/etc/hadoop/ zhangtao@$node:/home/ubuntu/hadoop-2.6.0/etc/hadoop/
done
#开启集群
#hadoop namenode -format
# start-all.sh
#开启JobHistoryServer进程
# mr-jobhistory-daemon.sh start historyserver