Update 第十八章_后端架构选型、离线及实时计算.md

This commit is contained in:
liangzhicheng120 2018-11-11 23:23:27 +08:00 committed by GitHub
parent 543f2a44eb
commit ddde504af3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 28 additions and 0 deletions

View File

@ -7,8 +7,36 @@
## 18.1 为什么需要分布式计算? ## 18.1 为什么需要分布式计算?
  在这个数据爆炸的时代产生的数据量不断地在攀升从GB,TB,PB,ZB.挖掘其中数据的价值也是企业在不断地追求的终极目标。但是要想对海量的数据进行挖掘首先要考虑的就是海量数据的存储问题比如Tb量级的数据。
  谈到数据的存储则不得不说的是磁盘的数据读写速度问题。早在上个世纪90年代初期普通硬盘的可以存储的容量大概是1G左右硬盘的读取速度大概为4.4MB/s.读取一张硬盘大概需要5分钟时间但是如今硬盘的容量都在1TB左右了,相比扩展了近千倍。但是硬盘的读取速度大概是100MB/s。读完一个硬盘所需要的时间大概是2.5个小时。所以如果是基于TB级别的数据进行分析的话光硬盘读取完数据都要好几天了更谈不上计算分析了。那么该如何处理大数据的存储计算分析呢
  一个很简单的减少数据读写时间的方法就是同时从多个硬盘上读写数据比如如果我们有100个硬盘每个硬盘存储1%的数据 并行读取那么不到两分钟就可以完成之前需要2.5小时的数据读写任务了。这就是大数据中的分布式存储的模型。当然实现分布式存储还需要解决很多问题比如硬件故障的问题使用多台主机进行分布式存储时若主机故障会出现数据丢失的问题所以有了副本机制系统中保存数据的副本。一旦有系统发生故障就可以使用另外的副本进行替换著名的RAID冗余磁盘阵列就是按这个原理实现的。其次比如一个很大的文件如何进行拆分存储读取拆分以后的文件如何进行校验都是要考虑的问题。比如我们使用Hadoop中的HDFS也面临这个问题只是框架给我们实现了这些问题的解决办法开发中开发者不用考虑这些问题底层框架已经实现了封装。
  同样假如有一个10TB的文件我们要统计其中某个关键字的出现次数传统的做法是遍历整个文件然后统计出关键字的出现次数这样效率会特别特别低。基于分布式存储以后数据被分布式存储在不同的服务器上那么我们就可以使用分布式计算框架比如MapReduce,Spark等来进行并行计算或者说是分布式计算每个服务器上分别统计自己存储的数据中关键字出现的次数最后进行一次汇总那么假如数据分布在100台服务器上即同时100台服务器同时进行关键字统计工作效率一下子可以提高几十倍。
## 18.2 目前有哪些分布式计算框架? ## 18.2 目前有哪些分布式计算框架?
### 18.2.1 PaddlePaddle
### 18.2.2 Deeplearning4j
### 18.2.3 mahout
### 18.2.4 spark MLllib
### 18.2.5 Ray
### 18.2.6 spark stream
### 18.2.7 Horovod
### 18.2.8 BigDL
### 18.2.9 Pluto
### 18.2.10 TensorFlowOnSpark
## 18.3 如何选择合适的分布式计算框架进行模型训练? ## 18.3 如何选择合适的分布式计算框架进行模型训练?
## 18.4 如何进行实时计算? ## 18.4 如何进行实时计算?