25 The MathWorks, Inc.
拥抱大数据 陈建平 高级应用工程师 MathWorks 25 The MathWorks, Inc. 2
大数据? ENERGY Asset Optimization FINANCE Market Risk, Regulatory AUTO Fleet Data Analysis AERO Maintenance, reliability Medical Devices Patient Outcomes 所涉及的数据量规模巨大到无法通过人工, 在合理时间内达到截取 管理 处理 并整理成为人类所能解读的信息 Wikipedia 3
大数据的 3V Volume( 海量 ) 数据容量越来越大 Velocity( 速度 ) 数据量增长越来越快, 需要处理的速度和响应越来越快 Variety( 多样性 ) 越来越多的数据是半结构, 甚至是完全没有结构的数据, 如文本 邮件甚至于语音 视频等 4
大数据的挑战 Any collection of data sets so large and complex that it becomes difficult to process using traditional data processing applications. (Wikipedia) 起步难 快速数据探索难 可扩展的算法的开发难 部署难 5
选择合适的计算方法 数据的特征 大小 类型 存储位置 计算平台 单机或集群 分析方法的特征 Embarrassingly 并行 分析数据的片段并聚合分析结果 完整数据的操作 6
MATLAB 大数据技术 Prototype Access Explore Share/Deploy Scale 加载分析丢弃 parfor, datastore, MapReduce 分布式内存 SPMD 和分布式阵列 内存外操作 内存内操作 Embarrassingly 并行 数据不可分割 复杂度 7
MATLAB 大数据技术 加载分析丢弃 parfor, datastore, MapReduce 分布式内存 SPMD 和分布式阵列 内存外操作 内存内操作 Embarrassingly 并行 数据不可分割 复杂度 8
MATLAB 并行计算 MATLAB 桌面 ( 客户端 ) Worker Worker Worker Worker Worker Worker 9
案例 : 测量土地使用 parfor 数据 农田航拍图 24 TIF 文件 分析 找出并测量灌溉土地 确认哪些灌溉圈正在被使用 计算总体灌溉面积
何时使用 parfor? 数据的特征 可以被打断成独立数据块 内存能够容纳每次循环的数据块 计算平台 桌面 ( 并行计算工具箱 ) 集群 (MATLAB 分布式计算服务器 ) 分析方法的特征 循环体之间必须相互独立
MATLAB 大数据技术 加载分析丢弃 parfor, datastore, MapReduce 分布式内存 SPMD 和分布式阵列 内存外操作 内存内操作 Embarrassingly 并行 数据不可分割 复杂度 2
大数据的访问 datastore 的特点 易于指定数据集 单文本文件 ( 或者文本文件集合 ) 预览数据结构和格式 选择列名并导入数据 增量读取数据子集 airdata = datastore('*.csv'); airdata.selectedvariables = {'Distance', 'ArrDelay }; data = read(airdata); 3
案例 : 车辆登记分析 DataStore 数据 28-2 年间, 麻省的车辆登记数据 6M 记录,45 个 fields 分析 调查混合动力车的采用情况 计算混合动力车的比率随时间 ( 季度 ) 的变化关系 预测未来的混合动力车的增长趋势 4
何时使用 datastore? 数据的特征 文本数据 数据库或者存放在 Hadoop 分布式文件系统 (HDFS) 中的文件 计算平台 桌面 分析方法的特征 支持加载 分析 丢弃的工作流程 增量读取数据块, 在 while 循环中处理数据 5
MATLAB 大数据技术 加载分析丢弃 parfor, datastore, MapReduce 分布式内存 SPMD 和分布式阵列 内存外操作 内存内操作 Embarrassingly 并行 数据不可分割 复杂度 6
mapreduce Data Store Map Shuffle Reduce and Sort Veh_typ Q3_8 Q4_8 Q_9 Hybrid Car SUV Car Car Car Car Car SUV Car SUV Car Car Hybrid Key: Q3_8 Key: Q4_8 Key: Q_9 Key: Q3_8 Key: Q4_8 Key: Q_9 Hybrid Key: Q3_8 Key: Q4_8 Key: Q_9 Key % Hybrid (Value) Q3_8.4 Q4_8.67 Q_9.75 7
大数据的分析 mapreduce 使用强大的 MapReduce 编程技术分析大数据 mapreduce 使用一个 datastore 来处理能够容纳于内存中的数据块 中间结果无法容纳于内存之中的算法 ******************************** * MAPREDUCE PROGRESS * ******************************** Map % Reduce % Map 2% Reduce % Map 4% Reduce % Map 6% Reduce % Map 8% Reduce % Map % Reduce 25% Map % Reduce 5% Map % Reduce 75% Map % Reduce % 桌面上的 mapreduce 增加计算能力 ( 并行计算工具箱 ) 访问 HDFS 中的数据开发 Hadoop 算法 Hadoop 上的 mapreduce 使用 MDCS 运行在 Hadoop 之上 使用 MATLAB Compiler 为 Hadoop 开发应用和库 8
案例 : 车辆注册数据分析使用 MapReduce 数据 28-2 年间, 麻省的车辆注册数据 6M 记录,45 个域 分析 调查混合动力车的采用情况 计算混合动力车的比率变化 季度 地区 对结果做地图分布 9
Hadoop 应用部署 Datastore HDFS MATLAB 运行时 Node Data Map Reduce Node Data Map Reduce Node Data Map Reduce MATLAB MapReduce 代码 2
何时使用 mapreduce? 数据的特征 存放在文本文件 数据库或者 Hadoop 分布式文件系统 (HDFS) 中的数据 内存无法容纳 计算平台 桌面 扩展到 Hadoop, 对存放在 HDFS 上的数据运行 MapReduce 分析 分析方法的特征 必须能够被分割成两个阶段. Map: 过滤或者处理数据的子片段 2. Reduce: 聚集中间结果, 并计算最后答案 2
MATLAB 大数据技术 加载分析丢弃 parfor, datastore, MapReduce 分布式内存 SPMD 和分布式阵列 内存外操作 内存内操作 Embarrassingly 并行 数据不可分割 复杂度 22
分布式阵列 Arrays Available from Parallel Computing Toolbox MATLAB Distributed Computing Server 26 4 2 27 42 3 28 43 4 29 44 5 3 45 6 3 46 TOOLBOXES BLOCKSETS 7 32 47 7 33 48 9 34 49 2 35 5 2 36 5 22 37 52 从桌面上远程操作阵列 驻留在集群中的分布式阵列 23
案例 : 航班延误分析 数据 Data BTS/RITA Airline On-Time Statistics 23.5M 记录, 29 fields 分析 计算延误模式 可视化结果 估计和预测模型 24
何时使用分布式内存? 数据的特征 集群内存总和必须能够容纳数据 计算平台 桌面原型 ( 数据子集 ) 集群或者云中运行 ( 大数据 ) 分析方法的特征 每个 worker 上的内存必须能够容纳的数据数据片段 调用支持的分布式阵列函数 25
MATLAB 大数据处理 单机性能提升 64 位操作系统 + 串行编程技巧 访问内存无法容纳的大数据集 内存映射 大二进制文件 Datastore 巨型文本文件或者文本文件集合 Database 数据库查询 多种编程结构 系统对象 流算法 MapReduce 内存无法容纳的文本文件集 SPMD 分布于集群中的分布式阵列 分析加速 parfor 循环 Embarassingly 并行 gpuarray GPU 加速 26
进一步学习 MATLAB 文档 Strategies for Efficient Use of Memory Resolving "Out of Memory" Errors Big Data with MATLAB www.mathworks.com/discovery/big-data-matlab.html MATLAB MapReduce and Hadoop www.mathworks.com/discovery/matlab-mapreduce-hadoop.html 27