hadoop_zookeeper高可用配置文件修改&启动步骤说明

  1. core-site.xml 配置
  2. hdfs-site.xml 配置
  3. mapred-site.xml 配置
  4. yarn-site.xml 配置
  5. slaves 配置
  6. HadoopHA启动步骤说明

1. core-site.xml 配置

<!-- 指定hdfs的nameservice为,如hadoop1,统一对外提供服务的名字
不再单独指定某一个机器节点-->
<property>
	<name>fs.defaultFS</name>
	<value>hdfs://hadoop1/</value>
</property>


<!-- 指定hadoop数据存储目录,自己指定 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/tmp/hadoop/data</value>
</property>


<!-- 依赖zookeeper,所以指定zookeeper集群访问地址,名字为不同集群机器的hostname -->
<property>
	<name>ha.zookeeper.quorum</name>
	<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>


<!-- 下面的配置是为了解决以后其他组件连接HDFS集群做准备的
开始可以无需要配置-->
<property>
	<name>hadoop.proxyuser.bigdata.hosts</name>
	<value>*</value>
</property>
<property>
	<name>hadoop.proxyuser.bigdata.groups</name>
	<value>*</value>
</property>

2. hdfs-site.xml 配置


<!-- 指定副本的数量 -->
<property>
	<name>fs.replication</name>
	<value>2</value>
</property>

<!-- 指定hdfs的nameservice为myns1(在core-site.xml配置的一致) -->
<property>
	<name>dfs.nameservices</name>
	<value>myns1</value>
</property>

<!-- hadoopHA下面有两个Namenode,分别是nn1,nn2 -->
<property>
	<name>dfs.ha.namenodes.myns1</name>
	<value>nn1,nn2</value>
</property>

<!-- nn1的RPC通信地址,myns1为前后对应的,hadoop1是其中一个namenode地址 -->
<property>
	<name>dfs.namenode.rpc-address.myns1.nn1</name>
	<value>hadoop1:9000</value>
</property>

<!-- nn1的http通信地址,myns1为前后对应的 -->
<property>
	<name>dfs.namenode.http-address.myns1.nn1</name>
	<value>hadoop1:50070</value>
</property>

<!-- nn2的RPC通信地址,myns1为前后对应的,hadoop2是其中一个namenode地址 -->
<property>
	<name>dfs.namenode.rpc-address.myns1.nn2</name>
	<value>hadoop2:9000</value>
</property>

<!-- nn2的http通信地址,myns1为前后对应的 -->
<property>
	<name>dfs.namenode.http-address.myns1.nn2</name>
	<value>hadoop2:50070</value>
</property>

<!-- 指定namenode的edits元数据在JournalNode上的存放位置 -->
<property>
	<name>dfs.namenode.shared.edits.dir</name>
	<value>qjournal://hadoop1:8485;hadoop2:8485;hadoop3:8485/myns1</value>
</property>

<!-- 指定namenode在本地磁盘存放数据的位置
     journaldata目录自己创建并且指定
-->
<property>
	<name>dfs.journalnode.edits.dir</name>
	<value>/opt/tmp/hadoop/journaldata</value>
</property>

<!-- 开启NameNode失败自动切换,监控体系发现activity挂了,把备用的启用  -->
<property>
	<name>dfs.ha.automatic-failover.enabled</name>
	<value>true</value>
</property>

<!-- 配置失败自动切换实现方式  -->
<!-- 此处配置在安装的时候切记检查不要换行 ,注意myns1是上面配置的集群服务名 -->
<property>
	<name>dfs.client.failover.proxy.provider.myns1</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>

<!-- 使用sshfence隔离机制时需要ssh免登陆,注意这里是id_rsa文件地址  -->
<property>
	<name>dfs.ha.fencing.ssh.private-key-files</name>
	<value>/home/账户名/.ssh/id_rsa</value>
	<!-- 如果直接使用root,则路径为 /root/.ssh/id_rsa -->
</property>

<!-- 配置sshfence隔离机制超时时间 -->
<property>
	<name>dfs.ha.fencing.ssh.connect-timeout</name>
	<value>30000</value>
</property>

<!--  -->
<property>
	<name>dfs.webhdfs.enabled</name>
	<value>true</value>
</property>


3. mapred-site.xml 配置

<!-- 指定mr框架为yarn方式 -->
<property>
	<name>mapreduce.framework.name</name>
	<value>yarn</value>
</property>


<!-- 指定mapreduce的历史服务器地址和端口号 -->
<property>
	<name>mapreduce.jobhistory.address</name>
	<value>hadoop1:10020</value>
</property>


<!-- 指定mapreduce的web访问地址 -->
<property>
	<name>mapreduce.jobhistory.webapp.address</name>
	<value>hadoop1:19888</value>
</property>

4. yarn-site.xml 配置

<!-- 开启YARN高可用 -->
<property>
	<name>yarn.resourcemanager.ha.enabled</name>
	<value>true</value>
</property>


<!-- 指定RM的cluster id,该value可以随意 -->
<property>
	<name>yarn.resourcemanager.cluster-id</name>
	<value>yrc</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>hadoop1</value>
</property>


<property>
	<name>yarn.resourcemanager.hostname.rm2</name>
	<value>hadoop2</value>
</property>


<!-- 指定zookeeper集群地址 -->
<property>
	<name>yarn.resourcemanager.zk-address</name>
	<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>


<!-- 要运行MapReduce程序必须配置的附属服务 -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>


<!-- Yarn集群的聚合日志最长保留时间 -->
<property>
	<name>yarn.log-aggregation.retain-seconds</name>
	<value>86400</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>

5. slaves 配置

将集群datanode节点机器名放在这里,换行即可,如:
hadoop1
hadoop2
hadoop3


6. HadoopHA启动步骤说明


(注意:一定要配置好环境变量,不然命令找不到。)

1、分别在(每个)机器上启动zookeeper集群(jps看到QuorumPeerMain进程)
    zkServer.sh start
	
	
2、(每个)机器上启动 journalnode(最好是奇数台机器)
   (hadoop-daemon.sh start journalnode)
   启动完毕后jps能看到JournalNode进程
   
   
3、在(一个)namenode节点上进行格式化
	hadoop namenode -format
	注释说明:(格式化成功后在配置的data目录下,有个dfs,里面有name和data,因为没有启动集群,data是空的因为格式化后暂时没有内容)
			  (name中存储元数据,data存真数据)
			  (name下有current,下面有4个文件,就是元数据信息<fsimage.....,seen_txid,VERSION>)
   
   
4、在(格式化后namenode的机器)上找到存放数据的data目录,然后拷贝到另外一个机器备份的data目录下,保持初始元数据一致。
     下面是例子,具体目录自己决定。
     scp -r data hadoop02:/opt/temp
     scp -r data hadoop03:/opt/temp
	 
	 
5、在第任何一个namenode上执行zkfc -formatZK操作(#格式化zookeeper),命令如下:
   hdfs zkfc -formatZK
   
   
   启动进程
6、start-dfs.sh
7、start-yarn.sh


8、测试(如果只是练习非必要)
   1)分别在每个机器上jps查看状态
   2)分别访问两个namenode机器上的50070界面,查看状态是否一个是Active,另外一个是Standby
   3)也可以测试访问一下yarn集群
   4)高可用测试,测试主备切换
   (将active状态的namenode进程干掉,kill -9 xxxxid)
   (可以再使用单节点启动方式启动namenode:hadoop-daemon.sh start namenode)


	在另外一台resourceManager机器上单独启动resourceManager进程:
	yarn-daemon.sh start resourcemanager


	yarn高可用测试和hadoop一样,访问的端口是8088

	启动历史服务器
	mr-jobhistory-daemon.sh start historyserver

	yarn-daemon.sh start nodemanager
	yarn-daemon.sh start resourcemanager

	然后两台机器分别启动resourcemanager即可

	命令方式查看hadoop状态:hdfs haadmin -getServiceState nn2
	命令方式查看yarn状态:yarn rmadmin -getServiceState rm1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值