Hadoop集群部署(附集群启停脚本)

集群部署规划(Hadoop3.1.3)

hadoop1hadoop2hadoop3
HDFS

NameNode

DataNode

DataNode

SecondaryNameNode

DataNode

YARNNodeManager

ResourceManager

NodeManager

NodeManager

(注意:1、NameNode和SecondaryNameNode不要安装在同一台服务器。2、ResourceManager也很消耗内存,不要和NameNode、SecondaryNameNode配置在同一台服务器。)

1.配置/etc/hosts集群名称(三台节点)

10.34.80.51 hadoop1
10.34.80.52 hadoop2
10.34.80.53 hadoop3

2.配置ssh免密登录(hadoop1)

   切换到~家目录 cd ~

   显示隐藏文件 ls -al

   进入.ssh,执行下面命令:

ssh-keygen -t rsa

   按3次回车

   将hadoop1的公钥拷贝到hadoop1(自己也需要拷贝) hadoop2 hadoop3

   ssh-copy-id hadoop1

   ssh-copy-id hadoop2

   ssh-copy-id hadoop3

   hadoop2 hadoop3执行上述两步操作

3.编写集群分发脚本(hadoop1)

   cd到/usr/local/bin/目录下,新建文件xsync,增加下面内容:

#1. 判断参数个数
if [ $# -lt 1 ]
then
        echo Not Enough Arguement!
        exit;
fi 

#2. 遍历集群所有机器                 
for host in hadoop1 hadoop2 hadoop3
do        
    echo ==================== $host ====================       
    #3. 遍历所有目录,挨个发送        
    for file in $@         
    do                   
        #4. 判断文件是否存在                  
        if [ -e $file ]                         
            then                                  
                #5. 获取父目录                                  
                pdir=$(cd -P $(dirname $file); pwd)                                 
                #6. 获取当前文件的名称                                  
                fname=$(basename $file)                                  
                ssh $host "mkdir -p $pdir"                                 
                rsync -av $pdir/$fname $host:$pdir                        
            else                  
                echo $file does not exists!
       fi 
    done
done

4.安装hadoop和jdk(hadoop1)

   下载jdk和hadoop安装包,上传到/opt/module/software/下

   执行tar -zxvf hadoop安装包名 -C /opt/module/

   执行tar -zxvf jdk安装包名 -C /opt/module/

5.使用脚本分发到hadoop2、hadoop3

   cd到/opt/module/下,执行命令:

xsync /hadoop-3.1.3
xsync /jdk1.8.0_212

6.配置jdk和hadoop环境变量(hadoop1)

   /etc/profile.d/下新建文件my_env.sh,增加下面内容:

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

   使用脚本分发到hadoop2、hadoop3

xsync /etc/profile.d/my_env.sh

   在所有节点上执行命令使环境变量生效:

source /etc/profile.d/my_env.sh

7.hadoop配置文件说明

      hadoop配置文件分两类:默认配置文件和自定义配置文件,只有用户想修改某一默认配置值时,才需要修改自定义配置文件,更改相应属性值。

      其中自定义配置文件:core-site.xml、hdfs-site.xml、yarn-site.xml、mapred-site.xml四个配置文件存放在$HADOOP_HOME/etc/hadoop这个路径下,用户可以根据项目需求重新进行修改配置。

8.修改自定义配置文件(hadoop1)

     配置core-site.xml

<configuration>
    <!-- 指定NameNode的地址 -->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://hadoop1:8020</value>
	</property>
	<!-- 指定hadoop数据的存储目录 -->
	<property>
		<name>hadoop.tmp.dir</name>
		<value>/opt/module/hadoop-3.1.3/data</value>
	</property>
	<!-- 配置HDFS网页登录使用的静态用户 -->
	<property>
		<name>hadoop.http.staticuser.user</name>
		<value>root</value>
	</property>
</configuration>

    配置hdfs-site.xml

<configuration>
	<!-- nn web端访问地址 -->
	<property>
		<name>dfs.namenode.http-address</name>
		<value>hadoop1:9870</value>
	</property>
	<!-- 2nn web端访问地址 -->
	<property>
		<name>dfs.namenode.secondary.http-address</name>
		<value>hadoop3:9868</value>
	</property>

	<property>
		<name>dfs.permissions</name>
		<value>false</value>
	</property>
</configuration>

     配置yarn-site.xml

<configuration>
	<!-- 指定MR走shuffle -->
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>
	<!-- 指定ResourceMnager的地址 -->
	<property>
		<name>yarn.resourcemanager.hostname</name>
		<value>hadoop2</value>
	</property>
	<!-- 环境变量的继承 -->
	<property>
		<name>yarn.nodemanager.env-whitelist</name>
		<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
	</property>
</configuration>

    配置mapred-site.xml 

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
	<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
	</property>
</configuration>

9.配置workers(hadoop1)

   切换到目录hadoop3.1.3/etc/hadoop

   vi workers

   hadoop1

   hadoop2

   hadoop3

10.分发到hadoop2、hadoop3

   切换到目录hadoop3.1.3/etc/下,执行命令:

xsync hadoop

11.启动集群(hadoop1)

   (注意:如果集群是第一次启动,需要在hadoop1节点格式化NameNode,格式化NameNode会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到以往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)

   切到hadoop3.1.3目录执行下面命令:

hdfs namenode -format

    启动集群命令:

sbin/start-dfs.sh

    启动历史服务器命令:

mapred --daemon start historyserver

12.启动yarn(hadoop2)

   切到hadoop3.1.3目录执行下面命令:

sbin/start-yarn.sh

13.查看hadoop集群启动情况

    1、通过jps命令查看

          hadoop1节点:NameNode、NodeManager、DataNode

          hadoop2节点:ResourceManager、NodeManager、DataNode

          hadoop3节点:SecondaryNameNode、NodeManager、DataNode

    2、通过前端界面查看

          访问yarn界面:http://hadoop2:8088/

          访问hdfs界面:http://hadoop1:9870/

14.hadoop集群启停脚本

   cd到/usr/local/bin/目录下,新建hdp.sh

#! /bin/bash
if [ $# -lt 1 ]
then 
	echo "No Args Input..."
	exit ;
fi
case $1 in
"start")
	echo "==================启动hadoop集群==================="
	
	echo "------------------启动hdfs------------------"
	ssh hadoop1 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
	echo "------------------启动yarn------------------"
	ssh hadoop2 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh"
;;
"stop")
	echo "==================关闭hadoop集群=================="
	
	echo "------------------关闭yarn------------------"
	ssh hadoop2 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh"
	echo "------------------关闭hadoop----------------"
	ssh hadoop1 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
	echo "Input Args Error..."
;;
esac

启动hadoop集群:hdp.sh start

停止hadoop集群:hdp.sh stop

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值