hadoop完全分布式安装配置(备忘录)

Hadoop完全分布式中的概念

在Hadoop完全分布式的安装配置中,可以配置多个NameNode(最多两个),形成互为热备的状态,解决NameNode单节点故障的问题。

两个NameNode之间通过JN集群来共享元数据。基本的原理和Zookeeper类似,处于Active状态的NameNode,通过将元数据的更新发送给大部分的JN机器,保证只要JN集群大部分的机器存活,处于StandBy状态的NameNode可以同步到这些元数据。

两个NameNode通过Zookeeper实现选举,这个选举的过程是由FailOverController来具体执行的。

NameNode(Active):真正在工作状态的NameNode,保持着元数据,并将元数据的更新信息写入JN

NameNode(Standby):处在备用装填的NameNode,从JN中获取信息,同步元数据。

DataNode:保存数据的节点

JN集群:用来同步元数据的集群,为了防止单节点故障,做成了集群。

Zookeeper:负责集群协调,包括NameNode的选举

FailOverController:联系NameNode和Zookeeper的进程

Hadoop完全分布式集群规划

  1. Hadoop集群模式的安装配置原则
    1. 两个NameNode一般单独安装
    2. FailOverController的进程必须和NameNode装在一起
    3. ResourceManager一般单独安装或和NameNode安装到一起
    4. DataNode单独安装
    5. NodeManager一般和DataNode装在一起
    6. JN要么单独安装,要么和DataNode装在一起
    7. Zookeeper通常是一个单独的集群,如果没有条件也可以配置在hadoop集群中
  1. 五台机器的情况下 
    1. hadoop01  
      1. NameNode
      2. FailOverController
      3. ResourceManager
      4. Zookeeper
    2. hadoop02
      1. NameNode
      2. FailOverController
      3. Zookeeper
    3. hadoop03
      1. DataNode
      2. NodeManager
      3. JN
      4. Zookeeper
    4. hadoop04
      1. DataNode
      2. NodeManager
      3. JN
      4. Zookeeper
    5. hadoop05
      1. DataNode
      2. NodeManager
      3. JN
      4. Zookeeper
  2. 三台机器的情况
    1. hadoop01
      1. NameNode
      2. FailOverController
      3. ResourceManager
      4. DataNode
      5. NodeManager
      6. JN
      7. Zookeeper
    2. hadoop02
      1. NameNode
      2. FailOverController
      3. DataNode
      4. NodeManager
      5. JN
      6. Zookeeper
    3. hadoop03
      1. DataNode
      2. NodeManager
      3. JN
      4. Zookeeper

Hadoop完全分布式安装配置 - HDFS完全分布式 

  1. 准备工作
    1. 配置Host文件
    2. 关闭防火墙
    3. 配置ssh免密登录
    4. 安装JDK
    5. 安装Zookeeper
  2. Hadoop安装
    1. 解压Hadoop
    2. 配置hadoop-env.sh
      1. JAVA_HOME=jdk绝对路径
    3. 配置core-site
      <configuration>
      	<!-- 指定hdfs的nameservice为ns -->
      	<property>    
      		<name>fs.defaultFS</name>    
      		<value>hdfs://ns</value>
      	</property>
      	<!--指定hadoop数据临时存放目录-->
      	<property>
      	<!--在hadoop安装目录下 创建一个tmp目录-->
      		<name>hadoop.tmp.dir</name>
      		<value>/home/software/hadoop-2.7.1/tmp</value>
      	</property>   
      	<property>    
      		<name>io.file.buffer.size</name>    
      		<value>4096</value>    
      	</property>
          <!--指定zookeeper地址-->
      	<property>
      		<name>ha.zookeeper.quorum</name>
      		<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
      	</property>
      </configuration>

        

    4. 配置hdfs-site.xml
      <configuration>
      <!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致 -->    
          <property>    
      	<name>dfs.nameservices</name>    
      	<value>ns</value>    
      	</property>  
      	<!-- ns下面有两个NameNode,分别是nn1,nn2 -->
      	<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上的存放位置 -->
      	<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>
      	<property> 
      	<!--NameNode数据存放位置-->   
      	<name>dfs.namenode.name.dir</name>    
      	<value>file:///home/software/hadoop-2.7.1/tmp/hdfs/name</value>    
      	</property>    
      	<property>
      	<!--DataNode数据存放位置-->  
      	<name>dfs.datanode.data.dir</name>    
      	<value>file:///home/software/hadoop-2.7.1/tmp/hdfs/data</value>    
      	</property>    
      	<!--HDFS副本数量-->  
      	<property>    
      	<name>dfs.replication</name>    
      	<value>2</value>    
      	</property>    
      </configuration>
      

       

    5. 配置mapred-site.xml 

      <configuration>
      	<property>    
      	<name>mapreduce.framework.name</name>    
      	<value>yarn</value>    
          </property>
      </configuration>

       

    6. 配置yarn-site.xml
      <configuration>
      	<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
      	<property>    
      	<name>yarn.nodemanager.aux-services</name>    
      	<value>mapreduce_shuffle</value>    
      	</property>  
      	<!-- 指定resourcemanager地址 -->
      	<property>
      	<name>yarn.resourcemanager.hostname</name>
      	<value>hadoop01</value>
      	</property> 
      </configuration>
      

       

    7. 配置slaves

      hadoop01
      hadoop02
      hadoop03
      

       

    8. 复制hadoop到集群的其他机器
    9. 配置环境变量

      1. vim /etc/profile 修改HADOOP_HOME

  3. 启动完全分布式hadoop
    1. 启动zookeeper
      1. 在所有zk节点运行 zkServer.sh start

    2. 启动jn集群
      1. 在Active NameNode节点运行 hadoop-daemons.sh start journalnode

    3. 格式化zk中hadoop相关znode信息(第一次启动时)
      1. 在Active NameNode节点运行 hdfs zkfc -formatZK

    4. 格式化NameNode(第一次启动时)
      1. 在Active NameNode节点运行 hdfs namenode -format

    5. 启动NameNode
      1. 在Activ NameNode节点运行

        hadoop-daemon.sh start namenode

      2. 在standby NameNode节点运行

        hdfs namenode -bootStrapStandby(第一次启动时)

        hadoop-daemon.sh start namenode

    6. 启动DataNode
      1. 在ActiveNameNode节点上运行

        hadoop-daemons.sh start datanode

    7. 启动zkfc
      1. 在每个NameNode节点上运行

        hadoop-daemon.sh start zkfc

    8. 启动yarn(目前为非ha模式)
      1. 在ResourceManager节点启动yarn

        start-yarn.sh

Hadoop完全分布式安装配置 -YARN完全分布式 

  1. 修改yanr-site.xml
    <configuration>
    	<!-- 配置可以在 nodemanager 上运行 mapreduce 程序 -->
    	<property>
    	<name>yarn.nodemanager.aux-services</name>
    	<value>mapreduce_shuffle</value>
    	</property>
    	<!-- 激活 resourcemanager 高可用 -->
    	<property>
    	<name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    	</property>
    	<!-- 指定 resourcemanager 的集群 id -->
    	<property>
    	<name>yarn.resourcemanager.cluster-id</name>
    	<value>RM_CLUSTER</value>
    	</property>
    	<!-- 定义 RM 的节点-->
    	<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>hadoop02</value>
    	</property>
    	<!-- 激活 resourcemanager 自动恢复 -->
    	<property>
    	<name>yarn.resourcemanager.recovery.enabled</name>
    	<value>true</value>
    	</property>
    	<!-- 配置 resourcemanager 状态信息存储方式,有MemStore和ZKStore-->
    	<property>
    	<name>yarn.resourcemanager.store.class</name>
    	<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    	</property>
    	<!-- 配置为 zookeeper 存储时,指定 zookeeper 集群的地址 -->
    	<property>
    	<name>yarn.resourcemanager.zk-address</name>
    	<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
    	</property>
    </configuration>

     

  2. 启动yarn ha模式
    1. 在Active ResourceManager上启动

      start-yarn.sh

      在BackUp ResourceManager上启动

      yarn-daemon.sh start resourcemanager

  3. 通过浏览器查看
    1. hadoop01:8088

      hadoop02:8088

       

       

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值