本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7597464
建立时间:2006年5月29日




[Apache(jakarta)](转载)Hadoop笔记--不需要分布式编程经验地分布式编程
软件技术

lhwork 发表于 2006/12/13 15:27:56

Hadoop 是 Google labs 的MapReduce的一个实现,Nutch项目的全部数据处理都构建在其之上。MapReduce是一种简化的分布式编程模式,让程序可以自动在普通机器组成的集群中以并行方式分布执行。

就如同java程序员可以不考虑内存泄露一样,MapReduce程序员也不许要关心海量数据如何被分配到多台机器上,不需要考虑机器失效的处理,不需要考虑这些机器间如何协作共同完成工作,程序员不需要什么并发处理或者分布式系统的经验,就可以进行分布式的编程。

MapReduce来源于函数式编程的Map,Reduce概念,Map是映射,Reduce是规约。说了非常简单,就真的是非常简单的,先看 Hadoop自带的sample-WordCount ,再看Nutch里的Indexer,Fetcher两个实战的例子,最后阅读Hadoop wiki 上的HadoopMapReduce,很快就可以上手:

MapReduce过程简记:
1.根据输入路径,先用FileSplit把输入的文件剁碎,根据Inp


阅读全文(1432) | 回复(0) | 编辑 | 精华 | 删除
 


[Apache(jakarta)]Hadoop Learning (3)
软件技术

lhwork 发表于 2006/12/13 15:27:02

上面的例子还不完整,统计数据没有排序,而且输出的output文件是二进制格式的。现在修改一下
Statistic.java:
    public static void main(String[] args) throws IOException
    {
        Configuration defaults = new Configuration();
        new JobClient(defaults).getFs().delete(new File("tmp/output/"));
        
        File tempDir = new File("tmp/stat-temp-"+Intege


阅读全文(1974) | 回复(0) | 编辑 | 精华 | 删除
 


[Apache(jakarta)]Hadoop Learning (2)
软件技术

lhwork 发表于 2006/12/13 15:26:37

之前做的Demo太无聊了,决心改造一下~~
1.  输入格式。
之前的程序,StatMapper莫名其妙被输入了一堆key,value,应该是一种默认的输入格式,找了一下,原来是这个: org.apache.hadoop.mapred.InputFormatBase,  继承了InputFormat接口。接口里面有一个
  FileSplit[] getSplits(FileSystem fs, JobConf job, int numSplits)
    throws IOException;
看来所有输入输出都必须以文件为单位存放了,就像Lucene一样。一般输入数据都是按照行来分隔的,看来一般用这个InputFormatBase就可以了。
2. 输入数据。
这东东本来就是用来高效处理海量数据的,于是我想到了那iHome的ActionLog....,加起来好几百个M的,符合要求吧。这里统计一下这几天,指令被调用的次数。

阅读全文(1426) | 回复(0) | 编辑 | 精华 | 删除
 


[Apache(jakarta)]Hadoop Learning (1)
软件技术

lhwork 发表于 2006/12/13 15:26:12

My Demo
Statistic.java
1. 初始化配置文件,临时文件存放目录,还有具体的Job。

        Configuration defaults = new Configuration();
        File tempDir = new File("tmp/stat-temp-"+Integer.toString(
                new Random().nextInt(Integer.MAX_VALUE)));
        JobConf statJob = new JobConf(defaults, Statis

阅读全文(1523) | 回复(0) | 编辑 | 精华 | 删除
 


[Apache(jakarta)]开始Hadoop
软件技术

lhwork 发表于 2006/12/13 15:12:08

+ 下载和安装 设置环境变量 $HADOOP_INSTALL 作为Hadoop的安装目录。 各个版本的hadoop都是安装在$HADOOP_INSTALL这个目录下。 然 后在$HADOOP_INSTALL创建一个软连接hadoop连接到指定版本的hadoop。这样运行hadoop的所有工具都是在$ HADOOP_INSTALL/hadoop/bin下,所有的配置文件都是放置在$HADOOP_INSTALL/hadoop/conf下。 + 启动脚本 $HADOOP_INSTALL/hadoop/bin目录下包含运行Hadoop DFS 和 Map/Reduce守护的脚本: * start-all.sh 启

阅读全文(2396) | 回复(0) | 编辑 | 精华 | 删除
 


[Spring]反思spring:由Ruby on Rails想到的
软件技术

lhwork 发表于 2006/12/11 18:08:15

众所周知,RoR里面的指导原则有:
第一条是较小的软件,这意味着你编写较少的程序行。程序小就能加速开发,错误也较少,使得程序较容易理解、维护和增强。对编写较小程序做出贡献的Ruby的一个特性就是它假设该架构本身能够并应该处理元数据.
第二条是对配置的协定原理,这意味着Rails不用配置文件,而是依靠一些简单的编程协定,让它通过利用应用程序已有的信息和在运行的数据库,解决它需要知道什么这个问题。
Spring一个非常灵活的一个框架,灵活的同时也造成了一定的复杂性。我个人眼中的spring应该从RoR学到的东西应该有:不用写一行xml语句就可以配置好AOP常规的事务管理,约定高于配置。
当前spring支持的事务管理配置,大体有以下两种配置方式,为了方便举例子,所以借用了javaEE技术专家"江南白衣"的两段代码 (1)、spring2.0版本支持的事务管理<be

阅读全文(2677) | 回复(0) | 编辑 | 精华 | 删除
 


[算法]堆的应用
软件技术

lhwork 发表于 2006/12/11 11:18:17

一个文件中包含了1亿个随机整数,如何快速的找到最大(小)的100万个数 字?这类问题其实就是“优先树”算法,用堆(Heap)很容易解决。首先用含100万个数字的数组组成堆。从文件间读取数字,并插入到Heap中。如果 Heap已经满了,则删除根节点,并重整;直到所有的数字均处理完毕。 堆排序是Heap的副产品,其实它大部分时间是用在“优先决策”上,上面的例子只是其中之一,其他场所比如操作系统的任务调用、优先队列等。 public static Comparable[] findMin

阅读全文(3110) | 回复(0) | 编辑 | 精华 | 删除
 


[算法]二叉树
软件技术

lhwork 发表于 2006/12/11 11:17:48

和堆类似,二叉树也是一种很奇特的数据结构。它包含了根节点,节点最多只有一个左右节点。 父节点和左右子节点之间有一定的关系:
1. 父节点比左节点大(小)。
2. 父节点比右节点小(大)。
通过这种特性,二叉树的查找定位非常方便,比数组、链表的查找效率要高很多。在我的机器上,从100万个随机整数中查找一个整数平均需要0.00386毫秒。可见效率确实很高。

阅读全文(2811) | 回复(0) | 编辑 | 精华 | 删除
 


[J2SE]JDK5新特性——java.util.concurrent 线程池(1)
软件技术

lhwork 发表于 2006/12/11 11:16:41

最近JDK6 RC已经发布了,而对于JDK5的新特性还来不及使用,虽然在项目中还没有使用,但可以写一些Demo体验一下Tiger的魅力,现在的时代就是体验的时代,事事都要亲历亲为才能有发言权,怎么有点毛主席“实事求是”的感觉。 JDK5中的一个亮点就是将Doug Lea的
阅读全文(5400) | 回复(0) | 编辑 | 精华 | 删除
 


[J2SE]JDK5新特性——java.util.concurrent 线程池(2)
软件技术

lhwork 发表于 2006/12/11 11:16:16

许多长时间运行的应 用有时候需要定时运行任务完成一些诸如统计、优化等工作,比如在电信行业中处理用户话单时,需要每隔1分钟处理话单;网站每天凌晨统计用户访问量、用户 数;大型超时凌晨3点统计当天销售额、以及最热卖的商品;每周日进行数据库备份;公司每个月的10号计算工资并进行转帐等,这些都是定时任务。通过 java的并发库concurrent可以轻松的完成这些任务,而且非常的简单。

阅读全文(6687) | 回复(1) | 编辑 | 精华 | 删除
 


« 71 72 73 74 75 76 77 78 79 80 »



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.578 second(s), page refreshed 144768737 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号