map reduce工具 将现有算法并行化 (执行平台)hadoop(java)上执行,其它如spark兼容python
基础架构如hadoop->分析基础架构hive,hbase->高级工具
mapreduce做并行化的几个应用方向:文本,图,关系型数据,机器学习()
并行化挑战:进程计算结果交换;程序共享资源
函数式编程初探 - 阮一峰的网络日志
PySpark完成实验: Spark+python;支持本地和分布式集群;程序运行平台,spark,hadoop都可以,迁移方便。具体看官方文档。
逻辑视图:四个原语
利用MapReduce框架对某个算法并行化
map map map ,$f$函数
fold (或reduce)汇总,有初始值,自动完成
链式组合t数组.map.map.reduce
map(k1,v1)->list(k2,v2)
kv对,k主码,v其它,key,value
reduce(k2,list(v2)->list(k3,v3)
数据切片,k作为主码,v是信息,map
分派$f$,数据清洗,简单来说就是用关键字划分组,以此为依据,交给reduce
,往往是数组,汇总。
MapReduce“Runtime”(运行时),framework,底层软件,类似spark或者Hadoop,他来处理:处理任务调度,负载均衡,同步异步,灾害重建
为了减少map与ruduce中间分布式排序时间,MRCP
增加partition(k,p)
,上层map的k下层p为reduce用哈希绕开分布式排序
和combine(k2,list(v2))
minireduce,本地统一组合一个虚拟机的不同分片
t->map->combine->partition-按关键字分组排序->reduce
map,reduce 输出emit
交给分布式排序
物理视图:数据分片,分布式磁盘->给了VM,Map->本地保存到本地磁盘->分布式排序,有网络通讯,远程异地->VM做reduce->输出
两次分配算法都由控制主机master控制:作业提交,分配map节点,reduce节点。
数据移动,作业调度 是几个矩阵?
- 分布式数据库到map虚拟机;
- map虚拟机到reduce虚拟机?
- master指派job给map,指派job给reduce虚拟机?计算效率?通信效率?这是不是task调度?
多个机器,低性能。随机访问代价昂贵
(hadoop)job提交:
- job分成map reduce等四个task
- 每个task会有一个任务跟踪器
- 多个job会形成有一个工作流
数据现在很多是以kv对的形式存储计算的,不用中间格式转换,如mangodb
Hadoop可以本地部署,本地调试好在部署到云,不然debug麻烦死。
作业:安装pyspark实现个小例子。
PySpark相关资料:
1、Pyspark基础教程:rdd弹性数据集 datafree
https://github.com/jadianes/spark-py-notebooks
2、PySpark MLLib教程 :
https://github.com/susanli2016/PySpark-and-MLlib
3、项目实践:
https://zhuanlan.zhihu.com/p/52753778 (知乎)
可视化工具据deck.gl,kepler.gl
版本信息用py36
环境搭建
1 | py36 //菜菜 |
1 | //李敏 |
spark下的分布式启动sark方法:spark目录下,sbin目录,集群启动,start-all.sh脚本运行
终端地址http://192.168.152.131:8080/
会显示集群URL
提供的是spark主机的URL即可加入
打开终端Ctrl+alt+T
复制粘贴ctrl + shift + c,ctrl + shift + v
显示目录ls
自动补全 tab
tab
显示当前路径 pwd
vim
i
插入
:
q
是退出,w
保存
wq!
强制保存退出vim
anaconda可视化界面
1 | source ~/anaconda3/bin/activate root |
显示界面anaconda-navigator
显示jyputer notebookjyputer book
显示虚拟环境conda info --envs
conda创建虚拟环境conda create -n your_name python=X.X(如2.7,3.6等)
进入虚拟环境source activate your_name
退出虚拟环境 source deactivate
1 | export SPARK_HOME=/home/qyt/Downloads/spark-3.0.2-bin-hadoop3.2 |
vim /etc/profile
环境变量配置位置
./
执行文件
MRDP->spark 为什么?
大数据表达能力不足;spark对MADP扩充到四十个,一类是map一类是reduce
每次map reduce 都需要HDFS文件管理系统,需要大量的IO
spark RDD弹性数据集,内存分布式,spark底层对RDD做高度的冗余
Hadoop不支持中间HDFS换成RDD,spark可以。
mapreduce基本指令集太少,太简单了;迭代过程中间的磁盘IO太大;
spark弱化了map,reduce的成对性
RDD数据类型
transformationscc;action
构建数据流图(谱系图)linage
图论做优化
如何对梯度下降进行并行化?
梯度下降法并行化设计:
机器学习:分类问题或者回归预测问题
特征向量,标签找出$f:X\rightarrow Y$
$\to \gets \theta$ 太熟了就不写了
如何并行化?
递归过程不能并行化,能并行化:$\Sigma$找梯度 由map完成。reduce做外层的一次加减。
logistiic 回归 $\to$分类,w向量求梯度,可以并行化
如何并行快速处理大规模,复杂的图?
图的并行算法设计总结:
BFS在map reduce怎么表示?数据结构:K,V对:node n,结点对应临界列表和最短路径d。
pagerank:d不一样。衡量一个网页的重要性,随机冲浪模型:概率(网址跳转+外链);
草原生态模型:湖有高度差和邻接河道,权重矩阵是概率转移矩阵$P$,迭代直到两个状态矩阵$\pi$相同,$\pi \cdot P=\pi$, $\pi$就是PageRank,外链访问,网页重要程度.
如果有蒸发下雨,$\alpha$蒸发, 绝对地址直接访问网页,$\pi=\pi\cdot P \times\alpha+(1-\alpha)\cdot N$,N是湖泊(网页)个数
出度 由map;入度求和由reduce;KV对排序
PageRank | BFS | |
---|---|---|
map | PR/N | d+1 |
reduce | sum | min |
作业:
- 之前pyspark的实验搭建过程
- 大作业 自拟题目
题目1、请自拟题目,自选方向(电力方向尤佳),撰写一篇云计算在不同领域的最新应用的综述文章。(3000+)
题目2、请自拟题目,自选一个已运用MapReduce实现过的算法(机器学习算法尤佳),撰写一篇分析运用MapReduce编程模型对传统算法进行并行化的文章。(2000-3000)
题目3、请自拟题目,自选一个未运用MapReduce实现过的算法(电力方向的算法尤佳),运用MapReduce程模型对该算法进行并行化设计,采用Hadoop API实现该算法,并在Hadoop集群上运行测试,根据测试结果撰写一篇文章。(2000-3000)
Towards Self-managing cloud storage with rl
connectedpapers.com
文献追踪
2021/9