0%

hadoop+pyspark学习和部署

PySpark简介

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
2
3
4
5
6
7
8
9
py36   //菜菜
JDK1.8
scala==2.11.8
spark==3.02
hadoopp==3.2
winutils==3.0.0
py4j==0.10.9
python==3.6.12
pyspark==3.0.2
1
2
3
4
5
6
7
8
9
//李敏
JDK1.8
scala==2.11.8
spark==2.4.7
hadoopp==2.7.7
winutils==2.7.1
py4j==0.10.9
python==3.7.6
pyspark==2.4.0

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
2
3
4
5
6
7
export SPARK_HOME=/home/qyt/Downloads/spark-3.0.2-bin-hadoop3.2
export PATH=$PATH:$SPARK_HOME/bin

export HADOOP_HOME=/home/qyt/Downloads/hadoop-3.2.2
export PATH=${HADOOP_HOME}/bin:$PATH

source ~/.bashrc

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

作业:

  1. 之前pyspark的实验搭建过程
  2. 大作业 自拟题目

题目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

欢迎关注我的其它发布渠道