mapreduce任务使用leveldb多线程问题
来源:互联网 发布:log4j打印sql日志 编辑:程序博客网 时间:2024/06/18 12:00
很多朋友在运行mapreduce时需要使用本地词典,而leveldb是一种较好的解决方案,其优点在于访问速度快,可建超大词典。但是leveldb词典每份数据只能同时一个线程访问,而hadoop计算平台上会把用户指定的词典分发到单机上,每个任务在当前目录下建立一个符号链接指向词典数据,这样无疑会造成一份数据多线程访问的情况。
笔者也被这个问题所困惑,于是探索了两种解决方案。
第一种:单机限制单个并发,每个机器限制一个并发数,这样每台机器上的字典文件不会被两个线程同时访问。此方法会极大影响性能,因为单机只有一个并发。
第二种,也是最优的一种,不需要调并发数,将词典文件分发到单机上。如果是streaming实现的mr任务,比较容易实现,直接将词典文件通过cp命令拷贝到本地,然后解压。如果是java实现的任务,相对麻烦一些,需要在java中调用shell脚本来完成,即在setup阶段运行shell命令,实现文件的拷贝。具体实现细节今后补充。
更多精彩,参考小小程序员
0 0
- mapreduce任务使用leveldb多线程问题
- Mapreduce中使用多线程的问题
- leveldb使用时遇到的性能问题
- mapreduce过程解析及任务调度问题
- 在mapreduce任务中使用distributedCache
- 在mapreduce任务中使用distributedCache
- 使用多线程创建下载任务
- 使用MapReduce求解join问题
- windows上远程运行MapReduce任务遇到的问题
- 解决MapReduce任务在windows本地执行的NullPointerException问题
- LevelDB数据库使用
- Leveldb使用小例
- leveldb 安装和使用
- windows下使用LevelDB
- LevelDB使用入门
- leveldb原理和使用
- leveldb安装和使用
- leveldb 安装及使用
- BeanUtil 操作Bean属性
- Class类的asSubClass()方法
- stm32 DAC+DMA 输出100K正弦波杠杠的!!!
- 1016: [JSOI2008]最小生成树计数
- pthread
- mapreduce任务使用leveldb多线程问题
- C++ 对象模型 学习笔记(2)
- PKU 3974 - Palindrome (最长回文字串 DP)
- 2048游戏C语言代码
- BS几种技术及它们之间关系
- LWIP分析与socket编程方法
- Cocos2d-x3.1下实现类似iOS页面滑动指示圆点
- IO流--IO异常的处理方式
- 白醋美容妙妙妙!