Hadoop全分布式安装


 Hadoop的全分布式安装    
  zookeeper管理节点
  Journalnode实时备份
  FailoverControll类实现 切换namenode的状态 active  standby

 

  需要配置的信息(3台云主机)
  【*练习过程中关闭防火墙,里面用到的zookeeper没写配置,到博客里面找找*】
  step1:配置主机名 /etc/hosts
    第一台:hadoop01
    第二台:hadoop02
    第三台:hadoop03
    source 一下
  step2:配置免密登陆
    生成密钥ssh-keygen
    进行复制ssh-copy-id 用户名@主机  需要复制到所有的主机
    然后重启
    #reboot
  step3:配置Hadoop
    配置 hadoop-env.sh 配置完成需要source
    配置 core-site.xml
    配置 hdfs-site.xml
    配置 mapred-site.xml  cp mapred-site.xml.template mapred-site.xml
    配置 yarn-site.xml
    编辑 slaves  添加datanode节点
    编辑环境变量 /etc/profile
  step4:具体配置
   【1】hadoop.env.sh
     JAVA_HOME=/home/preSoftware/jdk1.8
     HADOOP_CONF_DIR=/home/software/hadoop-2.7.1/etc/hadoop
     需要使配置生效 source hadoop.env.sh

 

   【2】core-site.xml
           <!--指定hdfs的nameservice,为整个集群起一个别名ns-->
           <property>
            <name>fs.defaultFS</name>        
            <value>hdfs://ns</value>
           </property>
           <!--指定Hadoop数据临时存放目录-->
           <property>
            <name>hadoop.tmp.dir</name>
                  <value>/home/software/hadoop-2.7.1/tmp</value>
           </property>
           <!--指定zookeeper的存放地址-->
           <property>
                  <name>ha.zookeeper.quorum</name>
           <!--集群中对应的主机名称和zookeeper的端口 对应配置文件在zookeeper的conf/zoo.cfg-->
                  <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
           </property>
                  
   【3】hdfs-site.xml
     <!--执行hdfs的nameservice为ns,注意要和core-site.xml中的名称保持一致-->
           <property>
                  <name>dfs.nameservices</name>
                  <value>ns</value>
           </property>
     <!--ns集群下有两个namenode,分别为nn1, nn2-->
     <!--dfs.ha.namenode.ns  ns是hdfs集群的名字-->
     <property>
      <name>dfs.ha.namenodes.ns</name>
      <value>nn1,nn2</value>
     </property>
     
           <!--nn1的RPC通信-->
           <property>
                  <name>dfs.namenode.rpc-address.ns.nn1</name>
                  <value>hadoop01:9000</value>
           </property>
     <!--nn1的http通信-->
     <property>
      <name>dfs.namenode.http-address.ns.nn1</name>
      <value>hadoop01:50070</value>
     </property>

 

           <!-- nn2的RPC通信地址 -->
                 <property>
                  <name>dfs.namenode.rpc-address.ns.nn2</name>
                  <value>hadoop02:9000</value>
                 </property>
     <!-- nn2的http通信地址 -->
     <property>
      <name>dfs.namenode.http-address.ns.nn2</name>
      <value>hadoop02:50070</value>
     </property>

 

     <!--指定namenode的元数据在JournalNode上存放的位置,这样-->
     <--,namenode2可以从journalnode集群里的指定位置上获取信息,达到热备效果-->
     <property>
      <name>dfs.namenode.shared.edits.dir</name>
      <value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/ns</value>
     </property>

 

     <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
     <property>
      <name>dfs.journalnode.edits.dir</name>
      <value>/home/software/hadoop-2.7.1/tmp/journal</value>
     </property>

 

     <!-- 开启NameNode故障时自动切换 -->
     <property>
      <name>dfs.ha.automatic-failover.enabled</name>
      <value>true</value>
     </property>
     <!-- 配置失败自动切换实现方式 不用修改-->
     <property>
            <name>dfs.client.failover.proxy.provider.ns</name>
            <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</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>/root/.ssh/id_rsa</value>
     </property>
     <!--配置namenode存放元数据的目录,可以不配置,如果不配置则默认放到hadoop.tmp.dir下-->
           <property>  
                  <name>dfs.namenode.name.dir</name>  
                  <value>file:///home/software/hadoop-2.7.1/tmp/hdfs/name</value>  
           </property>  
     <!--配置datanode存放元数据的目录,可以不配置,如果不配置则默认放到hadoop.tmp.dir下-->
     <property>  
                  <name>dfs.datanode.data.dir</name>  
                  <value>file:///home/software/hadoop-2.7.1/tmp/hdfs/data</value>  
           </property>
     <!--配置复本数量-->  
     <property>  
      <name>dfs.replication</name>  
      <value>3</value>  
     </property>
     <!--设置用户的操作权限,false表示关闭权限验证,任何用户都可以操作-->             
     <property>  
      <name>dfs.permissions</name>  
      <value>false</value>  
     </property>
   【4】mapred-site.xml 
     <!-- 名称mapreduce.framework.name指的是使用yarn运行mapreduce程序 -->
     <property>  
      <name>mapreduce.framework.name</name>  
      <value>yarn</value>  
     </property>
   【5】yarn-site.xml
     <!--配置yarn的高可用-->
           <property>
                  <name>yarn.resourcemanager.ha.enabled</name>
                  <value>true</value>
           </property>

 

     <!--指定两个resourcemaneger的名称-->
           <property>
                  <name>yarn.resourcemanager.ha.rm-ids</name>
                  <value>rm1,rm2</value>
           </property>

 

     <!--配置rm1的主机-->
           <property>
                  <name>yarn.resourcemanager.hostname.rm1</name>
                  <value>hadoop01</value>
           </property>

 

     <!--配置rm2的主机-->
           <property>
                  <name>yarn.resourcemanager.hostname.rm2</name>
                  <value>hadoop03</value>
           </property>

 

     <!--开启yarn恢复机制-->
           <property>
                  <name>yarn.resourcemanager.recovery.enabled</name>
                  <value>true</value>
           </property>

 

     <!--执行rm恢复机制实现类-->
     <property>
                  <name>yarn.resourcemanager.store.class</name>
                  <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
           </property>

 

     <!--配置zookeeper的地址-->
           <property>
                  <name>yarn.resourcemanager.zk-address</name>
                  <value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
           </property>
     <!--执行yarn集群的别名-->
           <property>
                  <name>yarn.resourcemanager.cluster-id</name>
                  <value>ns-yarn</value>
           </property>

 

     <!-- 指定nodemanager启动时加载server的方式为shuffle server -->
     <!-- yarn.nodemanager.aux-services在hadoop2.2.0版本中是mapreduce_shuffle -->
           <property>  
                  <name>yarn.nodemanager.aux-services</name>  
                  <value>mapreduce_shuffle</value>  
           </property>

 

     <!-- 指定resourcemanager地址 -->
     <!-- yarn.resourcemanager.hostname指的是运行ResourceManager机器所在的节点位置 -->
           <property>
                  <name>yarn.resourcemanager.hostname</name>
            <value>hadoop03</value>
           </property>
   
   【6】slaves
     <!-- 在slaves文件里所列出的所有结点上启动datanode因为我用的三台服务器,所以三个都是我哦的datanode -->
     hadoop01
     hadoop02
     hadoop03
   【7】配置环境变量
     export HADOOP_HOME=/home/software/hadoop-2.7.1
     export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
   【8】创建对应的存储文件的目录
     tmp/{hdfs,journal}   hdfs/{data,name}
  step5:
   选择其中一个节点进行zookeeper格式化注册
   #hdfs zkfc -formatZK
  step6:
   分别启动Journalnode 因为我这里设置hadoop01和hadoop02作为namenode所以只需要启动这两个节点即可
   #hadoop-daemon.sh start journalnode
  step7:
   格式化namenode节点 也就是hadoop01和hadoop02
   #hadoop namenode -format
   INFO common.Storage: Storage directory /home/software/hadoop-2.7.1/tmp/hdfs/name has been successfully formatted.
   出现successfully formatted 表示成功
  step8:
   启动namenode节点 hadoop01和hadoop02
   #hadoop-daemon.sh start namenode
  step9:
   启动datanode  slaves文件中配置的就是datanode节点
   #hadoop-daemon.sh start datanode
  step10:
   启动zkfc实现namenode状态的切换 active(master)和standby(热备)
   #hadoop-daemon.sh start zkfc
  step11:
   在hadoop01节点启动yarn 配置mapred-site.xml 这个命令可以在任何节点运行,只需在其中一个节点运行一次
   #start-yarn.sh
  step12:
   在hadoop03节点上启动resourcemanager     配置在yarn-site.xml
   #yarn-daemon.sh start resourcemanger
  配置完成进行访问
  web: http://ip:50070    ip就是namenode节点的ip
  点击overview 看到一个standby 另外一台是active
  完成

关闭命令 在namenode(active)节点 #stop-all.sh

这个命令一旦运行,所有的namenode和datanode以及Journalnode都将关闭

但是manager*没有关闭我搜了一下关闭命令如下

关闭Resourcemanager       # yarn-daemon.sh stop resourcemanager   
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值