编写一键安装伪分布式Hadoop的脚本
Posted 不能说的秘密go
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编写一键安装伪分布式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 '/<configuration>/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 '/<configuration>/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。
以上是关于编写一键安装伪分布式Hadoop的脚本的主要内容,如果未能解决你的问题,请参考以下文章