![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
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 · 371 阅读 · 0 评论 -
MapReduce Features
Counters Built-in Counters 这些counters你在Web UI中,或是job结束后在控制台生成的统计报告中都看得到,根据名字你也能猜到这些counter是什么意思。分为3个Group: Map-Reduce Frameword Map input records,Map skipped records,Map input bytes,Map output r原创 2013-01-05 18:31:07 · 383 阅读 · 0 评论 -
开发MapReduce程序
配置Configuration 一条configuration的名称可以是任意字符串,值可以是任意数据类型。 conf.set("name", "orisun"); conf.setInt("age",24); 在代码中设置只对本次代码运行有效,而在配置文件中设置则长久有效。 configuration-1.xml xml version="1.0"?> configurat原创 2013-01-05 18:31:14 · 310 阅读 · 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 · 454 阅读 · 0 评论 -
用Hadoop1.0.3实现KMeans算法
从理论上来讲用MapReduce技术实现KMeans算法是很Natural的想法:在Mapper中逐个计算样本点离哪个中心最近,然后Emit(样本点所属的簇编号,样本点);在Reducer中属于同一个质心的样本点在一个链表中,方便我们计算新的中心,然后Emit(质心编号,质心)。但是技术上的事并没有理论层面那么简单。 Mapper和Reducer都要用到K个中心(我习惯称之为质心),Mapper原创 2013-01-05 18:30:50 · 366 阅读 · 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 · 393 阅读 · 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 · 405 阅读 · 0 评论 -
OpenMP系列--初次体验多核并行编程
新版的GCC编译器都支持OpenMP。在程序中需要引入omp.h头文件,另外在编译时需要指定-fopenmp选项。 #include #include #include void test(){ int a=0; clock_t t1=clock(); for(int i=0;i<10000000;i++){ a=i+1;原创 2013-01-05 18:27:58 · 581 阅读 · 0 评论 -
Linux下利用多线程实现矩阵相乘的并行计算
现代的线程库允许不同的线程运行在不同的处理器芯片上,从而实现真正意义上的并行。换句话说,如果你的机子是单核的,用多线程也没不会提高执行效率。 我的电脑是多核的,并行计算耗时0.56秒,但按照常规的串行计算方法只需要0.07秒。 分析一下原因,在我的程序里计算200×300和300×200的两个矩阵的乘积,分了300个子线程去分头完成。线程数太多,每个线程的工作量太小,CPU把时间都花在线程调度原创 2013-01-05 18:23:06 · 1387 阅读 · 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 · 901 阅读 · 0 评论 -
Hadoop的InputFormats和OutputFormats
InputFormat InputFormat类用来产生InputSplit,并把它切分成record。 public interface InputFormat { InputSplit[] getSplits(JobConf job, int numSplits) throws IOException; RecordReader getRecordR原创 2013-01-05 18:31:09 · 492 阅读 · 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 · 396 阅读 · 0 评论 -
多进程调试
实际上,GDB 没有对多进程程序调试提供直接支持。例如,使用GDB调试某个进程,如果该进程fork了子进程,GDB会继续调试该进程,子进程会不受干扰地运行下去。如果你事先在子进程代码里设定了断点,子进程会收到SIGTRAP信号并终止。那么该如何调试子进程呢?其实我们可以利用GDB的特点或者其他一些辅助手段来达到目的。此外,GDB 也在较新内核上加入一些多进程调试支持。 本文介绍的方法能让你把断点原创 2013-01-05 18:29:36 · 318 阅读 · 0 评论 -
并行计算性能分析
第一个性能当然是速度,还有两个: 延时:完成指定工作所需要的时间 吞吐率:单位时间内完成的工作量 开发并行性通常能改进吞吐率。 开发并行可以隐藏延时,当然并没有真正的减少延时,只是隐藏了延时的代价,因为它“与其等待,不如去计算其余部分”。 并行计算比串行计算要建立更多线程而带来额外开销,建立进程的开销远大于线程,这是因为存储器的分配和初始化非常昂贵。 线程(或进程)间的通信是开原创 2013-01-05 18:29:26 · 487 阅读 · 0 评论 -
HDFS
HDFS适合做: 存储大文件。上G、T甚至P。 一次写入,多次读取。并且每次作业都要读取大部分的数据。 搭建在普通商业机群上就可以了。虽然会经常宕机,但HDFS有良好的容错机制。 HDFS不适合做: 实时数据获取。如果有这个需求可以用HBase。 很多小文件。因为namenode要存储HDFS的metadata(比如目录的树状结构,每个文件的文件名、ACL、长度、owner原创 2013-01-05 18:31:19 · 379 阅读 · 0 评论 -
详解MapReduce工作流程
一、客户端向JobTracker提交作业 这个阶段要完成以下工作: 向JobTracker申请 一下新的JobID 检查是否指定了output dir,并且确认output dir不存在 根据InputPath计算input split。这里的input split并不是MapReduce输入数据的完整拷贝,只是记录了每个split在什么地方存放着。split和block一样都是逻辑概原创 2013-01-05 18:31:11 · 376 阅读 · 0 评论