编写一键安装伪分布式Hadoop的脚本

学校开设了Hadoop这门课程,第一次上课就是在本机上安装一个伪分布式的Hadoop。班上大多数同学由于之前没有使用过linux系统(安装hadoop他们也是在虚拟机中进行)在安装的过程中出现了各种各样的问题不知道怎么解决。索性我也闲着无聊,就编写了一个一键安装伪分布式Hadoop的shell脚本让同学们使用,让同学在自己的linux系统上运行此脚本即完成安装。

准备资源:

  • jdk1.7 虽然linux自带了openjdk,但个人还是习惯使用oracle的
  • hadoop2.7.tar.gz 在Apache上下载
  • 两个包准备好之后,mkdir all 创建一个all的空文件夹,然后把上面两个tar.gz包仍进去。执行 tar -zcvf all.tar.gz all 把all文件夹压缩成all.tar.gz

编写执行安装hadoop过程的一个shell
install_hadoop.

#!/bin/bash
size=0
#最终生成的文件名为install_hadoop.bin而我们的all.tar.gz被>>到该文件后面
tail -c $size  install_hadoop.bin >all.tar.gz
tar -zxf all.tar.gz
cd all
echo "正在安装.请稍等..."
mkdir /usr/local/hadoop
mkdir /usr/local/JDK
tar -zxf hadoop-2.7.0.tar.gz  -C /usr/local/hadoop
tar -zxf jdk-7u79-linux-x64.tar.gz  -C /usr/local/JDK
#设置环境变量
echo export JAVA_HOME=/usr/local/JDK/jdk1.7.0_79 >>/etc/profile
echo export HADOOP_HOME=/usr/local/hadoop/hadoop-2.7.0 >> /etc/profile
echo export PATH=$PATH:/usr/local/hadoop/hadoop-2.7.0/bin:/usr/local/hadoop/hadoop-2.7.0/sbin:/usr/local/JDK/jdk1.7.0_79/bin >> /etc/profile
#使得环境变量生效
source /etc/profile
#设置本机免密码登录
(echo -e "\n"
sleep 1
echo -e "\n"
sleep 1
echo -e "\n")|ssh-keygen -t rsa
cat  ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 700  ~/.ssh
chmod 600  ~/.ssh/authorized_keys
#通过强大的sed命令来修改hadoop的配置文件
sed -i "s/\${JAVA_HOME}/\/usr\/local\/JDK\/jdk1.7.0_79/g"  /usr/local/hadoop/hadoop-2.7.0/etc/hadoop/hadoop-env.sh
sed -i '//a\<property\>\n\<name\>fs.default.name\<\/name\>\n\<value\>hdfs://localhost:9000\<\/value\>\n\<\/property\>\n\<property\>\n\<name\>hadoop.tmp.dir\<\/name\>\n\<value\>\/home\/hadoop\/tmp\<\/value\>\n\</property\>'  /usr/local/hadoop/hadoop-2.7.0/etc/hadoop/core-site.xml
sed -i '/\<configuration\>/a\<property\>\n\<name\>mapred.job.tracker\</name\>\n\<value\>localhost:9001\</value\>\</property\>'  /usr/local/hadoop/hadoop-2.7.0/etc/hadoop/mapred-site.xml.template
sed -i '//a\n\<property\>\n\<name\>dfs.replication\</name\>\n\<value\>1\</value\>\n\</property\>'   /usr/local/hadoop/hadoop-2.7.0/etc/hadoop/hdfs-site.xml
echo "hadoop安装完成,开始格式化。。。"
#格式化hadoop
hadoop namenode -format
echo "格式化完成..开始运行"
#启动
start-all.sh
exit

如上是完成hadoop安装的shell脚本,但我们还需要一个脚本来将all.tar.gz文件追加到一个最终的脚本中。

mkinstall_hadoop.sh:

#!/bin/bash
#通过gawk命令截取出all.tar.gz的大小
size=`ls -all | grep all.tar.gz | gawk '{print $5}'`
#生成一个install_hadoop.bin文件,文件内容和上一个脚本一模一样。只是改一定些东西
cp install_hadoop.sh  install_hadoop.bin
#把all.tar.gz文件追加进去
cat all.tar.gz >>install_hadoop.bin
#通过sed -i 修改上面定义的size。因为我们要从最终的文件截取size大小出来
#所以这个size大小就是我们all.tar.gz的大小
sed -i "s/size=0/size=$size/g"  install_hadoop.bin

最终运行一下mkinstall_hadoop.sh。就会在生成一个install_hadoop.bin文件。把这个文件复制到同学的linux电脑上运行之后就安装成功hadoop。

你可能感兴趣的:(linux)