美文网首页
云服务器配置hadoop完全分布式

云服务器配置hadoop完全分布式

作者: 刀拉 | 来源:发表于2020-05-11 21:25 被阅读0次

    centOS7.5+jdk8+hadoop3

    vim的一些简单命令

    i      ---插入进行修改
    esc  ---返回
    :wq  ---退出并保存
    

    修改主机名
    阿里云-master
    腾讯云-worker1
    百度云-worker2

    hostnamectl set-hostname master
    hostnamectl set-hostname worker1
    hostnamectl set-hostname worker2
    

    修改host文件

    vi /etc/hosts
    
    在阿里云服务器中,编辑/etc/hosts文件:
    47.98.xx.xxx master     ---阿里云私网IP地址    主机名
    a21.b21.c21.d21 worker1    ---腾讯云公网IP地址    主机名
    a21.b21.c21.d21 worker2    ---百度云公网IP地址    主机名
    
    在腾讯云服务器中,编辑/etc/hosts文件:
    a11.b11.c11.d11 master    ---阿里云公网IP地址    主机名
    a22.b22.c22.d22 worker1   --腾讯云私网IP地址    主机名
    a21.b21.c21.d21 worker2    ---百度云公网IP地址    主机名
    
    在百度云服务器中,编辑/etc/hosts文件:
    xx.xx.xx.xxx master     ---阿里云公网IP地址    主机名
    a21.b21.c21.d21 worker1    ---腾讯云公网IP地址    主机名
    a21.b21.c21.d21 worker2    ---百度云私网IP地址    主机名
    
    

    关闭所有节点的防火墙

    sudo systemctl stop firewalld.service # 关闭firewall
    sudo systemctl disable firewalld.service # 禁止firewall开机启动
    

    ssh免密码登录

    [root@master ~]# ssh-keygen -t rsa # 一路回车即可
    [root@master ~]# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 
    [root@master ~]# chmod 0600 ~/.ssh/authorized_keys
    [root@master ~]# scp ~/.ssh/authorized_keys root@worker1:~/.ssh
    [root@master ~]# scp ~/.ssh/authorized_keys root@worker2:~/.ssh 
    
    ssh localhost  此时没有密码就能登录
    ssh worker1
    ssh worker2
    
    image.png
    官网下载jdk很慢:
    华为有个镜像可以下载:https://repo.huaweicloud.com/java/jdk/
    hadoop下载地址
    http://mirrors.hust.edu.cn/apache/hadoop/common
    下载文件到/home文件夹下,
    cd /home
    cd /home    进入home文件夹,
    tar -zvxf jdk-8u201-linux-x64.tar.gz     解压jdk
    mv jdk1.8.0_201 java       重命名解压后的文件夹
    tar -zvxf hadoop-3.1.3.tar.gz       解压hadoop
    mv hadoop-3.1.3 hadoop
    
    vim /etc/profile  设置环境变量
    
    export JAVA_HOME=/home/java
    export HADOOP_HOME=/home/hadoop
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export YARN_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    
    source /etc/profile   是环境变量生效
    
    查看一下Hadoop和Java是不是配置好了

    worker1和worker2也用同样的方法配置

    $HADOOP_HOME/etc/hadoop/目录下
    配置hadoop-env.sh

    export JAVA_HOME=/home/java
    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
    

    core-site.xml

    <configuration>
       <property>
          <name>fs.default.name</name>
          <value>hdfs://master:9000</value>
          <description>文件系统URL,3个一样</description>
       </property>
       <property>
          <name>io.file.buffer.size</name>
          <value>131072</value>
      </property>
      <property>
           <name>hadoop.tmp.dir</name>
           <value>/var/log/hadoop/tmp</value>
           <description>A base for other temporary directories</description>
       </property>
    </configuration>
    

    hdfs-site.xml

    <configuration>
    <property>
          <name>dfs.namenode.secondary.http-address</name>
          <value>worker1:50090</value>
          <description>Secondary名称节点的URL</description>
       </property>
    
       <property>
          <name>dfs.namenode.name.dir</name>
          <value>file:///opt/hadoop/dfs/name </value>
          
       </property>
     <property>
          <name>dfs.datanode.data.dir</name>
          <value>file:///opt/hadoop/dfs/data </value>
          
       </property>
    <property>
          <name>dfs.replication</name>
          <value>2</value>
          <description>每个文件复制2块</description>
       </property>
     <property>
             <name>dfs.heartbeat.interval</name>
              <value>5</value>
    
              <description>默认值</description>
       </property>
    <property>
         <name>dfs.namenode.datanode.registration.ip-hostname-check</name>
         <value>false</value>
    </property>
    </configuration>
    

    yarn-site.xml

    <configuration>
    <!-- Reducer获取数据的方式 -->
    <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
    </property>
    
    <!-- 指定YARN的ResourceManager的地址 -->
    <property>
           <name>yarn.resourcemanager.webapp.address</name>
           <value>master:8088</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.resourcemanager.address</name>
        <value>master:8032</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>master:8030</value>
      </property>
      <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>master:8031</value>
      </property>
    </configuration>
    

    mapred-site.xml

    <configuration>
    <property>
          <name>mapreduce.framework.name</name>
          <value>yarn</value>
          <description>选择用yarn来管理</description>
       </property>
       
    </configuration>
    

    在worker文件加入datanode节点的主机名
    在master配好之后,发送到worker1和worker2

    scp $HADOOP_HOME/etc/hadoop/* root@worker1:$HADOOP_HOME/etc/hadoop/
    scp $HADOOP_HOME/etc/hadoop/* root@worker2:$HADOOP_HOME/etc/hadoop/
    
    hdfs namenode -format
    start-all.sh
    stop-all.sh
    

    遇到的一个大坑 ,要在云服务器配置安全组,开始只配置了自己笔记本ip加入安全组,可以在本地访问hadoop集群的网站,但是却发现没有datanode几点,查看worker1的日志,一直在重试连接master,看了各种博客,各种说法,格式化多次导致ID不匹配,防火墙没关,检查一遍又一遍,都没有问题,结果发现是worker1和worker2 的IP没有加到master的安全组!!!!!累死我了


    image.png

    相关文章

      网友评论

          本文标题:云服务器配置hadoop完全分布式

          本文链接:https://www.haomeiwen.com/subject/qlllhhtx.html