Hadoop高可用配置

高可用配置

修改配置文件(路径:/hadoop/etc/hadoop/下)
  • 配置core-site.xml

<configuration>
		<!-- hdfs的nameservics命名为ns --> 
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://ns</value>
        </property>
        <!--指定hadoop数据存放目录--> 
        <property>
                <name>hadoop.tmp.dir</name>
                <value>opt/hadoop/tmp</value>
        </property>
		<!-- 指定zookeeper地址 -->
        <property>
                <name>ha.zookeeper.quorum</name>
                <value>hadoop001:2181,hadoop002:2181,hadoop003:2181</value>

        <property>
                <name>hadoop.proxyuser.root.hosts</name>
                <value>*</value>
        </property>
        <property>
                <name>hadoop.proxyuser.root.groups</name>
                <value>*</value>
        </property>
</configuration>
  • 配置hdfs-site.xml
<configuration>
		<!--指定hdfs的nameservice为ns,需要和core-site.xml中的保持一致-->
        <property>
                <name>dfs.nameservices</name>
                <value>ns</value>
        </property>
		<!--指定ns下的namenode节点-->
        <property>
                <name>dfs.ha.namenodes.ns</name>
                <value>hadoop001,hadoop002</value>
        </property>
		<!--设置hadoop001的hhtp通信地址:50070端口-->
        <property>
                <name>dfs.namenode.http-address.ns.hadoop001</name>
                <value>hadoop001:50070</value>
        </property>
		<!--设置hadoop002的hhtp通信地址:50070端口-->
        <property>
                <name>dfs.namenode.http-address.ns.hadoop002</name>
                <value>hadoop002:50070</value>
        </property>
		<!--设置hadoop001的rpc通信地址:9000端口-->
        <property>
                <name>dfs.namenode.rpc-address.ns.hadoop001</name>
                <value>hadoop001:9000</value>
        </property>
		<!--设置hadoop002的rpc通信地址:9000端口-->
		<property>
                <name>dfs.namenode.rpc-address.ns.hadoop002</name>
                <value>hadoop002:9000</value>
        </property>
		<!--namenode的元数据在journalnode(datanode)的存放位置:8485端口-->
		#3台JournalNode地址,后台跟名字,但后面的名字不能与nameService相同
        <property>
                <name>dfs.namenode.shared.edits.dir</name>
                <value>qjournal://hadoop001:8485;hadoop002:8485;hadoop003:8485/ns1</value>
        </property>
        <!-- 配置journalnode本地存放数据路径 -->
		<property>
				<name>dfs.journalnode.edits.dir</name>
				<value>/opt/journalnode</value>
		</property>
		<!--开启namenode故障时自动切换功能-->
        <property>
                <name>dfs.ha.automatic-failover.enabled</name>
                <value>true</value>
        </property>
		<!--设置namenode自动切换方式-->
        <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
                  shell(/bin/true)
                </value>
        </property>
		<!--超时设置-->
		<property>
                <name>dfs.ha.fencing.ssh.connect-timeout</name>
                <value>30000</value>
        </property>
        <!--备份数量-->
   		<property>      
      		 <name>dfs.replication</name>      
      		 <value>3</value> 
         <!-- 在NN和DN上开启WebHDFS (REST API)功能,不是必须 --> 
        <property>
                <name>dfs.webhdfs.enabled</name>
                <value>true</value>
        </property>
        <!--namenode文件存储路径-->
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/opt/hadoop/tmp/data/namenode</value>
        </property>
        <!--datanode文件存储路径--> 
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/opt/hadoop/tmp/data/datanode</value>
        </property>

</configuration>
  • 配置mapred-site.xml
<configuration>
		
		<!-- 指定mapReduce运行在year上 -->
        <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
        </property>
        
		<!-- 配置历史服务节点 -->
        <property>
                <name>mapreduce.jobhistory.address</name>
                <value>hadoop001.101:10020</value>
        </property>
        
         <!--web网页访问配置-->
       <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>hadoop001:19888</value>
        </property>
</configuration>
  • 配置yarn-site.xml
<configuration>
		<!-- 开启rm(高可用) -->
        <property>
                <name>yarn.resourcemanager.ha.enabled</name>
                <value>true</value>
        </property>
		<!-- 指定rm集群cluster id -->
        <property>
                <name>yarn.resourcemanager.cluster-id</name>
                <value>cluster-id</value>
        </property>
		<!-- 指定主、备rm的名称 -->
        <property>
                <name>yarn.resourcemanager.ha.rm-ids</name>
                <value>rm1,rm2</value>
        </property>
		<!-- 指定rm映射关系 -->
        <property>
                <name>yarn.resourcemanager.hostname.rm1</name>
                <value>hadoop001</value>
        </property>
        <property>
                <name>yarn.resourcemanager.hostname.rm2</name>
                <value>hadoop002</value>
        </property>
		<!-- 开放端口地址 -->
        <property>
                <name>yarn.resourcemanager.webapp.address.rm1</name>
                <value>hadoop001:8088</value>
        </property>
        <property>
                <name>yarn.resourcemanager.webapp.address.rm2</name>
                <value>hadoop002:8088</value>
        </property>
		<!-- 配置zookeeper集群 -->
        <property>
                <name>yarn.resourcemanager.zk-address</name>
                <value>hadoop001:2181,hadoop002:2181,hadoop003:2181</value>
        </property>
		<!-- reducer获取数据方式 -->
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
                <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
		<!-- 日志聚集功能使用 -->
        <property>
                <name>yarn.log-aggregation-enable</name>
                <value>true</value>
        </property>
		<!-- 日志保留时间设置7天 -->
        <property>
                <name>yarn.log-aggregation.retain-seconds</name>
                <value>604800</value>
        </property>

</configuration>
  • 修改slaves文件:加入所有节点名
  • 将配置好的文件传至其他节点(省事): scp etc/hadoop/*.xml root@主机名:$PWD/etc/hadoop
  • 启动所有节点的journalnode服务:hadoop-daemon.sh start journalnode
  • 格式化(仅主节点):hadoop namenode -format
  • 将主节点hadoop下的tmp目录传至其他节点:scp -r tmp root@主机名:$PWD
  • 启动所有节点的zookeeper:zkServer.sh start //启动后可以查看一下zk状态zkServer status
  • 启动hadoop(仅主节点):start-all.sh
  • 启动备用节点上的resourcemanager:yarn-daemon.sh start resourcemanager
  • 主节点格式化zkfc(首次启动):hdfs zkfc -formatZK
  • 主备启动zkfc(首次启动):hadoop-daemon.sh start zkfc
  • 启动jobhistory:mr-jobhistory-daemon.sh start historyserver
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是hadoop高可用集群配置的步骤: 1. 配置hadoop集群的core-site.xml文件,增加如下配置: ```xml <property> <name>fs.defaultFS</name> <value>hdfs://mycluster</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>zk1:2181,zk2:2181,zk3:2181</value> </property> ``` 2. 配置hadoop集群的hdfs-site.xml文件,增加如下配置: ```xml <property> <name>dfs.nameservices</name> <value>mycluster</value> </property> <property> <name>dfs.ha.namenodes.mycluster</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn1</name> <value>node1:8020</value> </property> <property> <name>dfs.namenode.rpc-address.mycluster.nn2</name> <value>node2:8020</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn1</name> <value>node1:50070</value> </property> <property> <name>dfs.namenode.http-address.mycluster.nn2</name> <value>node2:50070</value> </property> <property> <name>dfs.namenode.shared.edits.dir</name> <value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/data/journal</value> </property> <property> <name>dfs.ha.fencing.methods</name> <value>sshfence</value> </property> <property> <name>dfs.ha.fencing.ssh.private-key-files</name> <value>/home/hadoop/.ssh/id_rsa</value> </property> <property> <name>dfs.ha.automatic-failover.enabled</name> <value>true</value> </property> ``` 3. 配置hadoop集群的mapred-site.xml文件,增加如下配置: ```xml <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> ``` 4. 配置hadoop集群的yarn-site.xml文件,增加如下配置: ```xml <property> <name>yarn.resourcemanager.ha.enabled</name> <value>true</value> </property> <property> <name>yarn.resourcemanager.cluster-id</name> <value>mycluster</value> </property> <property> <name>yarn.resourcemanager.ha.rm-ids</name> <value>rm1,rm2</value> </property> <property> <name>yarn.resourcemanager.hostname.rm1</name> <value>node1</value> </property> <property> <name>yarn.resourcemanager.hostname.rm2</name> <value>node2</value> </property> <property> <name>yarn.resourcemanager.webapp.address.rm1</name> <value>node1:8088</value> </property> <property> <name>yarn.resourcemanager.webapp.address.rm2</name> <value>node2:8088</value> </property> <property> <name>yarn.resourcemanager.zk-address</name> <value>zk1:2181,zk2:2181,zk3:2181</value> </property> ``` 5. 配置zookeeper集群的zoo.cfg文件,增加如下配置: ```cfg server.1=node1:2888:3888 server.2=node2:2888:3888 server.3=node3:2888:3888 ``` 6. 在每个节点上创建一个myid文件,文件内容为该节点在zookeeper集群中的编号,例如在node1上创建myid文件,文件内容为1。 7. 启动zookeeper集群。 8. 在hadoop集群的每个节点上启动journalnode: ```bash hadoop-daemon.sh start journalnode ``` 9. 在namenode1上格式化hdfs: ```bash hdfs namenode -format ``` 10. 在namenode1上启动hdfs: ```bash start-dfs.sh ``` 11. 在namenode1上启动yarn: ```bash start-yarn.sh ``` 12. 在namenode1上启动自动故障转移: ```bash hdfs haadmin -transitionToActive nn1 ``` 13. 在namenode2上启动hdfs: ```bash start-dfs.sh ``` 14. 在namenode2上启动yarn: ```bash start-yarn.sh ``` 15. 在namenode2上启动自动故障转移: ```bash hdfs haadmin -transitionToStandby nn2 ``` 16. 测试hadoop高可用集群是否正常工作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值