失败的方案
来源:互联网 发布:手感好的无线鼠标知乎 编辑:程序博客网 时间:2024/05/14 14:45
去年设计了一个MapReduce的单机多线程C++版实现,由于没有充分考虑磁盘读写瓶颈,性能提不上去,宣告失败.
通过这个案例有如下几个方面的思考:
1.MapReduce是集群级别的应用,处理的解决单机无法解决的大文件,海量数据的处理问题.HDFS将文件分块,并将他们分部在不同的节点上,运算的时候多个节点同时进行.数据尽量不通过网络传递,这就是为了避免网络传输影响速度.我的程序是将数据全部集中在本地磁盘,虽然没有通过网络传输导致的读取速率问题,但是由于磁盘读取速率的瓶颈问题,多个线程读取同一个文件的速率没有得到提升.同时由于单机的cpu处理能力限制,不可能多线程就可以利用更多的cpu资源,多线程只是解决了资源竞争的问题,并不能解决资源不足的问题.由此,处理性能无法得到提升.
2.虽然此方案并没有解决处理速率的问题,但是利用MapReduce的分治思想,还是能够处理大文件.由于设计中并不是将所有数据都读入内存之后再处理的,而是一边读取一边写入中间文件,从而可以解决内存开销的问题.在试验中500MB的WordCount试验,在不使用MapReduce方式处理的情况下会出现内存不组,最后导致程序崩溃的异常,但是使用MapReduce确没有遇到这样的情况,并且完成了计算.
通过这个案例有如下几个方面的思考:
1.MapReduce是集群级别的应用,处理的解决单机无法解决的大文件,海量数据的处理问题.HDFS将文件分块,并将他们分部在不同的节点上,运算的时候多个节点同时进行.数据尽量不通过网络传递,这就是为了避免网络传输影响速度.我的程序是将数据全部集中在本地磁盘,虽然没有通过网络传输导致的读取速率问题,但是由于磁盘读取速率的瓶颈问题,多个线程读取同一个文件的速率没有得到提升.同时由于单机的cpu处理能力限制,不可能多线程就可以利用更多的cpu资源,多线程只是解决了资源竞争的问题,并不能解决资源不足的问题.由此,处理性能无法得到提升.
2.虽然此方案并没有解决处理速率的问题,但是利用MapReduce的分治思想,还是能够处理大文件.由于设计中并不是将所有数据都读入内存之后再处理的,而是一边读取一边写入中间文件,从而可以解决内存开销的问题.在试验中500MB的WordCount试验,在不使用MapReduce方式处理的情况下会出现内存不组,最后导致程序崩溃的异常,但是使用MapReduce确没有遇到这样的情况,并且完成了计算.
- 失败的方案
- 失败的第一次方案
- 2017.10.22 最多的方案 失败总结
- iOS_cocoa pods安装失败的奇奇怪怪的问题解决方案
- 解决访问IIS元数据库失败的方案
- ubuntu 14 关于vpn服务启动失败的问题解决方案
- Window2003 备份失败处理方案
- ISE中下载Xilinx的bit文件失败时的处理方案
- 解决InternetReadFile下载带有中文字符的文件失败的方案
- 有关在Windows下配置PHP+Apache+Optimizer失败的问题解决方案
- Android Studio更新后Gradle Build/Refresh失败的问题解决方案
- 关于centos 7 中service iptables save 指令使用失败的结局方案
- Centos 7 之service iptables save 指令使用失败的结局方案
- 关于centos 7 中service iptables save 指令使用失败的结局方案
- Xcode常见编译失败问题解决方案
- 登录成功或失败直接在当前页面给出提示信息,不必进行struts2的路由配置方案
- 关于java中阻塞队列(LinkedBlockingQueue)中任务执行失败后的重试机制几种方案
- Bottle中对内联CSS中的background-image属性图片相对路径url()加载失败的折中方案
- GBK、GB18030、GB2312 区别
- CSDN博客排名
- 使用ICU4J探测文档编码
- 使用ICU进行字符集探测 文档译稿
- 正则表达式中Matcher的group()、start()、end()带参方法解析
- 失败的方案
- TF-IDF:网页和某个查询的相关性
- MyEclipse安装FatJar
- Java Enum
- Linux crontab定时执行任务
- ubuntu 9.10 中国科学技术大学源(sources.list)
- java 乱码问题-Dfile.encoding=UTF-8
- 安全的从双系统中删除Ubuntu并正常引导Windows
- ubuntu 10.04安装sun版本jdk