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


«October 2025»
1234
567891011
12131415161718
19202122232425
262728293031


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

我的分类(专题)

日志更新

最新评论

留言板

链接

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




[Apache(jakarta)]Hadoop系列-fs包之代码实现
软件技术

lhwork 发表于 2006/12/13 15:33:06

在此包中,最重要的是FileSystem抽象类。它定义了文件系统中涉及的一些基本操作,如:create,rename,delete...另外包括 一些分布式文件系统具有的操作:copyFromLocalFile, copyToLocalFile,...类似于Ftp中put和get操作。 LocalFileSystem和DistributedFileSystem,继承于此类,分别实现了本地文件系统和分布式文件系统。
了解了最重要的类之后,看一看它的一系列stream类:

    * FSOutputStream 在原有OutputStream基础之上添加了获得文件指针偏移量的getPos方法。可以通过FileSystem的 createRaw获得它的实例。这里存在一个疑问,这个扩展的getPos方法在fs包中没有被使用。如果在其余包中同样没有被使用,那么扩展就显得多 余。

    * FSInputStream在原有InputStream基础之上同样添加了getPos方法,同时可


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


[Apache(jakarta)]Hadoop系列-IPC之代码实现
软件技术

lhwork 发表于 2006/12/13 15:32:41

* 整体结构:在IPC包中,最重要的3个类是Server,Client和RPC,它们具有层次化的结构。

   1. RPC 类是对Server、Client的具体化。在RPC类中规定,客户程序发出请求调用时,参数类型必须是Invocation;从服务器返回的值类型必须 是ObjectWritable。为了加强理解,可以查看测试类TestIPC。在那里,规定的参数类型与返回值类型都是LongWritable。
   2. RPC 类是对Server、Client的包装,简化用户的使用。如果一个类需充当服务器,只需通过RPC类的静态方法getServer获得Server实 例,然后start。同时此类提供协议接口的实现。如果一个类充当客户端,可以通过getProxy或者waitForProxy获得一个实现了协议接口 的proxy object,与服务器端交互。为了加强理解,可以查看测试类TestRPC,在那里,实现的协议接口为TestProtocol。

   


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


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

lhwork 发表于 2006/12/13 15:30:23

之前的MapReduce Demo只能在一台机器上运行,现在是时候让它分布式运行了。在对MapReduce的运行流程和FileSystem进行了简单研究之后,现在尝试从配置着手,看看怎样让Hadoop在两台机器上面同时运行MapReduce。
首先看回这里
      String tracker = conf.get("mapred.job.tracker", "local");
      if ("local".equals(tracker)) {
        this.jobSubmitClient = new LocalJobRunner(conf);
      } else {
        this.jobSubmitClient = (JobSubmission

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


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

lhwork 发表于 2006/12/13 15:29:50

Hadoop 的文件系统,最重要是 FileSystem 类,以及它的两个子类 LocalFileSystem 和 DistributedFileSystem。 这里先分析 FileSystem。
抽象类 FileSystem,提高了一系列对文件/目录操作的接口,还有一些辅助方法。分别说明一下:
1. open,create,delete,rename等,非abstract,部分返回 FSDataOutputStream,作为流进行处理。
2. openRaw,createRaw,renameRaw,deleteRaw等,abstract,部分返回 FSInputStream,可以随机访问。
3. lock,release,copyFromLocalFile,moveFromLocalFile,copyToLocalFile 等abstract method,提供便利作用,从方法命名可以看出作用。
特别说明,Hadoop的文件系统,每个文件都有一个checksum,一个crc文件。因此FileSystem里面的部分代码对此进行了

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


[Apache(jakarta)]Distributed Hadoop Execution
软件技术

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

Hadoop 带有一个ant的build脚本,修改target compile-examples中的include路径,设为自己的demo路径。然后运行 ant examples,会在build脚本目录下面生成一个build目录,里面已经包含了构建好的jar包等。
建一个JobServerMain,内容为
    public static void main(String[] args) throws IOException, InterruptedException
    {
        JobTracker.main(new String[]{});
    }
用于启动JobTracker。再建一个TaskServerMain,内容
    public static void main(String[] args) throws IOException<

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


[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

阅读全文(1439) | 回复(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

阅读全文(1981) | 回复(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的,符合要求吧。这里统计一下这几天,指令被调用的次数。

阅读全文(1438) | 回复(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

阅读全文(1538) | 回复(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 启

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


« 1 2 3 4 5 6 7 8 »



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

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