栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

Hadoop双节点&Hive搭建自动化脚本

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hadoop双节点&Hive搭建自动化脚本

初始化环境脚本 jdk安装脚本 hadoop双节点脚本 hive安装脚本
cat install_jdk-hadoop-hive.sh
#!/bin/bash
DIR=/usr/local/src
JDK_FILE="jdk-8u291-linux-x64.tar.gz"
JDK_DIR="/usr/local"

#hadoop node节点
HADOOPnode1=10.0.7.1
HADOOPnode2=10.0.7.2

#安装hadoop多节点时候,需要先在hadoop 2上执行,然后在在hadoop1上执行

HADOOP_FILE='hadoop-2.7.7.tar.gz'
HADOOP_DIR='/usr/local'

HIVE_FILE='apache-hive-2.3.9-bin.tar.gz'
HIVE_DIR='/usr/local'
MYSQLip=10.0.7.1
HIVEmima=hive

#安装hive 之前先操作mysql数据库,重新初始化时候必须清空hive库
#create user 'hive' identified by 'hive';
#grant all privileges on *.* to 'hive'@'%' with grant option;
#create database hive;
#alter database hive character set latin1;


color () {
    RES_COL=60
    MOVE_TO_COL="echo -en \033[${RES_COL}G"
    SETCOLOR_SUCCESS="echo -en \033[1;32m"
    SETCOLOR_FAILURE="echo -en \033[1;32m"
    SETCOLOR_WARNING="echo -en \033[1;33m"
    SETCOLOR_NORMAL="echo -en E[0m"
    echo -n "$2" && $MOVE_TO_COL
    echo -n "["
    if [ $1 = "success" -o $1 = "0" ] ;then
	    ${SETCOLOR_SUCCESS}
	    echo -n $" OK "
    elif [ $1 = "failure" -o $1 = "1" ] ; then
	    ${SETCOLOR_FAILURE}
	    echo -n $"FAILED"
    else
	    ${SETCOLOR_WARNING}
	    echo -n $"WARNING"
    fi
    ${SETCOLOR_NORMAL}
    echo -n "]"
    echo
}

initialize () {
sed -i '/SELINUX=enforcing/c SELINUX=disabled' /etc/selinux/config &&setenforce 0
systemctl disable --now firewalld
}

install_jdk () {
if ! [ -f "$DIR/$JDK_FILE" ] ;then
	color 1 "$JDK_FILE 文件不存在"
	exit;
elif [ -d $JDK_DIR/jdk ] ;then
	color 1 "JDK 已经安装"
        exit;
else  
	[ -d "$JDK_DIR" ] || mkdir -pv $JDK_DIR
fi

tar xvf $DIR/$JDK_FILE -C $JDK_DIR
cd $JDK_DIR && ln -s jdk1.8.* jdk

cat > /etc/profile.d/jdk.sh << EOF
export JAVA_HOME=$JDK_DIR/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
EOF
source /etc/profile.d/jdk.sh
java -version && color 0 "JDK 安装完成" || { color 1 "JDK 安装失败" ; exit;}

sleep 3

source /etc/profile.d/jdk.sh
yum install -y rsync

echo $HADOOPnode1 hadoop1 >> /etc/hosts
echo $HADOOPnode2 hadoop2 >> /etc/hosts

}

install_hadoop2 () {
hostnamectl set-hostname hadoop2

if ! [ -f "$DIR/$HADOOP_FILE" ] ;then
        color 1 "$HADOOP_FILE 文件不存在"
        wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
        exit;
elif [ -d $HADOOP_DIR/hadoop ] ;then
        color 1 "Hadoop 已经安装"
        exit;
else
        [ -d "$HADOOP_DIR" ] || mkdir -pv $HADOOP_DIR
fi

tar -xvf $DIR/$HADOOP_FILE -C $HADOOP_DIR

cd $HADOOP_DIR && ln -sv hadoop* hadoop

cat > /etc/profile.d/hadoop.sh << EOF
export HADOOP_HOME=$HADOOP_DIR/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
EOF

source /etc/profile.d/hadoop.sh
hadoop version && color 0 "Hadoop2 安装完成" || { color 1 "Hadoop 安装失败" ; exit;}

sleep 3
source /etc/profile.d/hadoop.sh

}

install_hadoop1 () {

hostnamectl set-hostname hadoop2

if ! [ -f "$DIR/$HADOOP_FILE" ] ;then
	color 1 "$HADOOP_FILE 文件不存在"
        wget https://archive.apache.org/dist/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz
	exit;
elif [ -d $HADOOP_DIR/hadoop ] ;then
	color 1 "Hadoop 已经安装"
        exit;
else  
	[ -d "$HADOOP_DIR" ] || mkdir -pv $HADOOP_DIR
fi

tar -xvf $DIR/$HADOOP_FILE -C $HADOOP_DIR

cd $HADOOP_DIR && ln -sv hadoop* hadoop

cat > /etc/profile.d/hadoop.sh << EOF
export HADOOP_HOME=$HADOOP_DIR/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
EOF

source /etc/profile.d/hadoop.sh

hadoop version && color 0 "Hadoop1 安装完成" || { color 1 "Hadoop 安装失败" ; exit;}

sleep 3
source /etc/profile.d/hadoop.sh
#配置hadoop环境脚本文件中的JAVA_HOME参数
mkdir $HADOOP_DIR/hadoop/tmp
cd $HADOOP_DIR/hadoop/etc/hadoop/

sed -i 's/export JAVA_HOME=${JAVA_HOME}/export JAVA_HOME="/usr/local/jdk"/' $HADOOP_DIR/hadoop/etc/hadoop/hadoop-env.sh

echo export JAVA_HOME="/usr/local/jdk" >>  $HADOOP_DIR/hadoop/etc/hadoop/mapred-env.sh
echo export JAVA_HOME="/usr/local/jdk" >>  $HADOOP_DIR/hadoop/etc/hadoop/yarn-env.sh

#修改hadoop配置文件

#core-site.xml
cat > $HADOOP_DIR/hadoop/etc/hadoop/core-site.xml << EOF






    fs.defaultFS
    hdfs://$HADOOPnode1:8020


    
    hadoop.tmp.dir
    $HADOOP_DIR/hadoop/tmp



    hadoop.proxyuser.root.hosts
    *


    hadoop.proxyuser.root.groups
    *



EOF
#hdfs-site.xml  hdfs文件系统模块设置

cat > $HADOOP_DIR/hadoop/etc/hadoop/hdfs-site.xml << EOF





  dfs.namenode.secondary.http-address
  $HADOOPnode2:9868




  dfs.webhdfs.enabled
  true



EOF
#mapred-site.xml #MapReduce模块设置
cat > $HADOOP_DIR/hadoop/etc/hadoop/mapred-site.xml << EOF




    mapreduce.framework.name
    yarn



    mapreduce.jobhistory.address
    $HADOOPnode2:10020



    mapreduce.jobhistory.webapp.address
    $HADOOPnode2:19888


EOF

#yarn-site.xml
cat > $HADOOP_DIR/hadoop/etc/hadoop/yarn-site.xml << EOF





    yarn.resourcemanager.hostname
    $HADOOPnode1



    yarn.nodemanager.aux-services
    mapreduce_shuffle



    yarn.log-aggregation-enable
    false


EOF
#在etc/hadoop/slaves增加子节点,使用IP地址即可
cd $HADOOP_DIR/hadoop/etc/hadoop/
cat > $HADOOP_DIR/hadoop/etc/hadoop/slaves << EOF
$HADOOPnode1
$HADOOPnode2
EOF

#依次分发配置文件到子节点

rsync -av $HADOOP_DIR/hadoop/etc/hadoop/ $HADOOPnode2:$HADOOP_DIR/hadoop/etc/hadoop/

sleep 5
#格式化NameNode
cd $HADOOP_DIR/hadoop/
./bin/hdfs namenode -format

#启动HDFS
$HADOOP_DIR/hadoop/sbin/start-dfs.sh
#启动YARN
$HADOOP_DIR/hadoop/sbin/start-yarn.sh

jps 
sleep 3
}

install_Hive () {
if ! [ -f "$DIR/$HIVE_FILE" ] ;then
        color 1 "$HIVE_FILE 文件不存在"
        wget https://mirror.tuna.tsinghua.edu.cn/apache/hive/hive-2.3.9/apache-hive-2.3.9-bin.tar.gz --no-check-certificate
        exit;
elif [ -d $HIVE_DIR/hive ] ;then
        color 1 "Hive 已经安装"
        exit;
else
        [ -d "$HIVE_DIR" ] || mkdir -pv $HIVE_DIR
fi
tar -xvf $DIR/$HIVE_FILE -C $HIVE_DIR
cd $HIVE_DIR && ln -sv apache-hive* hive

#下载mysql jar包,将jar包放在hive lib目录下
cd $HIVE_DIR/hive/lib/
wget https://mirror.tuna.tsinghua.edu.cn/mysql/downloads/Connector-J/mysql-connector-java-8.0.26.tar.gz --no-check-certificate

tar -xvf mysql-connector-java-8.0.26.tar.gz
mv mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar .
rm -rf mysql-connector-java-8.0.26 mysql-connector-java-8.0.26.tar.gz
#升级hive中的guava依赖的hadoop版本
cd $HIVE_DIR/hive/lib/
mv guava*.jar guava.jar-bak
cd $HADOOP_DIR/hadoop/share/hadoop/hdfs/lib/

ln -sv $HADOOP_DIR/hadoop/share/hadoop/hdfs/lib/guava-*.jar $HIVE_DIR/hive/lib/

cat > /etc/profile.d/hive.sh << EOF
export HIVE_HOME=$HIVE_DIR/hive
export PATH=$PATH:$HIVE_HOME/bin
EOF
source /etc/profile.d/hive.sh

sleep 1

source /etc/profile.d/hive.sh

color 0 "Hive 安装完成"
#关闭hadoop安全模式
hdfs dfsadmin -safemode leave
#创建hive数仓目录
hadoop fs -mkdir -p $HIVE_DIR/hive/warehouse
hadoop fs -mkdir -p $HIVE_DIR/hive/tmp
#授权
hadoop fs -chmod 777 $HIVE_DIR/hive/warehouse
hadoop fs -chmod 777 $HIVE_DIR/hive/tmp
#检查这两个目录是否成功创建
hadoop fs -ls $HIVE_DIR/hive/

#配置hive环境
cd $HIVE_DIR/hive/conf/
cp hive-log4j2.properties.template hive-log4j2.properties
sed -i 's/property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}/property.hive.log.dir = $HIVE_DIR/hive/log/' hive-log4j2.properties

cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties
sed -i 's/property.hive.log.dir = ${sys:java.io.tmpdir}/${sys:user.name}/property.hive.log.dir =$HIVE_DIR/hive/exelog/' hive-exec-log4j2.properties

#配置hive-site文件
cd $HIVE_DIR/hive/conf
cat > $HIVE_DIR/hive/conf/hive-site.xml << EOF



    
    
        hive.exec.scratchdir
        $HIVE_DIR/hive/tmp
    
    
    
        hive.scratch.dir.permission
        733
    
    
    
        hive.metastore.warehouse.dir
        $HIVE_DIR/hive/warehouse
    
    
    
        javax.jdo.option.ConnectionURL
        jdbc:mysql://$MYSQLip:3306/hive?createDatabaseIfNotExist=true
    
    
    
        javax.jdo.option.ConnectionDriverName
        com.mysql.cj.jdbc.Driver
    
    
    
        javax.jdo.option.ConnectionUserName
        hive
    
    
    
        javax.jdo.option.ConnectionPassword
        $HIVEmima
    
    
    
        hive.cli.print.header
        true
    
    
    
        hive.cli.print.current.db
        true
    
    
        hive.server2.enable.doAs
        false
    
    
        hive.metastore.sasl.enabled
        false
    
    
        hive.server2.authenication
        NONE
    


EOF
#启动前先检查hadoop是否已经启动
#初始化Metastore元信息Schema
$HIVE_DIR/hive/bin/schematool -initSchema -dbType mysql

#后台启动hiveserver2
mkdir $HIVE_DIR/hive/log
nohup $HIVE_DIR/hive/bin/hiveserver2 >> $HIVE_DIR/hive/log/nohup.hs2.log 2>&1 &

#后台启动metastore
nohup hive --service metastore >> $HIVE_DIR/hive/log/metastore.log 2>&1 &

#查看hive的两个进程
ps -ef |grep hive

}

stop_hadoop () {
$HADOOP_DIR/hadoop/sbin/stop-dfs.sh
$HADOOP_DIR/hadoop/sbin/stop-yarn.sh
}

start_hadoop () {
$HADOOP_DIR/hadoop/sbin/start-dfs.sh
$HADOOP_DIR/hadoop/sbin/start-yarn.sh 
}

start_hive () {

nohup $HIVE_DIR/hive/bin/hiveserver2 >> $HIVE_DIR/hive/log/nohup.hs2.log 2>&1 &

nohup hive --service metastore >> $HIVE_DIR/hive/log/metastore.log 2>&1 &

}

#hadoop2上执行,把下面注释打开
#initialize
#install_jdk
#install_hadoop2

#hadoop1上执行,把下面注释打开
#initialize
#install_jdk
#install_hadoop1
#install_Hive

#启动、关停的命令
#hadoop
#stop_hadoop
#start_hadoop
#hive
#start_hive

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/896544.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号