机器学习的工具链好全啊

python链

数据链

尽管 Spark Steaming 现在和 Flink 相比优势不显,但它的生态更为丰富,除了 Streaming 还有 SQL、MLib、Graphx 等,同时目前 Spark 对 Kubernetes 云原生技术的原生支持更加到位。

Flink 比Spark好的地方: Stream给力,市面上最好的stream framework没有之一 Stream 近似 Batch没有硬伤(相反mini batch近似Stream会搞乱batch里的顺序)。相当于自带lambda architectureFlink不足的地方: 用户群没有Spark多,stackoverflow上能找到的Solution少 Documentation还在完善中,尤其scala部分 java比scala啰嗦…

对比

参考知乎: https://www.zhihu.com/question/26568496

  • hardoop的处理方式, map/reduce很好理解, 就是矩阵计算, 大规模计算的并行处理.
  • spark的dag(有向无环图), 将map/reduce更简单的组织起来.

感想

数据处理和机器学习的路径也可以类比于数据库:

  • 迭代次序: 层次库->sql->nosql
  • 背后理论: 山寨->数学->山寨(或者说更高层次的数学)
  • 环境导致: 内存不足->硬盘存储, 网速增长->并行计算

大数据是机器学习的基础

  • Google公司的经典论文:《MapReduce:Simplied Data Processing on Large Clusters》2000年, 他把大数据处理拆成了map/reduce, 简单的说就是基础的矩阵运算. 大学本科的基础数学: 线性代数的实际应用
  • 想想阿里的处理方式, 去ibm/oracle/emc, 也就是去中心化.
  • Google有三宝:MapReduce、GFS和BigTable
    • MapReduce: Hadoop的MapReduce
    • GFS: Hadoop的HDFS 分布式文件系统
    • BigTable: HBase
  • 框架
    • apache hadoop 批处理框架
    • apache storm 流处理框架
    • apache samza
      • kafka
      • yarn
      • samza api
    • spark 混合处理框架
      • RDD(Resilient Distributed Dataset,弹性分布式数据集)
      • DAG
      • 把流拆成批次处理
    • flink
      • 把批处理当做有界的流来处理