hadoop(13)--分布式集群搭建

首先思考一个问题:hadoop分布式集群的主要工作在什么地方?
HDFS分布式文件存储的集群,分布式文件存储要保持文件的一致性,这个是一个重点,那么怎么搭建才能保持一致性呢,这个问题前辈们已经给出了解决方案,总结为一张图


hadoop(13)--分布式集群搭建_第1张图片
image.png

解释一下上图:
1,两个NameNode只有一个提供服务两一个处于休眠
2,当提供服务的节点发生异常的时候,通过监控zkfc,修改zookeeper的临时节点,另一个监控zkfc,感知到之后,就会发出ssh kill指令将异常的NameNode杀掉,若在杀掉的过程工出现超时或者其他异常,会执行一个脚本(这个脚本是我们自己的脚本,是为了可靠的将异常服务杀掉)后,启动standby的节点,启动之后状态位activity
3,若手动将异常节点启动,则是一个standyby,很好理解,先来后到嘛,哈哈···
理解了之后,继续开车
我是这么规划的,没有服务器就用虚拟机来代替,电脑性能有限,考虑一番之后用7台虚拟centos来搭这个集群,也可以是10台,考虑到内存吃紧,7台,说明过程就行了
1,my02 namenode zkfc
2,my03 namenode zkfc
3,my04 resourceManager
4,my05 resourceManger
5,my06 zookeeper journalnode datanode nodemanager
6,my07 zookeeper journalnode datanode nodemanager
7,my08 zookeeper journalnode datanode nodemanager
这样分布是有原因的,就是datanode要和nodemanager在一个服务器上,这是遵循的数据本地性,这个原则spark也不例外,就是计算,数据在一起
开始!
1,解压hadoop


hadoop(13)--分布式集群搭建_第2张图片
image.png

2,vi hadoop_env.sh
hadoop(13)--分布式集群搭建_第3张图片
image.png

修改core-site.xml



fs.defaultFS
hdfs://ns/


hadoop.tmp.dir
/home/songlj/app/hadoop-2.4.1/tmp


ha.zookeeper.quorum
my06:2181,my07:2181,my08:2181


修改hdfs-site.xml



dfs.nameservices
ns


dfs.ha.namenodes.ns
nn1,nn2


dfs.namenode.rpc-address.ns.nn1
my02:9000


dfs.namenode.http-address.ns.nn1
my02:50070


dfs.namenode.rpc-address.ns.nn2
my03:9000


dfs.namenode.http-address.ns.nn2
my03:50070


dfs.namenode.shared.edits.dir
qjournal://my06:8485;my07:8485;my08:8485/ns


dfs.journalnode.edits.dir
/home/songlj/app/hadoop-2.4.1/journaldata


dfs.ha.automatic-failover.enabled
true


dfs.client.failover.proxy.provider.ns
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider


dfs.ha.fencing.methods

sshfence
shell(/bin/true)



dfs.ha.fencing.ssh.private-key-files
/home/songlj/.ssh/id_rsa


dfs.ha.fencing.ssh.connect-timeout
30000


修改mapreduce mapred-site.xml



mapreduce.framework.name
yarn

    

修改yarn-site.xml



yarn.resourcemanager.ha.enabled
true


yarn.resourcemanager.cluster-id
yrc


yarn.resourcemanager.ha.rm-ids
rm1,rm2


yarn.resourcemanager.hostname.rm1
my04


yarn.resourcemanager.hostname.rm2
my05


yarn.resourcemanager.zk-address
my06:2181,my07:2181,my08:2181


yarn.nodemanager.aux-services
mapreduce_shuffle


3,配置各个节点之间的无秘登录

ssh-keygen -t rsa
  197  ssh-copy-id my02
  198  ssh my01
  199  ssh my02
  200  ssh-copy-id my03
  201  ssh-copy-id my04
  202  ssh-copy-id my05
  203  ssh-copy-id my06
  204  ssh-copy-id my07
  205  ssh-copy-id my08

4,修改hdfs的slave文件vi slaves

my06
my07
my08
~
5,拷贝到各个服务器上
scp -r hadoop-2.4.1/ my03:/home/songlj/app
244 scp -r hadoop-2.4.1/ my04:/home/songlj/app
245 scp -r hadoop-2.4.1/ my05:/home/songlj/app
246 scp -r hadoop-2.4.1/ my06:/home/songlj/app
247 scp -r hadoop-2.4.1/ my07:/home/songlj/app
248 scp -r hadoop-2.4.1/ my08:/home/songlj/app
6,在06,07,08上启动journalnode
./hadoop-daemon.sh start journalnode
成功标志

image.png

7,格式化nameNode

./hadoop namenode -format

8,拷贝到my03
scp -r tmp/ my03:/home/songlj/app/hadoop-2.4.1/

9,格式化zkfc
[songlj@my02 bin]$ hdfs zkfc -formatZK
会在zk下建节点


image.png

10,启动hdfs

重点,容易忽视一定要先启动zk,因为zkfc需要注册到zk上去,这个容易忽视导致zkfc起不来,启动zk,看上一篇

[songlj@my02 ~]$ start-dfs.sh

11,my04启动yarn
start-yarn.sh

12,启动my05的resourcemanager
到app/hadoop-2.4.1/sbin下执行
./yarn-daemon.sh start resourcemanager

13,关闭防火墙
sudo service iptables stop
287 sudo service iptables status
14,启动关闭
sudo chkconfig iptables off

看效果:


hadoop(13)--分布式集群搭建_第4张图片
image.png
hadoop(13)--分布式集群搭建_第5张图片
image.png
hadoop(13)--分布式集群搭建_第6张图片
image.png

你可能感兴趣的:(hadoop(13)--分布式集群搭建)