2012年05月29日 星期二 下午 6:10 1. Hadoop pipes编程介绍 Hadoop pipes允许C++程序员编写mapreduce程序,它允许用户混用C++和Java的RecordReader, Mapper, Partitioner,Rducer和RecordWriter等五个组件。关于Hadoop pipes的设计思想,可参见我这篇文章:Hadoop Pipes设计原理。 本文介绍了Hadoop pipes编程的基 |
2012年05月29日 星期二 下午 6:10 1. 什么是Hadoop pipes? Hadoop pipes允许用户使用C++语言进行MapReduce程序设计。它采用的主要方法是将应用逻辑相关的C++代码放在单独的进程中,然后通过Socket让Java代码与C++代码通信。从很大程度上说,这种方法类似于Hadoop Streaming,不同的是,它采用Writable序列化方法将数据转化为byte,然后通过socket传给C++进程。 org.apache.hadoop.mapred.pipes.Submitter包中有一个public static方法用于提交作业,该方法将作业封装成一个JobConf对象 |
2012年05月29日 星期二 下午 6:06 2012年05月29日 星期二 下午 5:37 Streaming是Hadoop提供的一个可以使用其他编程语言来进行MapReduce来的API,因为Hadoop是基于Java(由于作者比较擅长Java,Lucene和Nutch都是出于Hadoop的作者)。Hadoop Streaming并不复杂,其只是使用了Unix的标准输入输出作为Hadoop和其他编程语言的开发接口,因此在 |
2012年05月29日 星期二 下午 4:14 1. 概要 本文主要介绍了Hadoop Streaming的一些高级编程技巧,包括,怎样在mapredue作业中定制输出输出格式?怎样向mapreduce作业中传递参数?怎么在mapreduce作业中加载词典?怎样利用Hadoop Streamng处理二进制格式的数据等。 关于Hadoop Streaming的基本编程方法,可参考:Hadoop Streaming编程 |
2012年05月29日 星期二 下午 3:41 1、概述 Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer,例如: 采用shell脚本语言中的一些命令作为mapper和reducer(cat作为mapper,wc作为reducer) $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \ -input myInputDirs \ -output myOutputDir \ -mapper cat \ -reducer wc 本文安排如下,第二节介绍Hadoop Streaming的 |
2012年05月28日 星期一 下午 5:43 在linux中删除大量文件时,直接用rm会出现:-bash: /bin/rm: 参数列表过长,的错误。
这时可以用find命令来结合使用。
例: 1、rm * -rf 改为: find . -name "*" | xargs rm -rf '*' 就行了。
2、rm test* -rf 改为: find . -name "test*" | xargs rm -rf "test*" mv时报参数列表过长, for i in *.m;do mv $i ${i%.m};done 于是求助于google,探索过程就省略了, |
2012年05月28日 星期一 下午 4:01 0. 前言¶- 從 hadoop 0.20.1 之後,contrib 資料夾下就在也找不到 eclipse-plugin 可以用了,因為作者群認為大家不是小孩子了,要自己種出東西來吃,而不是伸手要來之後又一直抱怨有瑕疵...(在這之前一直抱怨有瑕疵的就是我)。
- 此篇可以幫助大家編譯出適用於 hadoop 0.20 的 各版本 eclipse plugin (hadoop-0.20.1-eclipse-plugin.j
|
2012年05月28日 星期一 下午 4:00 一个基于Mahout与hadoop的聚类搭建 2011-09-24
mahout是基于hadoop的数据发掘对象,因为有了hadoop,所以进行海量数据的发掘工作显得更为简单。然则因为算法须要支撑M/R,所以不是所有常用的数据发掘算法都邑支撑。这篇文章会告诉你,如何应用hadoop + mahout搭出一个简略单纯的聚类对象。
第一步:搭建hadoop平台。 |
2012年05月16日 星期三 下午 5:13 第一部分、十道海量数据处理面试题 1、海量日志数据,提取出某日访问百度次数最多的那个IP。 此题,在我之前的一篇文章算法里头有所提到,当时给出的方案是:IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 再详细介绍下此方案:首先是这一天,并且是访问百度的日志中的IP取出来,逐个写入到一个大文件中。注意到IP |
2012年05月16日 星期三 下午 5:11 1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。 s 遍历文件a,对每个url求取 ,然后根据所取得的值将url分别存储到1000个小文件(记为 )中。这样每个小文件的大约为300M。 s 遍历文件b,采取和a相同的方式将url分别 |
2012年05月15日 星期二 下午 6:56 原文参见 http://www.distream.org/?p=384
应用开发
主要知识点如下: Configuration类(支持overwrite,variable $) 测试(mock单元测试,本地测试,集群测试) Tool, ToolRunner 集群测试(package, 启动job, Job web UI for namenode and jobtracker) 运程调试器( |
2012年05月15日 星期二 下午 6:39 目前,海量数据处理主要存在二个问题:大规模计算(cpu+mem)、海量数据存储(disk),而Hadoop被专门设计用来针对海量数据的处理,它通过分布式文件系统解决海量数据的存储问题,组织成千上万个计算节点来共同完成一个任务解决了大规模计算问题。Hadoop的核心是MapReduce,而不是分布式文件系统HDFS,这是因为MapRduce所依赖的存储系统并不依赖于任何一个文件系统,甚至是分布式文件系统。MapReduce设计的核心思想map-reduce计算模型, |
2012年05月15日 星期二 下午 5:23 2012年05月14日 星期一 下午 8:28 通过JAVA直接读取HDFS中的时候,一定会用到FSDataInputStream类,通过FSDataInputStream以流的形式从HDFS读数据。 下面这个简单的代码就从HDFS中读取数据的例子。 public class FileReadFromHdfs { public static void main(String[] args) throws Exception { try { String dst = “hdfs://192.168.0.170:9000/test01/a01.dat”; Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(dst), conf); F |
| | |