首页 > 其他分享 >脚本部署Hadoop平台

脚本部署Hadoop平台

时间:2022-09-30 11:22:05浏览次数:77  
标签:脚本 部署 ip Hadoop echo etc ssh HOME hadoop

@

目录
ubuntu环境脚本部署hadoop~
根据手工搭建部署此脚本

初始化环境

各节点上执行!!!!

注意脚本内会修改root密码~

#!/bin/bash

echo "#####检查网络#####"
ping $baidu.com -c 4 >> /dev/null 2>&1
if [ 0  -ne  $? ]; then
        echo -e "\033[31m Warning\n检查一下网络,不能上网!\033[0m"
        exit 1
fi

echo "#####配置主机映射#####"

master_name=master
node1_name=slave1
node2_name=slave2
master_ip=192.168.200.100
node1_ip=192.168.200.101
node2_ip=192.168.200.102

if [[ `ip a |grep -w $master_ip ` != '' ]];then 
    hostnamectl set-hostname $master_name
elif [[ `ip a |grep -w $node1_ip ` != '' ]];then 
    hostnamectl set-hostname $node1_name
elif [[ `ip a |grep -w $node2_ip ` != '' ]];then 
    hostnamectl set-hostname $node2_name
else
    echo "完球~~报错了"
fi

cat  >> /etc/hosts <<eof
$master_ip $master_name
$node1_ip $node1_name
$node2_ip $node2_name
eof

echo "#####开启ssh密码验证#####"
apt install -y openssh-server
cat >> /etc/ssh/sshd_config <<eof
PermitRootLogin yes
eof
systemctl restart sshd

echo "#####修改root密码#####”
#密码为Root@123
echo root:Root@123|chpasswd
echo "#####初始化环境完毕#####“

配置ssh免密

在各节点上执行一

#!/bin/bash
# @huhy
# 三台服务器进行免密操作,默认三台服务器密码相同,如果不同则自行添加变量
master_ip=192.168.200.100
node1_ip=192.168.200.101
node2_ip=192.168.200.102
PD=Root@123
echo "####开始免密操作####"
rm -rf /root/.ssh
if [ ! -f ~/.ssh/id_rsa ];then
 ssh-keygen -t rsa -P '' -f /root/.ssh/id_rsa &> /dev/null
else
 echo "已存在密钥对"
fi

#安装expect软件包
yum install expect -y

if [[ huhy == huhy ]];then
expect -c "set timeout -1;
               spawn ssh-copy-id  -i /root/.ssh/id_rsa $master_ip;
               expect {
                   *password:* {send -- $PD\r;
                        expect {
                            *denied* {exit 2;}
                            eof}
                    }
                   *(yes/no)* {send -- yes\r;exp_continue;}
                   eof         {exit 1;}
               }
               "
expect -c "set timeout -1;
               spawn ssh-copy-id  -i /root/.ssh/id_rsa $node1_ip;
               expect {
                   *password:* {send -- $PD\r;
                        expect {
                            *denied* {exit 2;}
                            eof}
                    }
                   *(yes/no)* {send -- yes\r;exp_continue;}
                   eof         {exit 1;}
               }
               "
expect -c "set timeout -1;
               spawn ssh-copy-id  -i /root/.ssh/id_rsa $node2_ip;
               expect {
                   *password:* {send -- $PD\r;
                        expect {
                            *denied* {exit 2;}
                            eof}
                    }
                   *(yes/no)* {send -- yes\r;exp_continue;}
                   eof         {exit 1;}
               }
               "
else
echo "这要是报错我当场直播把电脑吃了"
fi
echo "####免密配置成功####"

配置java、hadoop

在master节点上执行即可,后续分发给其他节点

#!/bin/bash
echo "#########开始配置环境变量#########"
#创建并配置env文件
mkdir /etc/profile.d/my_env.sh
cat  >> /etc/profile.d/my_env.sh <<eof
#JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/usr/local/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

#解决后面启动集群的权限问题
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
eof

echo "#########配置解压安装包##########"
#安装包默认放在/root/下,脚本也是

JDK_NAME=jdk-8u241-linux-x64.tar.gz
HADOOP_NAME=hadoop-3.3.0.tar

tar -xvf ./$HADOOP_NAME -C /usr/local/
tar -xvf ./$JDK_NAME -C /usr/local/
echo "#########解压安装包完毕##########"
source /etc/profile
echo "############测试环境############"
java -version
hadoop version

配置hadoop文件

在master节点执行一遍即可

#!/bin/bash
echo "#########开始配置hadoop文件#########"
#修改Hadoop-env配置文件
cat  >> $HADOOP_HOME/etc/hadoop/hadoop-env.sh <<eof
export JAVA_HOME=$JAVA_HOME
eof

#修改yarm-env配置文件
cat  >> $HADOOP_HOME/etc/hadoop/yarn-env.sh <<eof
export JAVA_HOME=$JAVA_HOME
eof

#修改core-site.xml配置文件
cat  > $HADOOP_HOME/etc/hadoop/core-site.xml <<eof
<configuration>
        <!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:8020</value>
</property>

<!-- 设置Hadoop本地保存数据路径 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop-3.3.0/data</value>
</property>
</configuration>
eof

#修改hdfs-site.xml配置文件
cat  > $HADOOP_HOME/etc/hadoop/hdfs-site.xml <<eof
<configuration>
<!-- 设置hdfs的访问地址 -->
<property>
        <name>dfs.namenode.http.address</name>
        <value>master:9870</value>
</property>
<property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>slave2:9868</value>
</property>
</configuration>
eof


#修改yarn-site.xml配置文件
cat  > $HADOOP_HOME/etc/hadoop/yarn-site.xml <<eof
<configuration>
 <!-- 设置YARN集群主角色运行机器位置 -->
<property>
        <name>yarn.resourcemanager.hostname</name>
        <value>slave1</value>
</property>

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- 是否将对容器实施物理内存限制 -->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>

<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

<!-- 开启日志聚集 -->
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>
 <property>
        <name>yarn.nodemanager.remote-app-log-dir</name>
        <value>/usr/local/hadoop-3.3.0/history-logs</value>
        <!--日志聚合到一个文件夹中 -->
</property>

<!-- 设置yarn历史服务器地址 -->
<property>
    <name>yarn.log.server.url</name>
    <value>http://master:19888/jobhistory/logs</value>
</property>

<!-- 历史日志保存的时间 7天 -->
<property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>604800</value>
</property>
</configuration>
eof

#修改mapred-site.xml配置文件
cat  > $HADOOP_HOME/etc/hadoop/mapred-site.xml <<eof
<configuration>
<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 -->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

<!-- MR程序历史服务地址 -->
<property>
  <name>mapreduce.jobhistory.address</name>
  <value>master:10020</value>
</property>

<!-- MR程序历史服务器web端地址 -->
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>master:19888</value>
</property>
</configuration>
eof


#修改workers配置文件
cat  > $HADOOP_HOME/etc/hadoop/workers <<eof
master
slave1
slave2
eof

echo "#########Hadoop文件配置完毕#########"

配置集群分发

分发完毕会立即格式化集群

#!/bin/bash

echo "#####分发Hadoop#####"
#防止格式化集群的时候权限不够不能创建文件
mkdir $HADOOP_HOME/logs
mkdir $HADOOP_HOME/history-logs
chmod 777 $HADOOP_HOME
scp -r $HADOOP_HOME slave1:/usr/local/ >> /dev/null 2>&1
scp -r $HADOOP_HOME slave2:/usr/local/ >> /dev/null 2>&1

echo "#####分发jdk和环境变量#####"
scp -r $JAVA_HOME slave1:/usr/local/ >> /dev/null 2>&1
scp -r $JAVA_HOME slave2:/usr/local/ >> /dev/null 2>&1
scp /etc/profile.d/my_env.sh slave1:/etc/profile.d/
scp /etc/profile.d/my_env.sh slave2:/etc/profile.d/

echo "#####测试环境变量#####"
ssh slave1 <<eof
source /etc/profile
java -version
hadoop version
ssh slave2
source /etc/profile
java -version
hadoop version
eof
#格式化集群
hdfs namenode -format

如果说集群格式化失败了,要重新格式化,一定要先把hadoop文件下的data、logs、history-logs目录下的文件删除了,如果启动了进程也要把进程给关闭了!!!!!

启动集群

#!/bin/bash
echo "########启动dfs#########"
start-dfs.sh
echo "####启动yarn历史服务器####"
mapred --daemon start historyserver
ssh slave1 <<eof
start-yarn.sh
jps
eof
echo "######查看启动的进程######"
jps

关闭集群

#!/bin/bash
echo "########关闭dfs#########"
stop-dfs.sh
echo "####关闭yarn历史服务器####"
mapred --daemon stop historyserver
ssh slave1 <<eof
stop-yarn.sh
jps
eof
echo "######查看启动的进程######"
jps

最后如果脚本有什么问题,请务必来喷我,,,,我好修改~~

标签:脚本,部署,ip,Hadoop,echo,etc,ssh,HOME,hadoop
From: https://www.cnblogs.com/hoyeong/p/16744350.html

相关文章