ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Hadoop完全分布式集群配置

2022-07-17 20:12:24  阅读:164  来源: 互联网

标签:opt Hadoop yarn hadoop sh 集群 HOME HADOOP 分布式


案例简介:

  • 1、Linux系统为centos7
    • 三台服务器名分别为 hadoop101hadoop102hadoop103
  • 2、Hadoop版本为3.2.3
  • 3、jdk版本为1.8

一、前置准备

1、配置网卡
vi /etc/sysconfig/network-scripts/ifcfg-eth0

修改如下内容:	
			BOOTPROTO=static
			ONBOOT=yes

在文件末尾添加如下内容:
IPADDR=192.168.225.10					# IP地址,必须要和对应的网卡在同一网段			
GATEWAY=192.168.100.2					# 网关地址默认从2开始,网络编辑器里面可以查看
DNS1=8.8.8.8
配置完成之后输入:systemctl restart network
输入 ip a ,查看是否配制成功
2、创建3个文件夹
  • 一个用来存放压缩包
  • 一个用来存放解压的软件包
  • 一个用来挂载centos本地镜像
3、关闭防火墙

防火墙需要先关闭才能禁用

systemctl stop firewalld;systemctl disable firewalld



systemctl stop firewalld————暂时关闭防火墙【重启后重新启动防火墙】
systemctl disable firewalld————永久禁用防火墙【重启后不启动防护网】
4、配置yum本地源
  • (1)挂载centos镜像

    • mount /dev/sr0 /opt/centos

      • 如果找不到镜像,需要进入设置,将CD/DVD 的已连接勾选
    • 配置yum本地文件

      • 1、先将yum.repo.d 移动到另外的地方,进行备份
        • mv /etc/yum.repo.d/* /mnt
        • vi /etc/yum.repo.d/my.repo
      • 配置文件
      [centos]
      name=centos
      baseurl=file:///opt/centos/						# centos镜像挂载的位置
      gpgcheck=0
      enabled=1
      
      :wq
      
5、使用yum安装vim,rsyncd
  • yum -y install vim
  • yum -y install rsync
6、克隆两台虚拟机
7、修改主机名(三台主机分别修改)
  • hostnamectl set-hostname hadoop101
  • hostnamectl set-hostname hadoop102
  • hostnamectl set-hostname hadoop103
8、设置SSH免密

三台主机都需要配置

ssh-keygen			# 输入后一直回车就行
ssh-copy 主机名	  # 输入后回车并输入密码,,,需要设置hosts映射才能直接使用主机名

二、环境配置

1、使用xftp传输压缩包到指定目录
  • 不一定要用xftp这个软件,只要能传输镜像文件到centos的软件即可。
2、使用tar命令解压文件
  • tar -zxvf /opt/gz/jdk -C /opt/app/
  • tar -zxvf /opt/gz/hadoop -C /opt/app/
3、修改解压后的安装包文件名
  • 进入压缩包解压的目录
    • cd /opt/app
  • 使用mv修改文件名(为了更好的配置环境变量等一系列操作)
    • mv hadoop... hadoop3.2.3
    • mv jdk... jdk1.8
4、配置环境变量
  • vim /etc/profire.d/my.sh
# JAVA_Env
export JAVA_HOME=/opt/app/jdk8
export PATH=$PATH:$JAVA_HOME/bin

# HADOOP_Env
export HADOOP_HOME=/opt/app/hadoop3.2.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin


:wq

source /etc/profile				# 刷新环境变量
java -version					# 如果报错就回去检查环境变量my_env.sh
hadoop version					#检查hadoop环境变量是否配置成功
5、分发Hadoop文件到各主机
  • 编写shell脚本,实现自动分发
    • vim xsync.sh
      注意:此次的sh脚本需要注意格式,错误的缩进会报错
#!/bin/bash
#1. 判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Arguement!
    exit;
fi
#2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
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
  • 将编写好的shell脚本赋予执行权限,并执行进行分发

    • sh xsync.sh /opt/app
    • sh xsync.sh /etc/profile.d
  • 分发完成后,在各集群上刷新环境变量,并进行检测

    • source /etc/profile
    • java -version
    • hadoop version

三、配置hadoop文件,并群起集群

注意:

NameNode 和 SecondaryNameNode 不要安装在同一台服务器

ResourceManager 也很消耗内存,不要和 NameNode、SecondaryNameNode 配置在同一台机器上。

hadoop101 hadoop102 hadoop103
hdfs NameNode DataNode secondaryNameNode
hdfs DataNode DataNode
yarn NodeManager ResourceManager,NodeManager NodeMange

(1)核心配置文件 core-site.xml

        cd $HADOOP_HOME/etc/hadoop
		
        vim core-site.xml
<configuration>
    <!-- 指定 NameNode 的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop101:8020</value>
        </property>
    <!-- 指定 hadoop 数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/app/hadoop3.2.3/data</value>
    </property>
    <!-- 配置 HDFS 网页登录使用的静态用户为 atguigu -->            
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>atguigu</value>
    </property>
</configuration>

(2)HDFS 配置文件 hdfs-site.xml

 vim hdfs-site.xml
<configuration>
    <!-- nn web 端访问地址-->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop101:9870</value>
    </property>
    <!-- 2nn web 端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop103:9868</value>
    </property>
</configuration>

(3)配置 yarn-site.xml

vim yarn-site.xml
<configuration>
<!-- 指定 MR 走 shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <!-- 指定 ResourceManager 的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop102</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>

(4)配置 mapred-site.xml

vim mapred-site.xml

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

(5)配置workers

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

vim workers

hadoop101
hadoop102
hadoop103

:wq

(7)启动集群

(1)如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode(注意:格式

化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找

不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停

止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式

化。)

hdfs namenode -format

(2)启动 HDFS

[atguigu@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh

(3)在配置了 ResourceManager 的节点(hadoop102)启动 YARN

[atguigu@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

(4)Web 端查看 HDFS 的 NameNode

192.168.225.10:9870

(5)Web 端查看 YARN 的 ResourceManager

192.168.225.20:8088

6、启动和停止服务器

1、各个模块分开启动/停止(配置 ssh 是前提)常用

(1)整体启动/停止 HDFS

start-dfs.sh/stop-dfs.sh

(2)整体启动/停止 YARN

start-yarn.sh/stop-yarn.sh

2、各个服务组件逐一启动/停止

(1)分别启动/停止 HDFS 组件

hdfs --daemon start/stop namenode/datanode/secondarynamenode

(2)启动/停止 YARN

yarn --daemon start/stop resourcemanager/nodemanager

标签:opt,Hadoop,yarn,hadoop,sh,集群,HOME,HADOOP,分布式
来源: https://www.cnblogs.com/hwt2022/p/16485116.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有