大数据系统结构
有了分布式存储和 Map Reduce 计算模式的概念之后,本节介绍大数据系统的基本架构。因为网络开销是影响大数据系统性能的主要开销,所以我们还简单介绍运行大数据系统的数据中心网络。最后介绍数据中心网络中将不同用户的网络进行隔离的手段,即网络虚拟化技术:VLAN。
大数据系统基本架构
进行大数据分析的系统很特别。
首先,因为大数据不能存着单个计算机上,所以大数据会运行在一个集群上。
其次,组成这个集群的机器很特别。具体来说有两个特点。第一,它们就都是一些很普通的机器。这些机器和大家家里面用的电脑差不多,所以很便宜,也很容易坏。大概用个三年也就差不多该报废了。第二,在每个机器里头,即有CPU,又有内存,还有磁盘。
然后,这些机器通过网络交换机,连接起来。比如说 16 台机器,接到一个交换机,它们就连起来了。然后将这 16 个交换机再接到一个交换机里头,把它们连起来,那就把这些交换机下面的 16 * 16 = 256 台机器连起来了。类似的,我们可以把更多的机器连起来,这就形成了一个集群。
最后,组成集群的机器特别多。这是因为大数据现在变得越来越大。所以,现在各个企业的大数据集群,往往有几十万台机器。
基于这个集群,我们就可以完成大数据处理工作。比如说我们有一个特别大的数据,它一台机器存不下,需要存到集群里。因此,它在这台电脑里存了一点,在那台电脑里也存了一点,这就是分布式存储。在分析的时候,每个机器读自己机器上存的硬盘里面的数据,执行 Map 操作,输出“键值对”。这些机器也接受系统做完 Group by Key 之后合并的结果,完成系统分配过来的 Reduce 任务。这就是 Map Reduce。
大数据系统的管理
大数据系统的上述特点导致大数据集群中每天都有大量机器会坏。这是因为这些机器都是普通机器,三年可能就得换一台,而一个大数据集群里的机器数量又是海量的,比如 100 万台,所以,每天都有大量的机器会坏,需要从集群中剔除。做个简单的数学题,如果这里摆了 100 万台电脑,每台电脑的寿命是 1000 天,那么每天有几台电脑会坏?每天有 100万/1000 = 1000 台电脑会坏。所以,在大数据中心,管理员都是骑着滑板车,跑来跑去,到处收集破电脑的。是的,这样也锻炼了身体。
为了应对机器故障,大数据系统想了很多办法,比如 HDFS 的多副本存储。正是因为这些电脑随时会坏,所以 Hadoop 会像我们前面介绍讲的那样,在存储的时候,对文件块,是做了备份的。对一个文件块,它会在多个电脑上存多个副本。这样的话,它因为机器故障,丢失了一个副本,也没事。然后,Hadoop 还会监控它的机器。一旦一个机器坏了,它会自动地再赶紧把这个机器上的文件块在集群的另一个地方再恢复存储一个。
如果有一天特别崩溃,比如地震,把一个地区的整个数据中心弄坏了,你说 HDFS 还扛得住吗?还扛得住。为什么呢?因为还有另外地区的数据中心。现在的大数据中心有很多,在地理位置上分布在不同的地方,比如北京放一个,深圳放一个,贵州山洞里还放一个,内蒙古草原上还有一个。所以不怕一个地方的数据中心坏,除非咱们地球毁灭了。
除了 HDFS 的多副本存储,大数据系统还对集群中正在进行的工作进行了监控,然后在故障发生时,能够进行自动的恢复。比如这种情况:一个 Map 任务已经分配给一个机器了,但这个机器在做的过程中坏了。这是很有可能的。这个时候,在 Hadoop、Spark 这些大数据处理平台里,就有监控程序。这些程序会记着说:我这个任务已经交给这个机器做了。它到现在还没有交给我结果,而且我现在也连不上它,看来它坏了,那我就赶紧找另外一个机器做。所以,大数据系统在工作的进行过程中,是会监控各个任务的。这就是大数据系统管理的基本概念。
大数据框架的作用
大数据框架(如 Hadoop、Spark)的作用是:管理各个节点,进行任务分配、管理、节点间通信,并处理节点失败。当 Map 节点失败或者 Reduce 节点失败后,做对应的处理。
数据中心网络
把大量的机器通过网络连接到一起,这就是数据中心网络。在数据中心的一個機架里有好多台机器。然后,一般在機架的頂上或者中間,有一個交換機,把这个机架里的机器连起来。然后,一排机架,再通过一个交换机连起來。
为了把机器高效地连接起来,我们需要设计好的網絡拓撲,所以這時候就有各種網絡拓撲的設計。比如下图中的 Flat Tree。
Fat Tree是一种比較流行的数据中心网络拓撲。它就是有三級交換機。一級交換機是邊緣交換機,它们连接各个机器。中间这一級呢,是汇聚交换机。最后是核心交換機。因为每个汇聚交换机会把自己的边缘交换机都连上,然后每个核心交换机会把所有的邊緣交換機都連上,所以,任意两台機器之间通信,都有很多条路径。這是所謂的 Fat Tree 的網絡拓撲。
虚拟局域网
在云计算系统中做数据分析工作时,还经常遇到虚拟局域网的概念。虚拟局域网就是 VLAN。這里的 V 就是虛擬(Virtual)。
虚拟局域网是在一个物理的网络上,可以配置多个相互之间隔离的虛擬局域網。大家知道局域網是廣播的,就是你這個節點發出去一个消息,这个网络里所有其它節點都能聽見。但配置了虛擬局域網之后,一个虚拟局域网里的消息,另一个虚拟局域网里的节点是听不见的。這樣就实现了網絡的虛擬化和隔離。隔離对安全来说是很重要的,對不對?因为你不能聽到別人网络的。
虚拟化
总之,因为一个大数据平台要为很多客户提供服务,所以它的各种资源都是虚拟的。比如我们到阿里云上去部署系统,会有一些配网络的工作,如 IP 地址、权限。这些 IP 地址都是虚拟的。那些计算和存储资源,比如三个 CPU、多少内存、多少硬盘,也都是虚拟的。
参考文献
- Ting Wang, Zhiyang Su, Yu Xia, Mounir Hamdi, Rethinking the Data Center Networking: Architecture, Network Protocols, and Resource, Jan 2014, Webpage
Index | Previous | Next |