• CentOS7.5搭建Hadoop分布式集群


    材料:3台虚拟主机,ip分别为:

    192.168.1.201 
    192.168.1.202 
    192.168.1.203

    1、配置主机名称

    三个ip与主机名称分别对应关系如下:

    192.168.1.201 node201
    192.168.1.202 node202
    192.168.1.203 node203

    1)修改配置文件

    vi /etc/sysconfig/network
    <!-- 添加 -->
    
    NETEORKING=yes
    HOSTNAME=node203

    2)重启使生效

    service network restart

    3)检查

    hostname

    其他两个虚拟主机做同样的配置。

     2、建立主机名和ip的映射

    1)使三个虚拟主机通过节点名称直接相互访问

     vi /etc/hosts

    在3台虚拟机的/etc/hosts文件里面添加:

    192.168.1.201 node201
    192.168.1.202 node202
    192.168.1.203 node203

    2)使windows可以通过节点名称访问虚拟机

    和虚拟机一样添加内容:

    文件路径:C:WindowsSystem32driversetc

    3)测试

    虚拟机直接访问节点名称:

    windows访问节点名称:

     3、配置ssh免密码登录

     1)生成密钥

    ssh-keygen -t rsa 

    之后一直按回车

     2)检查密钥

    cd ~/.ssh/
     ls

    秘钥生成后在~/.ssh/目录下,有两个文件id_rsa(私钥)和id_rsa.pub(公钥)

     3)在主节点(node201)上将公钥复制到authorized_keys并赋予authorized_keys600权限

    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

    chmod 600 ~/.ssh/authorized_keys

     复制:

    赋权:

    3)同理在node202和node203节点上生成秘钥

    ssh-keygen -t rsa
    cat ~/.ssh/id_rsa.pub
     

    4)将node202和node203节点的秘钥复制到node201节点上的authoized_keys

    vi ~/.ssh/authorized_keys

    5)将node201节点上的authoized_keys远程传输到node202和node203的~/.ssh/目录下

    scp  ~/.ssh/authorized_keys root@node202:~/.ssh/
    scp  ~/.ssh/authorized_keys root@node203:~/.ssh/

    6)检查是否免密登录

     ssh node201

     

    4、新建hadoop用户及其用户组

    1)新建hadoop用户

    adduser hadoop
    passwd hadoop

    2)将hadoop用户归为hadoop组

    usermod -a -G hadoop hadoop
    cat /etc/group

    3)赋予hadoop用户root权限

    vi /etc/sudoers
    <!-- 添加 -->
    hadoop ALL=(ALL) ALL

     

    5、安装hadoop

    1)准备文件夹

    mkdir /home/soft/hadoop
    cd /home/soft/hadoop

    2)下载hadoop安装包

    wget /home/soft/hadoopwget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz

    3)解压hadoop安装包

    tar -zxvf hadoop-3.1.2.tar.gz

    4)配置环境变量

    vi /etc/profile
    
    
    <!-- 添加 -->
    export HADOOP_HOME=/home/soft/hadoop/hadoop-3.1.2
    
    :$HADOOP_HOME/bin:$HADOOP_HOME/sbin
     source /etc/profile

    5)查看hadoop版本

     

    6、搭建集群

    1)在node201节点上创建以下文件夹

    /home/soft/hadoop/hadoop-3.1.2/dfs/name

    /home/soft/hadoop/hadoop-3.1.2/dfs/data

    /home/soft/hadoop/hadoop-3.1.2/temp

    cd /home/soft/hadoop/hadoop-3.1.2
    mkdir -p dfs/name
    mkdir -p dfs/data
    mkdir temp

    2)配置hadoop文件

    需要配置/home/soft/hadoop/hadoop-3.1.2/etc/hadoop目录下的7个配置文件:

    【1】hadoop-env.sh

    vi hadoop-env.sh
    <!-- 添加 -->
    export JAVA_HOME=/home/soft/jdk/jdk1.8.0_191

    【2】mapred-env.sh

    vi mapred-env.sh
    <!-- 添加 -->
    export JAVA_HOME=/home/soft/jdk/jdk1.8.0_191

    【3】yarn-env.sh

    vi yarn-env.sh
    <!-- 添加 -->
    export JAVA_HOME=/home/soft/jdk/jdk1.8.0_191

     

    【4】core-site.xml

    vi core-site.xml
    

      

    <!-- 把两个NameNode的地址组装成一个集群mycluster -->
    <property>
       <name>fs.defaultFS</name>
       <value>hdfs://mycluster</value>
    </property>
    <!-- 指定hadoop运行时产生文件的存储目录 -->
    <property>
      <name>hadoop.tmp.dir</name>
      <value>/opt/module/hadoop-2.7.6/data/ha/tmp</value>
    </property>
    <!-- 指定ZKFC故障自动切换转移 -->
    <property>
         <name>ha.zookeeper.quorum</name>
         <value>node201:2181,node202:2181,node203:2181</value>
    </property>

    【5】hdfs-site.xml

     vi hdfs-site.xml
    <!-- 设置dfs副本数,默认3个 -->
    <property>
    <name>dfs.replication</name>
    <value>2</value>
    </property>
    <!-- 完全分布式集群名称 -->
    <property>
      <name>dfs.nameservices</name>
      <value>mycluster</value>
    </property>
    <!-- 集群中NameNode节点都有哪些 -->
    <property>
       <name>dfs.ha.namenodes.mycluster</name>
       <value>nn1,nn2</value>
    </property>
    <!-- nn1的RPC通信地址 -->
    <property>
       <name>dfs.namenode.rpc-address.mycluster.nn1</name>
       <value>node201:8020</value>
    </property>
    <!-- nn2的RPC通信地址 -->
    <property>
       <name>dfs.namenode.rpc-address.mycluster.nn2</name>
       <value>node202:8020</value>
    </property>
    <!-- nn1的http通信地址 -->
    <property>
       <name>dfs.namenode.http-address.mycluster.nn1</name>
       <value>node201:50070</value>
    </property>
    <!-- nn2的http通信地址 -->
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>node202:50070</value>
    </property>
    <!-- 指定NameNode元数据在JournalNode上的存放位置 -->
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://node201:8485;node202:8485;node203:8485/mycluster</value>
    </property>
    <!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <!-- 使用隔离机制时需要ssh无秘钥登录-->
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/admin/.ssh/id_rsa</value>
    </property>
    <!-- 声明journalnode服务器存储目录-->
    <property>
       <name>dfs.journalnode.edits.dir</name>
       <value>/opt/module/hadoop-2.7.6/data/ha/jn</value>
    </property>
    <!-- 关闭权限检查-->
    <property>
       <name>dfs.permissions.enable</name>
       <value>false</value>
    </property>
    <!-- 访问代理类:client,mycluster,active配置失败自动切换实现方式-->
    <property>
       <name>dfs.client.failover.proxy.provider.mycluster</name>
       <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <!-- 配置自动故障转移-->
    <property>
       <name>dfs.ha.automatic-failover.enabled</name>
       <value>true</value>
    </property> 

    【6】mapred-site.xml

    vi mapred-site.xml
    

      

    <!-- 指定mr框架为yarn方式 -->
     <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
     </property>
    <!-- 指定mr历史服务器主机,端口 -->
      <property>   
        <name>mapreduce.jobhistory.address</name>   
        <value>node201:10020</value>   
      </property>   
    <!-- 指定mr历史服务器WebUI主机,端口 -->
      <property>   
        <name>mapreduce.jobhistory.webapp.address</name>   
        <value>node201:19888</value>   
      </property>
    <!-- 历史服务器的WEB UI上最多显示20000个历史的作业记录信息 -->    
      <property>
        <name>mapreduce.jobhistory.joblist.cache.size</name>
        <value>20000</value>
      </property>
    <!--配置作业运行日志 --> 
      <property>
        <name>mapreduce.jobhistory.done-dir</name>
        <value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.intermediate-done-dir</name>
        <value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value>
      </property>
      <property>
        <name>yarn.app.mapreduce.am.staging-dir</name>
        <value>/tmp/hadoop-yarn/staging</value>
      </property>

    【7】yarn-site.xml 

    vi yarn-site.xml
    
    <!-- reducer获取数据的方式 -->
     <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
        <!--启用resourcemanager ha-->
        <property>
            <name>yarn.resourcemanager.ha.enabled</name>
            <value>true</value>
        </property>
        <!--声明两台resourcemanager的地址-->
        <property>
            <name>yarn.resourcemanager.cluster-id</name>
            <value>rmCluster</value>
        </property>
        <property>
            <name>yarn.resourcemanager.ha.rm-ids</name>
            <value>rm1,rm2</value>
        </property>
        <property>
            <name>yarn.resourcemanager.hostname.rm1</name>
            <value>node202</value>
        </property>
        <property>
            <name>yarn.resourcemanager.hostname.rm2</name>
            <value>node203</value>
        </property>
        <!--指定zookeeper集群的地址-->
        <property>
            <name>yarn.resourcemanager.zk-address</name>
            <value>node201:2181,node202:2181,node203:2181</value>
        </property>
        <!--启用自动恢复-->
        <property>
            <name>yarn.resourcemanager.recovery.enabled</name>
            <value>true</value>
        </property>
        <!--指定resourcemanager的状态信息存储在zookeeper集群-->
        <property>
            <name>yarn.resourcemanager.store.class</name>    
            <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
        </property>

     

    【8】新建slaves

    vi slaves
    

     

    node201
    node202
    node203

    2)将配置好的hadoop文件复制到其他节点上

    由于hadoop集群需要在每一个节点上进行相同的配置,因此先在node201节点上配置,然后再复制到其他节点上即可。

    scp -r /home/soft/hadoop/hadoop-3.1.2/etc/hadoop/ root@node202:/home/soft/hadoop/hadoop-3.1.2/etc/
    scp -r /home/soft/hadoop/hadoop-3.1.2/etc/hadoop/ root@node203:/home/soft/hadoop/hadoop-3.1.2/etc/

      

    7、启动验证集群

    1)格式化Namenode

    如果集群是第一次启动,需要格式化namenode

    hdfs namenode -format
    

    2)启动Hdfs

    start-dfs.sh
    

     启动报错:

  • 相关阅读:
    第三章 运算符与表达式
    python 第二章 对象与类型
    线段树区间染色+注意事项
    ACM-ICPC北京赛区2018重现赛 A题
    删除元组
    修改元组
    访问元组
    Python 元组
    Python List sort()方法
    hdu4501——小明系列故事——买年货(多维背包)
  • 原文地址:https://www.cnblogs.com/yybrhr/p/10382836.html
Copyright © 2020-2023  润新知