基于HDFS的高校开源软件镜像站架构探究*

2023-01-30 04:08王晓建
计算机时代 2023年1期
关键词:镜像开源页面

王晓建,袁 磊

(云南师范大学,云南 昆明 650500)

0 引言

随着信息技术的快速发展和高校信息化建设的不断完善和深入,越来越多的高校搭建了自己的开源软件镜像站点,大部分高校搭建自己的镜像站点都是在内网,有少部分也对外服务,但是高校师生在访问这些站点时也会出现速度慢,同步时间长等问题,还有许多开源软件应用在科学计算等专业领域,如果高校没有自己的开源镜像,就会导致一方面用户必须忍受缓慢不稳定的网络连接、浪费大量时间,另一方面学校也浪费了大量入口带宽,而随着互联网和分布式存储技术的发展,搭高校急需搭建属于自己的开源软件镜像站点来满足师生的学习和科研需求,而HDFS具备了容错性高、成本低、通用性好等特点[1-2],易于搭建能存储大量碎片文件的分布式存储系统。

1 Hadoop及相关技术简介

HDFS 分布式文件系统是Hadoop 核心技术之一,提供了开源的存储框架,是一个实现数据分布式存储的文件系统[3]。该系统通过高效的分布式算法集成多集群节点,对大数据量的数据进行分布式存储和有效备份,当其中一个节点宕机时,系统可以读取其他有效节点的数据,并且系统对每个节点的物理性能要求并不高。因此,HDFS 采用主/从架构,包括客户端、主控节点(NameNode)和数据节(DataNode)。其中,NameNode 主要负责管理文件系统的命名空间、元数据信息及客户端对文件的访问;DataNode 主要负责接收并处理客户端的读写请求和NameNode 的调度,存储并检索HDFS 的数据块,是文件存储的实际位置,并通过周期性的心跳报文将所有数据块信息发送给NameNode。HDFS 的这种主/从设计结构使得用户数据不会流经主控节点,从而提高系统性能和效率。

Hadoop 是典型的主从(Master/Slave)结构。其构成包括一个NameNode(名称节点)和多个DataNode(数据节点)。主服务器是由NameNode 构成的,它的主要作用是管理HDFS(分布式文件系统)的NameSpace(命名空间),其中保存了FsImage和EditLog两个核心的数据结构。前者用来对文件系统树和文件树中所有文件的元数据进行维护;后者则用来进行创建文件、删除文件、重命名文件等一系列操作,并执行Client提出的文件访问命令。本文使用HDFS 作为主要的后端存储系统,能较好地利用服务器资源和存储资源,并且达到很好地冗余效果。

2 镜像站点的架构与部署

2.1 基于Hadoop架构的镜像站

HDFS 采用master/worker 架构[4]。一 个HDFS 集群是有一个Namenode 和若干Datanode 组成[5]。Namenode 是一个中心服务器,负责管理文件系统的namespace 和客端对文件的访问。Datanode 在集群中一般是一个节点一个,负责管理节点上它们附带的存储。在内部,一个文件其实分成一个或多个block,这些block 存储在Datanode 集合里。Namenode 执行文件系统的namespace 操作,例如打开、关闭、重命名文件和目录,同时决定block 到具体Datanode 节点的映射。Datanode 在Namenode 的指挥下进行block 的创建、删除和复制。Namenode 和Datanode 都是设计成可以跑在普通的廉价的运行Linux 的机器上。HDFS采用java 语言开发,因此可以部署在很大范围的机器上。一个典型的部署场景是一台机器跑一个单独的Namenode节点,集群中的其他机器各跑一个Datanode实例。Namenode 是所有HDFS 元数据的仲裁者和管理者,这样,用户数据永远不会流过Namenode,便于管理和维护。Hadoop的架构图如图1所示。

图1 Hadoop架构图

镜像站使用HDFS存储数据有下面四个优点:

⑴故障检测、硬件容错、数据冗余

HDFS 文件系统中的所有文件都以block 的方式存储在集群的节点上,而且还有多副本的特性,保证了硬件的容错,当某一节点损坏时,数据不会丢失。如果出现一些不可抗拒的因素导致其中某节点损坏时,能通过Hdfs Trash(回收箱)或HdfsSnapShot(快照)方式恢复数据。

⑵处理流式的数据访问

流式数据处理方式:一次写入,多次读取[6]。HDFS 的数据处理规模比较大,应用一次需要访问大量的数据,同时这些应用一般都是批量处理,而不是用户交互式处理。应用程序能以流的形式访问数据集。镜像站的文件大多数都是ISO或者一些软件的安装包,所有流式处理数据对这些文件的访问是有好处的。

⑶适合存储大文件

搭建镜像系统需要存储大量的ISO 文件和一些Linux的软件包,所需要的文件是通过同步的方式下载到本地,这些文件大部分都是几百GB,甚至达TB 大小的文件,很适合使用HDFS的文件系统来存储。

⑷可构建在廉价的机器上

很多高校并不像很多商业公司一样,有足够的服务器资源和存储资源,很多服务器性能可能不是很高,而HDFS 文件系统不需要很高的服务器性能也能完成部署。

2.2 服务器规划

云南师范大学信息管理处现在共有四台闲置服务器,需要部署Hadoop 文件系统,选择存存储容量最大的一台服务器作为master,用来存储镜像的相关数据,其余作为服务节点,其中worker01 节点部署备份节点,以便在数据丢失的情况下进行数据的恢复,worker1 和worker2 作为数据节点,用来存储发行版的相关更新文件,服务器规划详情见表1。

表1 服务器规划

2.3 服务器配置

⑴主机名和防火墙设置

在服务器配置之前,需要关闭防火墙,设置静态IP,且IP 地址为内网的IP 地址,使服务器无法暴露在外部网络之中,设置为上表中的IP 地址,修改hosts 文件,而且需要重新配置,部署完成之后需要让worker节点和slave节点能互相识别,将所有服务器的IP地址和主机名添加到该文件中,同时能够使节点之间免密远程连接。

⑵配置SSH免密登录

关于ssh 免密码的设置,要求每两台主机之间设置免密码,自己的主机与自己的主机之间也要求设置免密码。这项操作可以在root 用户下执行,执行完毕公钥在/root/.ssh/id_rsa.pub。

⑶配置Hadoop 相关文件,配置HDFS 中namenode 的地址和Hadoop运行时产生的的临时文件的目录。

修改core-site.xml文件:

⑷配置同步工具tunasync

同步原理是使用rsync 做增量同步。本文使用的是清华大学开源软件镜像站开发的tunasync,这个工具使用的是自动化脚本进行增量同步,简单易用。因为tunasync 使用Golang 开发,所以需要先配置Golang 环境。使用命令行安装Golang 环境即可。配置完成后使用以下命令启动同步的任务:

启动之后可以使用:tunasynctl list-p 12345-all查看同步的进程和状态,如图2所示。

图2 同步进程和状态

2.4 配置前端Web页面

前端页面的配置使用的是清华大学的开源软件镜像站点的模板,需要配置站点信息。部署前需要修改页面相关信息,编辑_config.yml文件:

配置完前端信息之后,使用bundle exec jekyll serve--detach-H 0.0.0.0 在本地生成前端所需要的_site目录,然后将其软连接到存放同步镜像的文件夹,开启Nginx 服务之后在Nginx 的配置文件中添加镜像的存放目录为网站的根目录。为了便于在前台页面查看同步的相关信息,可以在后台设置定时任务,每天凌晨将当天同步信息的JSON 文件下载并输出到_site目录的static文件夹,便于在前台页面中展示。

镜像站的前端使用的是ruby 语言,使用在后台生成的页面,后端使用的是Nginx,服务器端在后台生成页面,一个简单的Web 服务器软件(例如TUNA 使用的Nginx),将所有有关文件设置好路径提供下载,就可以实现最基本的镜像站功能。镜像站绝大多数业务均为静态文件服务,因此类似的高性能静态文件Web 服务器软件均可按需选择,本文使用的是Nginx服务器来提供对外服务。Nginx 服务器将静态页面通过软连接的方式同步到前端。同步完成之后可以通过同步状态页面查看上一次同步的时间、大小、状态、上游、下一次同步时间等信息,同步成功后的状态如图3所示。

图3 同步状态

3 结束语

镜像站的搭建,存储上的充分利用和同步是关键。对信息中心存储资源,基于HDFS 的分布式文件存储系统,能将存储资源集中使用,而且有较好的冗余性,能在一部分节点失效的情况下对数据进行恢复,为高校建设属于自己的镜像站点提供了建议。本镜像站点还在测试中,在完成后端的所有镜像文件和软件的同步之后可将其部署到公网,一方面能使校园网的用户直接用内网进行访问,方便师生使用开源软件镜像站点,另一方面互联网用户也能访问使用,推动开源软件社区的发展。

本文描述的镜像站还存在一定的不足和需改进之处,比如数据丢失时的恢复机制;同时因为磁盘空间有限,所以只是同步了一部分常用的镜像文件和Linux 常用的软件包,如果磁盘充足,可以同步更多的镜像文件和软件包,能达到很多商业软件公司的效果。此外,由于目前的服务器是挂载在信息中心的备用服务器上,所以外网访问还是会受到很多影响,带宽和校园网走的是同一条,所以当校园网在线人数过多时就会出现网速变慢,如果有条件可以使用专门的宽带进行升级,能有效提升网络访问的速度。

猜你喜欢
镜像开源页面
刷新生活的页面
镜像
五毛钱能买多少头牛
镜像
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
开源计算机辅助翻译工具研究
镜像
镜像
网站结构在SEO中的研究与应用