zoukankan      html  css  js  c++  java
  • 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命令来使用了。

  • 相关阅读:
    JavaScript if 条件语句
    JavaScript while 循环
    JavaScript for 循环
    JavaScript 字典
    JavaScript 数组
    JavaScript 函数
    JavaScript 定时器
    JavaScript 字符串操作
    CEF js调用C#封装类含注释
    多网卡的环境下的发包
  • 原文地址:https://www.cnblogs.com/suanai/p/13973905.html
Copyright © 2011-2022 走看看