
Distributed
文章平均质量分 83
orisun
数据挖掘
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ZooKeeper编程
杂记ZooKeeper的用途:distributed coordination;maintaining configuration information, naming, providing distributed synchronization, and providing group services.Zookeeper的节点都是存放在内存中的,所以读写速度很快。更新日志被记录到了磁原创 2013-01-05 18:30:02 · 399 阅读 · 0 评论 -
MapReduce Features
CountersBuilt-in Counters这些counters你在Web UI中,或是job结束后在控制台生成的统计报告中都看得到,根据名字你也能猜到这些counter是什么意思。分为3个Group:Map-Reduce FramewordMap input records,Map skipped records,Map input bytes,Map output r原创 2013-01-05 18:31:07 · 418 阅读 · 0 评论 -
开发MapReduce程序
配置Configuration一条configuration的名称可以是任意字符串,值可以是任意数据类型。conf.set("name", "orisun");conf.setInt("age",24);在代码中设置只对本次代码运行有效,而在配置文件中设置则长久有效。configuration-1.xmlxml version="1.0"?>configurat原创 2013-01-05 18:31:14 · 352 阅读 · 0 评论 -
Hadoop I/O
在Hadoop集群中,数据在网络上传输,保证数据完整性的通常做法使用checksum,比如常用的 CRC-32 (cyclic redundancy check)。Hadoop上支持的文件压缩格式有:gzip ZIP bzip2 LZO。例如在UNIX上可以使用命令:gzip -1 file,会生成file.gz,但是原来的file就没有了。压缩算法都要在执行速度和压缩比上做一个权衡,-原创 2013-01-05 18:31:16 · 488 阅读 · 0 评论 -
用Hadoop1.0.3实现KMeans算法
从理论上来讲用MapReduce技术实现KMeans算法是很Natural的想法:在Mapper中逐个计算样本点离哪个中心最近,然后Emit(样本点所属的簇编号,样本点);在Reducer中属于同一个质心的样本点在一个链表中,方便我们计算新的中心,然后Emit(质心编号,质心)。但是技术上的事并没有理论层面那么简单。Mapper和Reducer都要用到K个中心(我习惯称之为质心),Mapper原创 2013-01-05 18:30:50 · 401 阅读 · 0 评论 -
MapReduce算法设计--Think in Hadoop
本文介绍几种MapReduce算法设计的技巧,全部内容翻译自《Data-Intensive Text Processing with MapReduce》。Local Aggregation说到Local Aggregation,你可能会想不就是Combiner吗。实际上在mapper中进行combining比使用真正的combiner高效得多。首先combiner只是作为MapReduc原创 2013-01-05 18:30:38 · 428 阅读 · 0 评论 -
并行计算机硬件基础
现在一个芯片上可以构造多指令的执行引擎,俗称核。cache一般分三级,L1、L2、L3,L1离CPU最近,容量最小。Intel Core Duo处理器中,每个处理器各有一个32KB的私有1级指令cache和数据cache,它们共享一个2M的2级cache。cache一致性保证仅在处理器单独使用cache行的情况下,处理器才可以写入私有的高速缓存行单元----这样多处理器就引入了额外的开销。原创 2013-01-05 18:29:24 · 453 阅读 · 0 评论 -
OpenMP系列--初次体验多核并行编程
新版的GCC编译器都支持OpenMP。在程序中需要引入omp.h头文件,另外在编译时需要指定-fopenmp选项。#include#include#includevoid test(){ int a=0; clock_t t1=clock(); for(int i=0;i<10000000;i++){ a=i+1;原创 2013-01-05 18:27:58 · 618 阅读 · 0 评论 -
Linux下利用多线程实现矩阵相乘的并行计算
现代的线程库允许不同的线程运行在不同的处理器芯片上,从而实现真正意义上的并行。换句话说,如果你的机子是单核的,用多线程也没不会提高执行效率。我的电脑是多核的,并行计算耗时0.56秒,但按照常规的串行计算方法只需要0.07秒。分析一下原因,在我的程序里计算200×300和300×200的两个矩阵的乘积,分了300个子线程去分头完成。线程数太多,每个线程的工作量太小,CPU把时间都花在线程调度原创 2013-01-05 18:23:06 · 1457 阅读 · 0 评论 -
为什么并行没有比串行快?
要统计一个整型数组中3出现的次数,写一个并行程序:#include#include#include#include#includestring.h>#include#include#define ARRLEN 200000000 //int型数组的长度,我们的程序就是要统计这个数组中元素3出现了多少次struct padded_int{ int value;原创 2013-01-05 18:29:21 · 958 阅读 · 0 评论 -
Hadoop的InputFormats和OutputFormats
InputFormatInputFormat类用来产生InputSplit,并把它切分成record。public interface InputFormat { InputSplit[] getSplits(JobConf job, int numSplits) throws IOException; RecordReader getRecordR原创 2013-01-05 18:31:09 · 526 阅读 · 0 评论 -
MapReduce在搜索引擎中一些应用
word-doc矩阵在进行文件分类或文档检索的时候,我们通常需要建立一个word-doc矩阵,来记录每个词在每篇文档中出现的次数。class Mapper method map(docid id,doc d) foreach term in d Emit(pair(term,id),1)一种更高效的方法是在mapper侧进行聚合。class Map原创 2013-01-05 18:30:40 · 437 阅读 · 0 评论 -
多进程调试
实际上,GDB 没有对多进程程序调试提供直接支持。例如,使用GDB调试某个进程,如果该进程fork了子进程,GDB会继续调试该进程,子进程会不受干扰地运行下去。如果你事先在子进程代码里设定了断点,子进程会收到SIGTRAP信号并终止。那么该如何调试子进程呢?其实我们可以利用GDB的特点或者其他一些辅助手段来达到目的。此外,GDB 也在较新内核上加入一些多进程调试支持。本文介绍的方法能让你把断点原创 2013-01-05 18:29:36 · 361 阅读 · 0 评论 -
并行计算性能分析
第一个性能当然是速度,还有两个:延时:完成指定工作所需要的时间吞吐率:单位时间内完成的工作量开发并行性通常能改进吞吐率。开发并行可以隐藏延时,当然并没有真正的减少延时,只是隐藏了延时的代价,因为它“与其等待,不如去计算其余部分”。并行计算比串行计算要建立更多线程而带来额外开销,建立进程的开销远大于线程,这是因为存储器的分配和初始化非常昂贵。线程(或进程)间的通信是开原创 2013-01-05 18:29:26 · 536 阅读 · 0 评论 -
HDFS
HDFS适合做:存储大文件。上G、T甚至P。一次写入,多次读取。并且每次作业都要读取大部分的数据。搭建在普通商业机群上就可以了。虽然会经常宕机,但HDFS有良好的容错机制。HDFS不适合做:实时数据获取。如果有这个需求可以用HBase。很多小文件。因为namenode要存储HDFS的metadata(比如目录的树状结构,每个文件的文件名、ACL、长度、owner原创 2013-01-05 18:31:19 · 422 阅读 · 0 评论 -
详解MapReduce工作流程
一、客户端向JobTracker提交作业这个阶段要完成以下工作:向JobTracker申请 一下新的JobID检查是否指定了output dir,并且确认output dir不存在根据InputPath计算input split。这里的input split并不是MapReduce输入数据的完整拷贝,只是记录了每个split在什么地方存放着。split和block一样都是逻辑概原创 2013-01-05 18:31:11 · 423 阅读 · 0 评论