对分布式存储和并行计算的一点思考

分布式存储:
首先是文件在HDFS上面以128M块大小存储(3份),这三块是在不同节点的(机架感知),我觉的好处是容错还有当计算是这个节点资源不够可以去块所在的另一节点执行,不用拉取数据。
可以通过fs.getfileblocklocation()获取块位置
并行计算:
1、MR使用默认的输入格式,一个块就是一个切片,切片数就是并行度,就是MapTask个数,所有数据块同时计算,reduceTask数可以设置,reduce生成的文件在reduce任务所在节点
2、spark读不同的数据源默认并行度是不同的,读HDFS文件默认也是一块为一个分区,要理解RDD的弹性分布式数据集,对于一个job可以看下图

每个stage中的分区数就是并行度,就是一个task,我们再提交spark任务的时候要指定excutor和每个excutor的cores个数,excutor个数乘以cores就是最大并行度,一个core运行一个task
一般要对spark任务重分区,官方来说分区数是最大并行度的2-3倍,充分利用资源
还有个job之间默认是串行的,如果让job之间并行(用Executor实现多线程方式处理Job)可以看http://blog.51cto.com/10120275/1961130
3、Flink的后续补充

猜你喜欢

转载自blog.csdn.net/weixin_42031369/article/details/85393313