作为一个M/S架构的分布式系统,普遍存在单点故障问题,在Tachyon分布式系统中,对于Master节点的单点故障也是采用ZooKeeper解决,即Tachyon的容错是基于多Master方法,通过ZooKeeper集群管理进来管理Master,负责选出一个Master作为Leader,作为Workers和Clients访问的主入口,其他Masters作为备用(Standby),使用共享的Journal来确保和Leader具有相同的文件系统元数据,并在Leader宕机时快速接手。当作为Leader的Master宕机时会自动选举出新的Leader,并且Workers和Clients也会自动连接到新的Leader上。
实现Master容错的前提条件:
1)搭建一个ZooKeeper环境,用户维护管理多个Master。
2)选择一个共享的、可靠的底层文件系统来存放Journal。
当前可以使用的底层文件系统有HDFS、Amazon S3和GlusterFS,这里选择HDFS作为底层文件系统进行案例实践。
一、环境准备
针对ZooKeeper环境,这里使用Flume提供的ZooKeeper,ZooKeeper的启动可以参考第4.3.3小节的内容处理Kafka数据源的实践准备部分。同时要确保在环境中已经安装好了Hadoop环境。
二、环境配置
1.修改配置文件conf/tachyon-env.sh,添加或修改下面三个环境变量
其中:
1)JAVA_HOME为本地java安装目录。
2)Tachyon_MASTER_ADDRESS为Master对外可见的地址,这里设置为Master的host-name,即cluster04。
3)Tachyon_UNDERFS_ADDRESS为底层文件系统,这里使用HDFS,HDFS底层文件系统的配置可以参考第5.4.1小节的内容。
2.修改配置文件conf/tachyon-env.sh,添加或修改属性配置
修改前的属性配置:
修改后的属性配置:
其中:
1)修改tachyon.master.journal.folder配置属性,将journal的目录放置于HDFS上。
2)增加tachyon.usezookeeper和tachyon.zookeeper.address属性配置,根据当前实际的ZooKeeper进行设置。
这里的tachyon.data.folder和tachyon.workers.folder可以保持不变。
修改完成后,需要将该配置文件拷贝到集群中的其他节点,命令如下:
三、启动集群
1.启动ZooKeeper
这里选择cluster05节点,进入Kafka部署目录,输入命令:
其中,QuorumPeerMain进程就是启动的ZooKeeper进程。
2.重新格式化Tachyon
如果是首次修改底层存储系统为HDFS,则需要进行格式化,具体可以参考第5.4.1小节的内容。
3.启动Tachyon(www.xing528.com)
查看Web Interface界面,出现如图5.18所示内容表示。
图5.18 Tachyon启动后的界面
启动成功。
四、测试Master容错性
Tachyon也是一个M/S结构的框架,对应地,也会存在单点故障的问题,这里测试Tachyon提供的Master节点的单点故障的解决方案。
1.启动其他Master节点
修改配置文件./conf/tachyon-env.sh,这里将cluster06作为Standby Master节点,输入命令:
修改cluster06节点上配置文件中的Tachyon_MASTER_ADDRESS环境变量,具体如下:
2.启动Master进程
启动的Master进程TachyonWorker,就是Standby Master。
3.关闭cluster04上的Master进程
查看新的Master上的Web Interface(http∶//cluster06∶19999)界面,如图5.19所示。
图5.19 Tachyon切换master后的界面
4.查看Active与Standby Master的切换
切换Master的时间大概在十几秒左右,从图5.19的界面可以看到,Master节点已经成功切换到cluster06了。
需要注意的两点:
1)作为Master节点时,需要已经配置ssh无密登录到其他节点。
2)另外,当前测试时,需要在希望启动TachyonMaster进程的这个节点上,修改属性配置,然后在这个节点上启动TachyonMaster进程。修改属性配置Tachyon_MASTER_ADDRESS为其他节点的地址时,比如修改为cluster05,然后调用脚本./bin/tachyon-start.sh master启动TachyonMoster进程的话,这个修改后的属性TACHYON MASTER ADDRESS的值对应的其他节点,如cluster05,是不会启动TachyonMaster进程的,查看日志:
报错信息如下:
五、Tachyon容错机制的扩展
除了使用高可用(High Availability,HA)方式对Master节点进行容错外,对于具体的文件数据,Tachyon借鉴了Spark,使用血统关系(Lineage)进行容错。文件元数据中记录了文件之间的依赖关系,当文件丢失时,能够根据依赖关系进行重计算来恢复文件数据。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。