hadoop高可用搭建

HDFS HA 环境搭建

1.在完成zookeeper的基础上搭建
2.在完全分布式集群的主节点上修改配置文件
cd /usr/local/src/hadoop-2.6.0/etc/hadoop

核心配置文件
core-site.xml -> 修改

HDFS配置文件
hadoop-env.sh -> 不变
hdfs-site.xml -> 修改

MapReduce配置文件
mapred-env.sh -> 不变
mapred-site.xml -> 不变

slaves -> 修改
vi core-site.xml
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://mycluster</value>
    <description>把两个NameNode的地址组装成一个集群mycluster</description>
</property>

# 这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录
<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/src/hadoop-2.6.0/data/ha/tmp</value>
    <description>指定hadoop运行时产生文件的存储目录</description>
</property>

<property>
    <name>ha.zookeeper.quorum</name>
    <value>node:2181,node1:2181,node2:2181</value>
    <description>指定ZKFC故障自动切换转移</description>
</property>



vi hdfs-site.xml
<property>
    <name>dfs.replication</name>
    <value>2</value>
	<description>设置dsf副本数,默认3个</description>
</property>

<property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
	<description>完全分布式集群名称</description>
</property>

<property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>nn1,nn2</value>
	<description>集群中NameNode节点都有哪些</description>
</property>

<property>
    <name>dfs.namenode.rpc-address.mycluster.nn1</name>
    <value>node:8020</value>
	<description>nn1的RPC通信地址</description>
</property>

<property>
    <name>dfs.namenode.rpc-address.mycluster.nn2</name>
    <value>node1:8020</value>
	<description>nn2的RPC通信地址</description>
</property>

<property>
    <name>dfs.namenode.http-address.mycluster.nn1</name>
    <value>node:50070</value>
	<description>nn1的http通信地址</description>
</property>

<property>
    <name>dfs.namenode.http-address.mycluster.nn2</name>
    <value>node1:50070</value>
	<description>nn2的http通信地址</description>
</property>

<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://node:8485;node1:8485;node2:8485/mycluster</value>
	<description>指定NameNode元数据在JournalNode上的存放位置</description>
</property>

<property>
    <name>dfs.ha.fencing.methods</name>
    <value>
    sshfence
    shell(/bin/true)
    </value>
	<description>配置隔离机制,即同一时刻只能由一台服务器对外响应</description>
</property>

<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
	<description>使用隔离机制时需要ssh无密钥登录</description>
</property>

<property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/export/server/hadoop-2.6.0/data/ha/jn</value>
	<description>声明journalnode服务器存储目录</description>
</property>

<property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
	<description>关闭权限检查</description>
</property>

<property>
    <name>dfs.client.failover.proxy.provider.mycluster</name>    						   		  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	<description>指定mycluster出现故障时,负责执行故障切换的类</description>
</property>

<property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
	<description>配置自动故障转移</description>
</property> 


vi slaves
node
node1
node2
3.将主节点的配置文件分发给从节点
# 怎么分发要看所在文件夹位置和安装位置
scp -r ../hadoop node1:/$HADOOP_HOME/etc
scp -r hadoop node2:/usr/local/src/hadoop-2.6.0/etc
4.关闭集群,启动 zookeeper
# 在主节点输入,服务关闭的就不用管了
stop-all.sh

# 在所有节点输入
zkServer.sh start
zkServer.sh status  # 查看状态,正确的状态只有一台机器时leader,其余为follower
# 用jpa查看的进程时QuorumPeerMain
5.在主节点上格式化 zookeeper
hdfs zkfc -formatZK  # 目的是在Zookeeper集群上建立HA响应节点
6.启动 JournalNode 集群
# 在所有节点输入
hadoop-daemon.sh start journalnode  # 启动JournalNode是为了创建/data/ha/jn,此时jn里面是空的
7.格式化NameNode
# 格式化集群的一个NameNode节点,可以在nn1和nn2任选一个格式化。这里选nn1即主节点
hdfs namenode -format
# 格式化NameNode,此里面jn会产生集群等ID等信息,/data/ha/tmp也会产生相关信息。
8.启动 NameNode,并同步到备用 NameNode
# 在nn1即node(主节点)节点单独启动namenode进程:
hadoop-daemon.sh start namenode

# 将格式化的namenode节点信息同步到备用的NameNode(nn2即node1节点),并启动namenode进程:
# 在 node1 节点输入
hdfs namenode -bootstrapStandby
hadoop-daemon.sh start namenode
9.启动所有的 DataNode
# DataNode 是在 slaves 文件中配置的,所以在 nn1 即 node 节点上启动所有的 datanode 进程。
hadoop-daemons.sh start datanode
10.启动 ZKFailoverCotroller
# 在 node 和 node1 上分别启动 ZkFailoverCotroller(主备切换控制器),
# 是 NameNode 机器 上一个独立的进程(进程名为 zkfc)。
hadoop-daemon.sh start zkfc
11.到此就可以使用 jps 命令查看进程
node  六个
node1 六个
node2 四个

查看NameNode的节点状态
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

关于故障转移机制无效,下载插件
yum install psmisc

2-8

Yarn HA 环境搭建

1.在完成 HDFS HA 的基础上安装
关闭所有进程。
2.同样在hadoop目录下修改配置文件
vi yarn-site.xml

<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
	<description>NodeManager上运行的附属服务。
    指定NodeManager获取数据的方式是shuffle
    需配置成mapreduce_shuffle,才可运行MapReduce程序</description>
</property>

<property>
	<name>yarn.resourcemanager.ha.enabled</name>
	<value>true</value>
	<description>启用resourcemanager ha</description>
</property>

<property>
	<name>yarn.resourcemanager.cluster-id</name>
	<value>rmCluster</value>
	<description>指定resourcemanager的cluster-id</description>
</property>

<property>
	<name>yarn.resourcemanager.ha.rm-ids</name>
	<value>rm1,rm2</value>
	<description>声明两台resourcemanager的名字</description>
</property>

<property>
	<name>yarn.resourcemanager.hostname.rm1</name>
	<value>node</value>
	<description>指定第一台resourcemanager的地址</description>
</property>

<property>
	<name>yarn.resourcemanager.hostname.rm2</name>
	<value>node1</value>
	<description>指定第二台resourcemanager的地址</description>
</property>

<property>
	<name>yarn.resourcemanager.zk-address</name>
	<value>node:2181,node1:2181,node2:2181</value>
	<description>指定zookeeper集群的地址</description>
</property>

<property>
	<name>yarn.resourcemanager.recovery.enabled</name>
	<value>true</value>
	<description>启用自动恢复</description>
</property>

<property>
	<name>yarn.resourcemanager.store.class</name>
	<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
	<description>指定resourcemanager的状态信息存储在zookeeper集群地址</description>
</property>
3.远程分发
scp -r yarn-site.xml node1:/usr/local/src/hadoop-2.6.0/etc/hadoop/
scp -r yarn-site.xml node2:/usr/local/src/hadoop-2.6.0/etc/hadoop/

# 查看两个ResourceManager的节点状态
yarn rmadmin -getServiceState rm1
yarn rmadmin -getServiceState rm2

yarn rmadmin -transitionToStandby rm1

port:8088
4.启动 Hadoop HA 集群

(1).在三个节点上启动 ZooKeeper。zkServer.sh start

(2).在 node 和 node1 上启动 zkfc。hadoop-daemon.sh start zkfc

(3).在 node 上启动 hadoop 集群。start-all.sh

(4).在 node1 上启动 resourcemanager。yarn-daemon.sh start resourcemanager

-getServiceState rm2

yarn rmadmin -transitionToStandby rm1

port:8088


#### 4.启动 Hadoop HA 集群

(1).在三个节点上启动 ZooKeeper。zkServer.sh start

(2).在 node 和 node1 上启动 zkfc。hadoop-daemon.sh start zkfc

(3).在 node 上启动 hadoop 集群。start-all.sh

(4).在 node1 上启动 resourcemanager。yarn-daemon.sh start resourcemanager

**注:全部启动后。节点数分别为** **8 8 5**
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值