#/bin/bash
printf "\033[33m \n ------>   准备开始部署平台一键脚本........   <------- \n\033[0m"
sleep 2
printf "\033[33m \n ------>   温馨提示:请写入正确的IP到ip.txt文件中,若写错则无法完成部署服务!!!!\n\033[0m"
sleep 2  
printf "\033[33m \n ------>   准备五秒后开始部署---->5s........   <------- \n\033[0m"
sleep 1
printf "\033[33m \n ------>   准备四秒后开始部署---->4s........   <------- \n\033[0m"
sleep 1
printf "\033[33m \n ------>   准备三秒后开始部署---->3s........   <------- \n\033[0m"
sleep 1
printf "\033[33m \n ------>   准备二秒后开始部署---->2s........   <------- \n\033[0m"
sleep 1
printf "\033[33m \n ------>   准备一秒后开始部署---->1s........   <------- \n\033[0m"
sleep 1
printf "\033[33m \n ------>    准备开始部署---->0s........   <------- \n\033[0m"

#避免公钥回答

printf "\033[29m \n ------>  避免公钥验证........   -------> \n\033[0m"
sed -i 's/#   StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config

sleep 0.5

sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/ssh_config

sleep 0.5

service sshd restart
if [[ "0" -eq "$?" ]]
then
echo "重启sshd服务完成!"
sleep 1
else
echo "重启sshd服务失败!"
fi
sleep 2

#检索所需内容是否齐全

printf "\033[36m \n ---------->   检测脚本所需附件是否存在...\n\033[0m" 
sleep 3

ls ip.txt
if [[ "0" -eq "$?" ]]
then
echo "ip.txt文件存在,下一步!"
else
echo "ip.txt文件不存在,请退出后手动编写!"
sleep 2000
fi

sleep 5

#检索Centos镜像

ls CentOS-7-x86_64-DVD-1511.iso
if [[ "0" -eq "$?" ]]
then
echo "centos镜像存在,下一步!"
else
echo "centos镜像不存在,正在尝试导入中......"
sleep 3
D=`awk 'NR==4{print$1}' ip.txt`
scp $D:/root/CentOS-7-x86_64-DVD-1511.iso /root
if [[ "0" -eq "$?" ]]
then
echo "完成导入!"
else
echo "请将镜像源IP写入ip.txt文件中第四行!,请退出!!!"
sleep 200
fi
sleep 1
echo "Centos镜像导入完成!,下一步!"
fi

sleep 3

#检索XianDian镜像

ls XianDian-BigData-v2.2.iso
if [[ "0" -eq "$?" ]]
then
echo "BigData镜像存在,下一步!"
else
echo "BigData镜像不存在,在尝试导入中......"
sleep 2
D=`awk 'NR==4{print$1}' ip.txt`
scp $D:/root/XianDian-BigData-v2.2.iso  /root
if [[ "0" != "$?" ]]
then
echo "请将镜像源IP写入ip.txt文件中第四行!,请退出!!!"
sleep 200
else
echo "完成导入!"
fi
sleep 1
echo "BigData镜像导入完成!下一步!"
fi

sleep 2

#获取Slaver1、Slaver2节点IP

slaver1=`awk 'NR==2{print$1}' ip.txt`
ssh -t -t $slaver1  -o StrictHostKeyChecking=no "ip a|grep inet|awk 'NR==3{print\$2}'|sed 's/\/24//' > slaver1 "
if [[ "0" -eq "$?" ]]
then
echo "执行slaver1地址ip获取成功.."
sleep 2
else
echo "执行slaver1地址ip获取失败.."
fi

slaver2=`awk 'NR==3{print$1}' ip.txt`
ssh -t -t $slaver2  -o StrictHostKeyChecking=no "ip a|grep inet|awk 'NR==3{print\$2}'|sed 's/\/24//' > slaver2 "
if [[ "0" -eq "$?" ]]
then
echo "执行slaver2地址ip获取成功.."
sleep 2
else
echo "执行slaver2地址ip获取失败.."
fi

#解压部署所需要的安装包

printf "\033[36m \n --->   正在解压centos文件到/opt目录.... \n\033[1m"
mkdir /opt/centos
mount -o loop CentOS-7-x86_64-DVD-1511.iso /opt/centos/
if [[ "0" -eq "$?" ]]
then
echo "挂载操作成功!"
else
echo "挂载操作失败!"
sleep 5
fi
printf "\033[36m \n --->   解压centos完成!.... \n\033[0m"
sleep 2

printf "\033[34m \n --->   正在尝试解压ambari安装包.... \n\033[0m"
mount -o loop XianDian-BigData-v2.2.iso  /mnt/
cp -rvf /mnt/ambari-2.6.0.0 /opt/
if [[ "0" -eq "$?" ]]
then
echo "ambari文件导出成功!进入下一步..."
sleep 1
else
echo "ambari文件导出失败!"
sleep 10
fi

#部署jdk

printf "\033[29m \n ------>   部署jdk中........   -------> \n\033[0m"
mkdir /usr/jdk64
if [[ "0" -eq "$?" ]]
then
echo "创建jdk文件夹成功,进入下一步..."
sleep 1
else
echo "创建jdk文件夹失败..."
sleep 10
fi

tar -zxvf /mnt/jdk-8u77-linux-x64.tar.gz  -C /usr/jdk64
if [[ "0" -eq "$?" ]]
then
echo "解压jdk压缩包完成,进入下一步..."
sleep 1
else
echo "解压jdk压缩包失败..."
sleep 10
fi

sleep 0.5

cat >> /etc/profile <<-EOF
export JAVA_HOME=/usr/jdk64/jdk1.8.0_77
export PATH=\$JAVA_HOME/bin:\$PATH
EOF
if [[ "0" -eq "$?" ]]
then
echo "写入成功。"
sleep 1
else
echo "写入失败"
sleep 10
fi

source /etc/profile
java -version
sleep 1
printf "\033[34m \n ------>  部署、验证成功........   -------> \n\033[0m"

sleep 0.5

#更改主机名

printf "\033[29m \n ------>  更改主机名儿........   -------> \n\033[0m"
hostnamectl set-hostname master
name=`hostname`
if [[ "master" -eq "$name" ]]
then
echo "主机名修改正确"
sleep 1
else
echo "主机名修改错误"
fi
ip=`ifconfig|grep inet|awk 'NR==1{print$2}'`
echo "$ip master.hadoop master"  >> /etc/hosts

#避免公钥验证 Yes/No 回答

printf "\033[29m \n ------>  避免公钥验证操作中........   -------> \n\033[0m"
sed -i 's/#   StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config

sleep 0.5

sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/ssh_config

sleep 0.5

service sshd restart
if [[ "0" -eq "$?" ]]
then
echo "重启sshd服务完成!"
sleep 1
else
echo "重启sshd服务失败!"
fi
sleep 2

#编写yum源

printf "\033[29m \n ------>  重新写入yum源中........   -------> \n\033[0m"

rm -rvf /etc/yum.repos.d/*
if [[ "0" -eq "$?" ]]
then
echo "写入yum源成功!"
sleep 1
else
echo "写入yum源失败!"
fi
sleep 2

touch /etc/yum.repos.d/local.repo
cat >> /etc/yum.repos.d/local.repo <<-EOF
[centos]
name=centos
baseurl=file:///opt/centos/
gpgcheck=0
enabled=1
[ambari]
name=ambari
baseurl=file:///opt/ambari-2.6.0.0/
gpgcheck=0
enabled=1
EOF
printf "\033[29m \n ------>  验证yum源是否成功........   -------> \n\033[0m"
yum clean all
yum makecache
if [[ "0" -eq "$?" ]]
then
echo "验证yum源成功!"
sleep 2
else
echo "验证yum源失败..."
sleep 10
fi

sleep 1.5

printf "\033[34m \n ------>  yum源分发中........   -------> \n\033[0m"
slaver1=`awk 'NR==2{print$1}' ip.txt`
sed  's/file:\/\/\//ftp:\/\//g' /etc/yum.repos.d/local.repo > 1
if [[ "0" -eq "$?" ]]
then
echo "更改yum源文件成功!"
sleep 2
else
echo "更改yum源文件失败"
fi

sed  's/opt/master/' 1 > slaver1.repo
if [[ "0" -eq "$?" ]]
then
echo "更改yum源成功!"
sleep 2
else
echo "更改yum源失败"
fi
scp   slaver1.repo $slaver1:/etc/yum.repos.d/
if [[ "0" -eq "$?" ]]
then
echo "传输yum源文件成功1!"
sleep 2
else
echo "传输yum源文件失败1"
fi
sleep 1

slaver2=`awk 'NR==3{print$1}' ip.txt`
scp   slaver1.repo $slaver2:/etc/yum.repos.d/
if [[ "0" -eq "$?" ]]
then
echo "传输yum源文件成功2!"
sleep 2
else
echo "传输yum源文件失败2"
sleep 10
fi
sleep 1

printf "\033[29m \n ------>  安装FTP服务........   -------> \n\033[0m"
yum install vsftpd -y
echo 'anon_root=/opt' >> /etc/vsftpd/vsftpd.conf
printf "\033[29m \n ------>  重启服务中........   -------> \n\033[0m"
systemctl restart vsftpd
systemctl enable vsftpd
printf "\033[34m \n ------>  重启成功........   -------> \n\033[0m"

echo never > /sys/kernel/mm/transparent_hugepage/enabled 
echo never > /sys/kernel/mm/transparent_hugepage/defrag

printf "\033[29m \n ------>  正在安装HTTP服务中........   -------> \n\033[0m"
yum install httpd -y
printf "\033[34m \n ------>  安装成功........   -------> \n\033[0m"
sleep 1
printf "\033[29m \n ------>  文件复制中........   -------> \n\033[0m"
cp -rvf /mnt/HDP-* /var/www/html/
sleep 1
printf "\033[29m \n ------> 重启服务中........   -------> \n\033[0m"
systemctl restart httpd
systemctl enable httpd
sleep 1

printf "\033[29m \n ------> 五秒后安装ambari-server........   -------> \n\033[0m"
sleep 5
yum install ambari-server -y
if [[ "0" -eq "$?" ]]
then
echo "ambari-server 安装成功!"
sleep 1
else
echo "ambari-server 安装失败..."
sleep 20
fi

printf "\033[29m \n ------> 三秒后安装expect组件........   -------> \n\033[0m"
sleep 3
yum install expect -y
if [[ "0" -eq "$?" ]]
then
echo "expect组件安装完成!"
sleep 1
else
echo "expect组件安装失败!"
sleep 10
fi

#IP地址映射写入

printf "\033[29m \n ------> 制作地址映射中........   -------> \n\033[0m"
sleep 3

slaver1=`awk 'NR==2{print$1}' ip.txt`
expect -c "
spawn ssh-copy-id $ip
expect \"*?\" {send \"yes\n\"}
expect eof
"
sleep 1

slaver1=`awk 'NR==2{print$1}' ip.txt`
scp $slaver1:/root/slaver1 /root
echo "`cat slaver1`  slaver1.hadoop slaver1" >> /etc/hosts
if [[ "0" -eq "$?" ]]
then
echo "写入slaver1地址ip成功!"
sleep 2
else
echo "写入slaver1地址ip失败"
sleep 10
fi

slaver2=`awk 'NR==3{print$1}' ip.txt`
expect -c "
spawn ssh-copy-id $ip
expect \"*?\" {send \"yes\n\"}
expect eof
"
sleep 1

slaver2=`awk 'NR==3{print$1}' ip.txt`
scp $slaver2:/root/slaver2 /root
echo "`cat slaver2`  slaver2.hadoop slaver2"  >> /etc/hosts
if [[ "0" -eq "$?" ]]
then
echo "写入slaver2地址ip成功!"
sleep 2
else
echo "写入slaver2地址ip失败"
sleep 10
fi

sleep 1

#分发地址映射文件
printf "\033[29m \n ------>  分发文件中........   -------> \n\033[0m"

slaver1=`awk 'NR==2{print$1}' ip.txt`
scp /etc/hosts  $slaver1:/etc/
if [[ "0" -eq "$?" ]]
then
echo "分发slaver1操作完成!"
sleep 2
else
echo "分发Slaver1操作失败,正在退出"
fi
sleep 1

slaver2=`awk 'NR==3{print$1}' ip.txt`
scp /etc/hosts  $slaver2:/etc/
if [[ "0" -eq "$?" ]]
then
echo "分发slaver2操作完成!"
sleep 2
else
echo "分发Slaver2操作失败!"
fi

sleep 1

#安装数据库服务

printf "\033[29m \n ------> 三秒后——安装数据库所需要的服务........   -------> \n\033[0m"
sleep 3
yum install mariadb mariadb-server mysql-connector-java -y

printf "\033[29m \n ------> 重启服务中........   -------> \n\033[0m"
sleep 1
systemctl enable mariadb
systemctl restart mariadb
printf "\033[34m \n ------>  重启完成........   -------> \n\033[0m"

#初始化数据库

printf "\033[29m \n ------>  初始化数据库中........   -------> \n\033[0m"
sleep 0.5
(echo -e "\n"
sleep 1
echo -e "bigdata"
sleep 1
echo -e "bigdata"
sleep 1
echo -e "y\n"
sleep 1
echo -e "n\n"
sleep 1
echo -e "y\n"
sleep 1
echo -e "y\n")|mysql_secure_installation
sleep 0.5
printf "\033[34m \n ------>  初始化完成........   -------> \n\033[0m"

sleep 1

#创建数据库

printf "\033[29m \n ------>  五秒后为您创建数据库,请稍后........   -------> \n\033[0m"
sleep 5
mysql -uroot -pbigdata -e "create database ambari;"
mysql -uroot -pbigdata -e "grant all privileges on ambari.* to 'ambari'@'localhost' identified by 'bigdata';"
mysql -uroot -pbigdata -e "grant all privileges on ambari.* to 'ambari'@'%' identified by 'bigdata';"
mysql -uroot -pbigdata -e "create database hive;"
mysql -uroot -pbigdata -e "grant all privileges on hive.* to 'hive'@'localhost' identified by 'bigdata';"
mysql -uroot -pbigdata -e "grant all privileges on hive.* to 'hive'@'%' identified by 'bigdata';"
printf "\033[34m \n ------>  创建数据库成功........   -------> \n\033[0m"
sleep 0.2

printf "\033[29m \n ------>  正在为您导入数据库中,请稍后........   -------> \n\033[0m"
sleep 0.5
(echo -e "use ambari;"
sleep 1
echo -e "source  /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;"
sleep 6
echo -e "exit\n")|mysql -uroot -pbigdata
printf "\033[34m \n ------>  导入数据库成功........   -------> \n\033[0m"
sleep 0.2

#始化ambari服务

printf "\033[29m \n ------>  五秒后为您初始化ambari服务,请稍后........   -------> \n\033[0m"
sleep 5
expect -c "
spawn /etc/rc.d/init.d/ambari-server setup
expect \"*? \"
send \"n\n\"
expect \"Enter choice (1): \"
send \"3\r\"
expect \"Path to JAVA_HOME: \"
send \"/usr/jdk64/jdk1.8.0_77\r\"
expect \"*? \"
send \"y\r\"
expect \"Enter choice (1): \"
send \"3\r\"
expect \"Hostname (localhost): \"
send \"localhost\r\"
expect \"Port (3306): \"
send \"3306\r\"
expect \"Database name (ambari): \"
send \"ambari\r\"
expect \"Username (ambari): \"
send \"ambari\r\"
expect \"Enter Database Password (bigdata): \"
send \"bigdata\r\"
expect \"*? \"
send \"y\r\"
expect eof
"
sleep 1

#装数据库驱动

printf "\033[29m \n ------>  三秒后为您安装数据库驱动 ,请稍后........   -------> \n\033[0m"

sleep 3

ambari-server setup --jdbc-db=mysql --jdbc-driver=/usr/share/java/mysql-connector-java.jar

sleep 1

#ambari相关操作

printf "\033[29m \n ------>  三秒后为您重启ambari服务,请稍后........   -------> \n\033[0m"

sleep 3

ambari-server restart

sleep 0.5

printf "\033[29m \n ------>  为您重启ambari服务成功........   -------> \n\033[0m"

sleep 0.5

printf "\033[29m \n ------>  三秒后为您安装agent服务,请稍后........   -------> \n\033[0m"
sleep 3
yum install ambari-agent -y

sleep 0.5

sed -i "s/localhost/master.hadoop/" /etc/ambari-agent/conf/ambari-agent.ini
if [[ "0" -eq "$?" ]]
then
ehco "编写成功" 
else
echo "编写失败" >> shibai.log
fi

sleep 0.5
ambari-agent restart

#Slaver1节点操作

printf "\033[29m \n ------>  正在为您传输所需要的准备工作,请稍后........   -------> \n\033[0m"

sleep 1

sleep 0.2

slaver1=`awk 'NR==2{print$1}' ip.txt`
scp -r /usr/jdk64 $slaver1:/usr/
sleep 1
scp /etc/profile $slaver1:/etc/ 
sleep 2
printf "\033[34m \n ------>  正在远程slaver2操作,请稍后........   -------> \n\033[0m"
sleep 3

ssh -t -t $slaver1 -o StrictHostKeyChecking=no  << eeooff

hostnamectl set-hostname slaver1

sleep 0.5

sed -i 's/#   StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config

sleep 0.5

sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/ssh_config

sleep 0.5

service sshd restart

rm -rvf /etc/yum.repos.d/CentOS-*

echo done!
source  /etc/profile
sleep 1

yum clean all
yum makecache
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

yum install ambari-agent -y

sleep 1

sed -i "s/localhost/master.hadoop/" /etc/ambari-agent/conf/ambari-agent.ini
if [[ "0" -eq "$?" ]]
then
ehco "编写成功" 
else
echo "编写失败" > shibai.log
fi

rm -rvf slaver*
sleep 1

ambari-agent restart
sleep 1
exit
eeooff

#Slaver2节点操作

printf "\033[34m \n ------>  正在为您准备下一个节点........   -------> \n\033[0m"
sleep 5

slaver2=`awk 'NR==3{print$1}' ip.txt`
scp -r /usr/jdk64 $slaver2:/usr/
sleep 0.5
scp /etc/profile $slaver2:/etc/
sleep 1

printf "\033[34m \n ------>  正在远程slaver2操作,请稍后........   -------> \n\033[0m"
sleep 3

ssh -t -t $slaver2 -o StrictHostKeyChecking=no << eeooff

hostnamectl  set-hostname slaver2

sed -i 's/#   StrictHostKeyChecking ask/StrictHostKeyChecking no/' /etc/ssh/ssh_config

sleep 0.5

sed -i 's/GSSAPIAuthentication yes/GSSAPIAuthentication no/' /etc/ssh/ssh_config

sleep 0.5

service sshd restart
echo done!

rm -rvf /etc/yum.repos.d/CentOS-*
if [[ "0" -eq "$?" ]]
then
echo "删除其他yum源文件成功!"
else
echo "删除其他yum源文件失败!"
sleep 200
fi

source  /etc/profile
sleep 1

rm -rvf slaver*

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

yum install ambari-agent -y
sleep 0.5
sed -i "s/localhost/master.hadoop/" /etc/ambari-agent/conf/ambari-agent.ini
sleep 2

ambari-agent restart
sleep 2

exit
eeooff
echo done!
sleep 1

hadoop-bigdata-v2.2 版本shell脚本一键部署 master、slaver1、slaver2三个节点源代码.相关推荐

  1. shell脚本一键部署lnmp架构

    shell脚本一键部署lnmp架构 1. 创建存放脚本的目录 2. 创建脚本文件 3. 编写脚本 4. 通过IP地址直接访问PHP界面 1. 创建存放脚本的目录 [root@localhost ~]# ...

  2. shell脚本 一键部署 Lnmp 及社区论坛 服务架构

    shell脚本 一键部署 Lnmp 一键部署 Lnmp 一键部署 注:亲,记得把所需要的软件包,先放到/opt目录中:以及该机子的内存大小.核数先设置好! #!/bin/bash #先配置好yum e ...

  3. shell脚本一键部署LNMP

    前言 使用shell脚本一键部署LNMP需要的安装包 nginx-1.15.9.tar.gz mysql-boost-5.7.20.tar.gz php-7.1.10.tar.bz2 Discuz_X ...

  4. centos7 ssr一键脚本_RHEL7(Centos7)下使用shell脚本一键部署服务

    今天配置服务觉得有些麻烦,想着写一个能一键配置nfs服务端的shell脚本,当然在安装之前需要配置一个yum源,所以我一并将这些功能写在了一个shell脚本里. 脚本如下: #author:Roya ...

  5. 使用shell脚本一键部署LNMP架构

    #/bin/bash##将需要的安装包传到/opt目录下,并关闭防火墙 systemctl stop firewalld systemctl disable firewalld &>/d ...

  6. 使用shell脚本一键部署DNS正向解析

    #!/bin/bash#先判断是否挂载,并检查bind软件包是否安装 yum -y install bind &>/dev/null if [ $? -ne 0 ];then mount ...

  7. shell脚本一键安装nginx

        使用shell脚本一键安装Nginx 操作环境Centos7,联网进行安装. 代码如下: #!/bin/bash #this is nginx.sh #date 2018.10.6 [ $(i ...

  8. shell脚本一键安装二进制Apache

    转载来源 :shell脚本一键安装二进制Apache : http://www.178linux.com/23401 安装背景:用的一台最小化安装的centos6. 编译安装安装的必备安装gcc,gc ...

  9. 超实用的shell脚本--一键获取进程所有信息

    转载来源 :超实用的shell脚本–一键获取进程所有信息 :http://www.safebase.cn/article-257427-1.html 摘要: 概述有时我们想只是通过一个进程PID就可以 ...

  10. shell脚本一键装机(pxe配合kickstart无人值守)

    shell脚本一键装机(pxe配合kickstart无人值守) shell脚本实现无人值守安装 图文详细步骤可以参前期博文: PXE批量网络装机(超详细实验教程)教会你自动化批量安装linux 系统 ...

最新文章

  1. CentOS安装vim及基本配置
  2. C# viewstate
  3. 计算机专业软件技术专业导论,计算机科学与技术专业导论.docx
  4. jzoj6310-Global warming【线段树,LIS】
  5. [Oracle整理]CASE-END
  6. C# 静态类和非静态类(实例类)
  7. C# string.Format格式化时间或货币
  8. oracle number对应java什么类型_JVM系列之数据类型
  9. http2.0和http1.1的区别
  10. incrby redis 最大值_Redis 的 8 大数据类型,写得非常好!
  11. 摩拜前端周刊第15期
  12. 7-8 jmu-ds-顺序表区间元素删除 (15 分)
  13. jquery第三期:js与jquery对象转换
  14. Android环境下的GDB调试
  15. 前端demo - 点名器
  16. 推荐 10 款适合 C/C++ 开发人员的 IDE
  17. 数字云财务迈入价值重塑新阶段,未来财务已来
  18. 智能云网IT架构解析
  19. 一劳永逸安装程序无法继续 Microsoft Runtime DLL 安装程序未能完成安装
  20. python爬取头条付费专栏视频_Python3从零开始爬取今日头条的新闻【五、解析头条视频真实播放地址并自动下载】...

热门文章

  1. python idle解释器的命令提示符是_Python IDLE使用
  2. JWT 详解及源码分析
  3. Mybatis的特性详解——四大操作标签
  4. Hive架构及相关函数
  5. 从正则表达式到NFA(Thompson算法)
  6. 通过GPRS 模块M26程序实现 实时时钟
  7. MacOS查看DNS服务器地址
  8. 吴恩达《构建机器学习项目》精炼笔记(2)-- 机器学习策略(下)
  9. 基于搜狗搜索的微信公众号爬虫实现(C#版本)
  10. VulnHub渗透测试实战靶场 - SICKOS: 1.1