当前位置 博文首页 > bleso:Hadoop完全分布式集群配置

    bleso:Hadoop完全分布式集群配置

    作者:bleso 时间:2021-05-02 18:16

    目录
    • 准备三台客户机
      • 模板虚拟机准备
        • 安装模板虚拟机
        • 配置
        • 关闭防火墙
        • 卸载虚拟机自带的JDK
      • 克隆虚拟机
        • 修改克隆机ip
        • 修改克隆机主机名
    • 安装JDK和Hadoop
    • 配置环境变量
    • 配置集群
      • 编写集群分发脚本xsync
      • ssh无密登录
      • 配置文件
    • 群起集群
      • 配置workers
      • 启动集群
    • 配置历史服务器
    • 配置日志的聚集

    准备三台客户机

    模板虚拟机准备

    安装模板虚拟机

    1. ip地址192.168.10.100
    2. 主机名称hadoop100
    3. 内存4g
    4. 硬盘50g

    配置

    1. 测试网络

      ping www.baidu.com
      
    2. 安装epel-release

      yum install -y epel-release
      
    3. 安装net-tools

      yum install -y net-tools
      
    4. 安装vim

      yum install -y vim
      

    关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld.service
    

    卸载虚拟机自带的JDK

     rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
    

    克隆虚拟机

    利用hadoop100,克隆出hadoop102、hadoop103、hadoop104

    修改克隆机ip

    1. 修改静态ip

      vim /etc/sysconfig/network-scripts/ifcfg-ens33
      
      DEVICE=ens33
      TYPE=Ethernet
      ONBOOT=yes
      BOOTPROTO=static
      NAME="ens33"
      IPADDR=192.168.10.102
      PREFIX=24
      GATEWAY=192.168.10.2
      DNS1=192.168.10.2
      
    2. 查看 Linux 虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8image-20210501153433555image-20210501153525525

    3. 查看 Windows 系统适配器 VMware Network Adapter VMnet8 的 IP 地址image-20210501153751285

    4. 保证 Linux 系统 ifcfg-ens33 文件中 IP 地址、虚拟网络编辑器地址和 Windows 系统 VM8 网络 IP 地址相同。

    修改克隆机主机名

    1. 修改主机名称

      vim /etc/hostname
      
      hadoop102
      
    2. 配置 Linux 克隆机主机名称映射 hosts 文件,打开/etc/hosts

       vim /etc/hosts
      
      192.168.10.100 hadoop100
      192.168.10.101 hadoop101
      192.168.10.102 hadoop102
      192.168.10.103 hadoop103
      192.168.10.104 hadoop104
      192.168.10.105 hadoop105
      192.168.10.106 hadoop106
      192.168.10.107 hadoop107
      192.168.10.108 hadoop108
      
    3. 修改 windows 的主机映射文件(hosts 文件)

      1. 进入 C:\Windows\System32\drivers\etc 路径

      2. 打开 hosts 文件并添加如下内容,然后保存

        192.168.10.100 hadoop100
        192.168.10.101 hadoop101
        192.168.10.102 hadoop102
        192.168.10.103 hadoop103
        192.168.10.104 hadoop104
        192.168.10.105 hadoop105
        192.168.10.106 hadoop106
        192.168.10.107 hadoop107
        192.168.10.108 hadoop108
        

    安装JDK和Hadoop

    3.x版本的hadoop不支持jdk11,这里我们使用jdk8

    1. 用 xftp 传输工具将 JDK,hadoop导入到 opt 目录下面的 software 文件夹下面

    2. 将事先在/opt/software 下的jdk,hadoop解压到指位置

    tar -zxvf jdk-8u291-linux-x64.tar.gz -C /opt/module/
    tar -zxvf hadoop-3.1.3.tar.gz -C /opt/module/
    

    配置环境变量

    1. 新建/etc/profile.d/my_env.sh 文件

      vim /etc/profile.d/my_env.sh
      
    2. #JAVA_HOME
      export JAVA_HOME=/opt/module/jdk8
      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
      
      #root用户使用Hadoop需要的环境变量
      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"
      
    3. source /etc/profile
      
    4. 检测

      java -version
      hadoop version
      

    配置集群

    编写集群分发脚本xsync

    1. scp(secure copy)安全拷贝

      scp -r $pdir/$fname $user@$host:$pdir/$fname
      
    2. rsync 远程同步工具

      rsync -av $pdir/$fname $user@$host:$pdir/$fname
      
    3. xsync集群分发脚本

      1. 在/root/bin/下建立脚本

        vim xsync
        
        #!/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
        
      2. 修改权限

        chmod +x xsync
        

    ssh无密登录

    1. 生成公钥和私钥

      pwd
      /root/.ssh/
      
      ssh-keygen -t rsa
      
    2. 将公钥拷贝到要免密登录的目标机器上

      ssh-copy-id hadoop102
      ssh-copy-id hadoop103
      ssh-copy-id hadoop104
      
    3. 其它机器同理配置一遍

    配置文件

    1. 配置 core-site.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <configuration>
       	<!-- 指定 NameNode 的地址 -->
          <property>
       		<name>fs.defaultFS</name>
          	<value>hdfs://hadoop102:8020</value>
          </property>
          <!-- 指定 hadoop 数据的存储目录 -->
          <property>
          	<name>hadoop.tmp.dir</name>
           	<value>/opt/module/hadoop-3.1.3/data</value>
          </property>
          <!-- 配置 HDFS 网页登录使用的静态用户为 atguigu -->
          <property>
          	<name>hadoop.http.staticuser.user</name>
           	<value>atguigu</value>
          </property>
      </configuration>
      
    2. 配置 hdfs-site.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <configuration>
      <!-- nn web 端访问地址-->
      	<property>
       		<name>dfs.namenode.http-address</name>
       		<value>hadoop102:9870</value>
      	</property>
      <!-- 2nn web 端访问地址-->
      	<property>
       		<name>dfs.namenode.secondary.http-address</name>
       		<value>hadoop104:9868</value>
      	</property>
      </configuration>
      
    3. 配置 yarn-site.xml

      <?xml version="1.0" encoding="UTF-8"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <configuration>
       	<!-- 指定 MR 走 shuffle -->
       	<property>
       		<name>yarn.nodemanager.aux-services</name>
       		<value>mapreduce_shuffle</value>
       	</property>
       	<!-- 指定 ResourceManager 的地址-->
       	<property>
       		<name>yarn.resourcemanager.hostname</name>
       		<value>hadoop103</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

      <?xml version="1.0" encoding="UTF-8"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <configuration>
      <!-- 指定 MapReduce 程序运行在 Yarn 上 -->
       	<property>
       	<name>mapreduce.framework.name</name>
       	<value>yarn</value>
       	</property>
      </configuration>
      
    5. 分发集群配置文件

      xsync /opt/module/hadoop-3.1.3/etc/hadoop
      

    群起集群

    配置workers

    vim /opt/module/hadoop-3.1.3/etc/hadoop/workers
    
    hadoop102
    hadoop103
    hadoop104
    

    同步配置文件

    xsync /opt/module/hadoop-3.1.3/etc
    

    启动集群

    1. 如果第一次启动需要在102节点格式化NameNode

      若集群崩溃应先删除每台机器的./data、./logs

      hdfs namenode -format
      
    2. 启动 HDFS

      start-dfs.sh
      
    3. 在配置了 ResourceManager的节点(hadoop103)启动 YARN

      start-yarn.sh
      
    4. Web 端查看 HDFS 的 NameNode

      1. 浏览器中输入:http://hadoop102:9870

      2. 查看 HDFS 上存储的数据信息

    5. Web 端查看 YARN 的 ResourceManager

      1. 浏览器中输入:http://hadoop103:8088
      2. 查看 YARN 上运行的 Job 信息

    配置历史服务器

    1. 配置 mapred-site.xml

      <!-- 历史服务器端地址 -->
      <property>
       	<name>mapreduce.jobhistory.address</name>
       	<value>hadoop102:10020</value>
      </property>
      <!-- 历史服务器 web 端地址 -->
      <property>
       	<name>mapreduce.jobhistory.webapp.address</name>
       	<value>hadoop102:19888</value>
      </property>
      
    2. 分发配置

      xsync $HADOOP_HOME/etc/hadoop/mapred-site.xml
      
    3. 在 hadoop102启动历史服务器

      mapred --daemon start historyserver
      
    4. 查看JobHistory http://hadoop102:19888/jobhistory

    配置日志的聚集

    1. 配置yarn-site.xml

       vim yarn-site.xml
      
      <!-- 开启日志聚集功能 -->
      <property>
       	<name>yarn.log-aggregation-enable</name>
       	<value>true</value>
      </property>
      <!-- 设置日志聚集服务器地址 -->
      <property> 
       	<name>yarn.log.server.url</name> 
       	<value>http://hadoop102:19888/jobhistory/logs</value>
      </property>
      <!-- 设置日志保留时间为 7 天 -->
      <property>
       	<name>yarn.log-aggregation.retain-seconds</name>
       	<value>604800</value>
      </property>
      
    2. 分发配置

    3. 重启NodeManager、ResourceManager 和 HistoryServer

    bk