Hadoop2.0 HA集群搭建步骤

1.1.1. 集群节点分配

Park01

Zookeeper  

NameNode (active)

Resourcemanager (active)

 

Park02

Zookeeper

NameNode (standby)

 

 

Park03

Zookeeper

ResourceManager (standby)

 

 

Park04

DataNode

NodeManager

JournalNode

 

Park05

DataNode

NodeManager

JournalNode

 

Park06

DataNode

NodeManager

JournalNode

 

1.1.2. 安装步骤

0.永久关闭每台机器的防火墙

执行:service iptables stop

再次执行:chkconfig iptables off

 

1.为每台机器配置主机名以及hosts文件

配置主机名=》执行: vim  /etc/sysconfig/network =》然后执行  hostname  主机名=》达到不重启生效目的

 

配置hosts文件=》执行:vim /etc/hosts

示例:

127.0.0.1   localhost

::1         localhost

192.168.234.21 hadoop01

192.168.234.22 hadoop02

192.168.234.23 hadoop03

192.168.234.24 hadoop04

192.168.234.25 hadoop05

192.168.234.26 hadoop06

 

2.通过远程命令将配置好的hosts文件 scp到其他5台节点上

执行:scp  /etc/hosts  hadoop02: /etc

 

3.为每天机器配置ssh免秘钥登录

执行:ssh-keygen

  ssh-copy-id root@hadoop01 (分别发送到6台节点上)

 

4.前三台机器安装和配置zookeeper

配置conf目录下的zoo.cfg以及创建myid文件

zookeeper集群安装具体略)

5.为每台机器安装jdk和配置jdk环境

6.为每台机器配置主机名,然后每台机器重启,(如果不重启,也可以配合:hostname  hadoop01生效)

执行: vim /etc/sysconfig/network 进行编辑

 

 

7.安装和配置01节点的hadoop

配置hadoop-env.sh

配置jdk安装所在目录

配置hadoop配置文件所在目录 

 

8.配置core-site.xml

<configuration>

<!--用来指定hdfs的老大,ns为固定属性名,表示两个namenode-->

<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>

<value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>

</property>

</configuration>

 

9.配置01节点的hdfs-site.xml

<configuration>

<!--执行hdfsnameservicens,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>

<!--nn1RPC通信地址-->

<property>

<name>dfs.namenode.rpc-address.ns.nn1</name>

<value>hadoop01:9000</value>

</property>

<!--nn1http通信地址-->

<property>

<name>dfs.namenode.http-address.ns.nn1</name>

<value>hadoop01:50070</value>

</property>

<!--nn2RPC通信地址-->

<property>

<name>dfs.namenode.rpc-address.ns.nn2</name>

<value>hadoop02:9000</value>

</property>

<!--nn2http通信地址-->

<property>

<name>dfs.namenode.http-address.ns.nn2</name>

<value>hadoop02:50070</value>

</property>

<!--指定namenode的元数据在JournalNode上的存放位置,这样,namenode2可以从jn集群里获取最新的namenode的信息,达到热备的效果-->

<property>

<name>dfs.namenode.shared.edits.dir</name>

<value>qjournal://hadoop04:8485;hadoop05:8485;hadoop06:8485/ns</value>

</property>

<!--指定JournalNode存放数据的位置-->

<property>

<name>dfs.journalnode.edits.dir</name>

<value>/home/software/hadoop-2.7.1/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数据存放的位置,可以不配置,如果不配置,默认用的是core-site.xml里配置的hadoop.tmp.dir的路径-->

<property>

<name>dfs.namenode.name.dir</name>

<value>file:///home/software/hadoop-2.7.1/tmp/namenode</value>

</property>

<!--配置datanode数据存放的位置,可以不配置,如果不配置,默认用的是 core-site.xml里配置的hadoop.tmp.dir的路径-->

<property>

<name>dfs.datanode.data.dir</name>

<value>file:///home/software/hadoop-2.7.1/tmp/datanode</value>

</property>

 

<!--配置block副本数量-->

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件-->

<property>

<name>dfs.permissions</name>

<value>false</value>

</property>

</configuration>


10.配置mapred-site.xml

<configuration>

<property>

<!--指定mapreduce运行在yarn-->

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

</configuration>

11.配置yarn-site.xml

<configuration>

 <!-- 开启YARN HA -->

<property>

<name>yarn.resourcemanager.ha.enabled</name>

<value>true</value>

</property>

  <!-- 指定两个resourcemanager的名称 -->

<property>

<name>yarn.resourcemanager.ha.rm-ids</name>

<value>rm1,rm2</value>

</property>

<!-- 配置rm1rm2的主机 -->

<property>

<name>yarn.resourcemanager.hostname.rm1</name>

<value>hadoop01</value>

</property>

<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>

<description>For multiple zk services, separate them with comma</description>

</property>

<!-- 指定YARN HA的名称 -->

<property>

<name>yarn.resourcemanager.cluster-id</name>

<value>yarn-ha</value>

</property>

<property>

<!--指定yarn的老大 resoucemanager的地址-->

<name>yarn.resourcemanager.hostname</name>

<value>hadoop01</value>

</property>

<property>

<!--NodeManager获取数据的方式-->

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

</configuration>


12.配置slaves文件

配置代码:

hadoop04

hadoop05

hadoop06

 

13.配置hadoop的环境变量(可不配)

JAVA_HOME=/home/software/jdk1.8

HADOOP_HOME=/home/software/hadoop-2.7.1

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

export JAVA_HOME PATH CLASSPATH HADOOP_HOME

 

14.根据配置文件,创建相关的文件夹,用来存放对应数据

在hadoop-2.7.1目录下创建:

①journal目录

②创建tmp目录

③在tmp目录下,分别创建namenode目录和datanode目录

 

15.通过scp 命令,将hadoop安装目录远程copy到其他5台机器上

比如向hadoop02节点传输:

scp -r  hadoop-2.7.1  hadoop02:/home/software

然后把/etc/profile 发往其他5台机器,别忘了每台机器执行:source /etc/profile

 

 

1.1.3. Hadoop集群启动

16.启动zookeeper集群

在Zookeeper安装目录的bin目录下执行:sh zkServer.sh start

 

17.格式化zookeeper

zk的leader节点上执行:

hdfs zkfc -formatZK,这个指令的作用是在zookeeper集群上生成ha节点(ns节点) 

 

注:18--24步可以用一步来替代:进入hadoop安装目录的sbin目录,执行:start-dfs.sh 。但建议还是按部就班来执行,比较可靠。

18.启动journalnode集群

在04、05、06节点上执行:

切换到hadoop安装目录的sbin目录下,执行:

sh hadoop-daemons.sh start journalnode

然后执行jps命令查看:

 

 

19.格式化01节点的namenode

在01节点上执行:

hadoop namenode -format


20.启动01节点的namenode

在01节点上执行:

hadoop-daemon.sh start namenode

 

21.把02节点的 namenode节点变为standby namenode节点

在02节点上执行:

hdfs namenode  -bootstrapStandby


22.启动02节点的namenode节点

02节点上执行:

hadoop-daemon.sh start namenode

 

23.在04,05,06节点上启动datanode节点

在04,05,06节点上执行: hadoop-daemon.sh start datanode

 

24.启动zkfc(启动FalioverControllerActive)

01,02节点上执行:

hadoop-daemon.sh start zkfc

  

 

25.在01节点上启动 主Resourcemanager

在01节点上执行:start-yarn.sh

  


启动成功后,04,05,06节点上应该有nodemanager 的进程

 

26.在03节点上启动副 Resoucemanager

在03节点上执行:yarn-daemon.sh start resourcemanager

 

27.测试

输入地址:http://192.168.234.21:50070,查看namenode的信息,是active状态的

  

输入地址:http://192.168.234.22:50070,查看namenode的信息,是standby状态

  

 

然后停掉01节点的namenode,此时返现standbynamenode变为active

 

28.查看yarn的管理地址

http://192.168.234.21:8088(节点018088端口)

 

停掉:yarn-daemon.sh stop resourcemanager

启动:yarn-daemon.sh start resourcemanager

 

排错:

1.排查防火墙

2.排查ip,如果不是固定ip的话,要看下ip是否被更换

3.主机名

4.hosts  ip和主机名是否对应上

5.排查zk的配置文件

6.排查hadoop的配置文件

 

插件:

 

 

此外注意,job连接的地址是active的 namenode的地址

 

 

1.1. 集群环境准备

1.连接克隆6个虚拟机

2.关闭6个虚拟机的防火墙

3.通过xshell连好

4.配置每台虚拟机的主机名和hosts文件

5.配置免密码登录,

注意,内存至少一个G

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值