hadoop环境搭建之分布式的建立2

一、说在前面

  今天将三个虚拟机都装上了虚拟机,每一个都装了一遍,很后悔为什么没先装了之后再克隆,然后跟着老师的节奏写了一个分发脚本,为什么不先学分发脚本呢!

二、配置

======================core-site.xml====================

<configuration> 
        <!-- 指定NameNode的地址 -->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop102:8020</value>
        </property> 
        <!-- 指定hadoop数据的存储目录
                          官方配置文件中的配置项是hadoop.tmp.dir,用来指定hadoop数据的存储目录,这次配
置用的hadoop.data.dir是自己定义的变量,因为在hdfs-site.xml中会使用此配置的值来具体指定namenode和datanode存储数据的目录 -->
    
        <property>      
                <name>hadoop.data.dir</name>
                <value>/opt/module/hadoop-3.1.3/data</value>
        </property>
    
        <!-- 下面是兼容性配置,先跳过 -->
<!-- 配置改hao(superUer)允许通过代理访问的主机节点-->
        <property>
                <name>hadoop.proxyuser,hao.hosts</name>
                <value>*</value>
        </property>
<!-- 配置该hao(superUser)允许代理的用户所属组 -->
        <property>
                <name>hadoop.proxyuser.hao.groups</name>
                <value>*</value>
        </property>
<!-- 配置该hao(superUser)允许代理的用户 -->
        <property>
                <name>hadoop.proxyuser.hao.users</name>
                <value>*</value>
        </property>


</configuration>
core-site.xml
=======================hdfs-site.xml====================

        <!-- 指定副本数 -->
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>

        <!-- 指定NameNode数据的存储目录 -->
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>file://${hadoop.data.dir}/name</value>
        </property>
        <!-- 指定DataNode数据的存储目录 -->
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>file://${hadoop.data.dir}/data</value>
        </property>
        <!-- 指定SecondaryNameNode数据的存储目录 -->
        <property>
                <name>dfs.namenode.checkpoint.dir</name>
                <value>file://${hadoop.data.dir}/namesecondary</value>
        </property>

        <!-- 兼容配置,先跳过 -->
        <property>
                <name>dfs.client.datanode-restart.timeout</name>
                <value>30s</value>
        </property>

        <!-- 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>
hdfs-site.xml
=====================yarn-site.xml======================


<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>
        <!-- 取消虚拟内存的限制
        <property>
                <name>yarn.nodemanager.vmem-check-enabled</name>
                <value>false</value>
        </property>
        -->
yarn-site.xml
=====================MapReduce-site.xml=================

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

        <!-- 历史服务器端地址 -->
        <property>
                <name>mapreduce.jobhistory.address</name>q
                <value>hadoop102:10020</value>
        </property>
        <!-- 历史服务器web端地址 -->
        <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hadoop102:19888</value>
        </property>
mapreduce-site.xml

三、分发脚本

=======================xsync脚本(分发更新)======================

#!/bin/bash
#1.判断参数个数
if [ $# -lt 1 ]
then
    echo Not Enough Argument
    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
xcync

写完之后用chmod来更改权限,让其成为一个可执行文件,然后就可以当做shell命令来使用了。

原文地址:https://www.cnblogs.com/suanai/p/13973905.html