一、Hadoop1.X全分布式搭建
首先还是防火墙、域名映射、JDK检查好。
1、时间同步:date -s "时间"
2、节点间免秘钥。scp id_dsa.pub node04:`pwd`/node01.pub
3、core-site.xml修改下目录(自定义即可与之前的分开,避免数据冲突)
4、hdfs-site.xml 修改。修改副本数量和SecondaryNameNode地址:
5、修改slaves,将DataNode的别名分行放入
6、其他节点如此配置。直接分发过去:scp -r soft node04:`pwd`。
7、NameNode节点格式化:hdfs namenode -format
启动Hadoop,start-dfs.
1.X全分布式完成。
二、Hadoop2.X
我们依然发现Hadoop1.x存在问题:
hdfs:NameNode有单点故障,难以应用于在线场景。且容易压力过大、内存受限影响扩展性(单点瓶颈)。
map-reduce:
2.X通过两个技术解决上诉hdfs的两个问题。HA解决单点故障,F(federation联邦)解决单点瓶颈。
2.X只有两个节点HA。3.x实现一主多从。
Zookeeper:分布式协调系统。通过zookeeper实现NameNode的主备间的切换。zookeeper给每个namenode都有zkfc进程,监控节点的健康状态。同时进程给zookeeper通讯,刚开始通过注册来获得节点信息并决定主备,zookeeper通过zkfc发现主服务器挂掉,会触发事件并通知从服务器 回调执行client的函数callback 进而完成备-》主切换。
JN:JournalNodes 主NN数据变化后日志产生在JN中,备NN读取JN日志执行,从而保证主从数据一致。JN集群内部数据必须一致。遵循过半原则。
搭建Hadoop2.X流程:
ps,明天搞,睡觉。
1、主备NameNode互相免秘钥:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa产生秘钥。追加到自身验证文件cat id_dsa.pub >> authorized_keys。传送给目标scp id_dsa.pub node01:`pwd`/node02.pub。将秘钥追加至验证文件cat node02.pub >> authorized_keys
2、在/opt/hadoop/etc/hadoop中,修改hdfs-site.xml.
主备NameNode服务名。
在服务名下配置主备NameNode别名。
主备NameNode别名映射到实际服务器(IP+端口)。
http请求访问的通讯端口和地址
此处配置JN集群地址及接口。
JN集群数据产生位置。
此为设置故障转移代理类。
配置隔离。当备切换为主后,原来的主NameNode还原,此会将原来的主进程杀死。
设置自动故障转移。
3、修改core-site.xml文件。
这里的默认主节点配置为主备NameNode的服务名。
配置zookeeper位置。(此时还没有安装,稍后安装)
数据产生位置。
将此配置文件分发给其他三个节点,以分发给node02为例:scp hdfs-site.xml core-site.xml node02:`pwd`
4、安装zookeeper集群。
1)、先上传并解压至node02,然后配置/etc/profile,node02配置完成分发给Node03、node04.
2)、将zookeeper安装目录下的conf中的zoo_simple.cfg修改为zoo.cfg.mv zoo_simple.cfg zoo.cfg
且内容中自定义文件目录,默认目录在/tmp中所以修改,
将zookeeper集群配置放入配置文件。2888、与3888分别为zk发送数据与接收数据所用接口。
3)、node01的zookeeper完成 ,分发给zookeeper集群其他节点。scp -r zookeeper-3.4.6/ node04:`pwd`
4)、注意,第二点钟配置的目录如果没有记得添加。添加后在zk目录下创建文件并加入对应的server值。与第二点中定义的server值一致, 如node02中,echo 1 > /var/soft/zk/myid
5、启动zookeeper,zkServer.sh start.代表zookeeper启动了。
6、启动jouralnode集群:hadoop-daemon.sh start journalnode。分别在jn集群每一个种都执行。代表启动了。
7、第一次启动Hadoop要进行格式化。hdfs namenode -format
8、在格式化的NameNode中执行。hadoop-daemon.sh start namenode 开启namenode.
9、确保上诉命令启动后,在另一个Namenode(备)执行:hadoop namenode -bootstrapStandby。同步成功,会发现同步另一个nn节点的clusterID 不是秘钥分发,而是同步过来的
10、执行: hdfs zkfc -formatZK NN向zookeeper集群注册。产生mycluster目录,nn的元数据信息亦通过hadoop-ha/cluster下创建完成。
11、主节点启动:start-dfs.sh.
Hadoop2.X分布式集群完成。关闭:stop-dfs.sh 后关闭zookeeper:zkServer.sh stop.
ps:虽然完成,但是很多几点都是重复使用的,如nn、dn、jn、zk。为了明确配置,一定要找机会不重用虚拟机重新部署一遍。