摘要: HDFS适合做:存储大文件。上G、T甚至P。一次写入,多次读取。并且每次作业都要读取大部分的数据。搭建在普通商业机群上就可以了。虽然会经常宕机,但HDFS有良好的容错机制。HDFS不适合做:实时数据获取。如果有这个需求可以用HBase。很多小文件。因为namenode要存储HDFS的metadata(比如目录的树状结构,每个文件的文件名、ACL、长度、owner、文件内容存放的位置等等信息),所以HDFS上文件的数目受到namenode内存的限制。并发环境下的写入和修改。Block一个磁盘的block通常是512B,内核一次读写磁盘不能少于这个数目。在HDFS上一个Block的默认大小是64M 阅读全文
posted @ 2012-08-24 10:13 高性能golang 阅读(7869) 评论(0) 推荐(0) 编辑
摘要: 在Hadoop集群中,数据在网络上传输,保证数据完整性的通常做法使用checksum,比如常用的CRC-32 (cyclic redundancy check)。Hadoop上支持的文件压缩格式有:gzip ZIP bzip2 LZO。例如在UNIX上可以使用命令:gzip -1 file,会生成file.gz,但是原来的file就没有了。压缩算法都要在执行速度和压缩比上做一个权衡,-1表示只注意速度,-9表示只注重压缩比。CompressionOutputStream和CompressionInputStream很类似于java.util.zip.DeflaterOutputStream 和 阅读全文
posted @ 2012-08-24 10:13 高性能golang 阅读(4697) 评论(0) 推荐(3) 编辑
摘要: 配置Configuration一条configuration的名称可以是任意字符串,值可以是任意数据类型。conf.set("name", "orisun");conf.setInt("age",24);在代码中设置只对本次代码运行有效,而在配置文件中设置则长久有效。configuration-1.xml<?xml version="1.0"?><configuration><property><name>color</name><value> 阅读全文
posted @ 2012-08-24 10:13 高性能golang 阅读(3767) 评论(0) 推荐(0) 编辑
摘要: 一、客户端向JobTracker提交作业这个阶段要完成以下工作:向JobTracker申请 一下新的JobID检查是否指定了output dir,并且确认output dir不存在根据InputPath计算input split。这里的input split并不是MapReduce输入数据的完整拷贝,只是记录了每个split在什么地方存放着。split和block一样都是逻辑概念,一个split可能跨越不同的磁盘。把运行作业所需的resource复制到jobtracker的文件系统上去,保存在一个包含jobID的目录下。这些resource包括:jar文件、配置文件、计算好的input spl 阅读全文
posted @ 2012-08-24 10:13 高性能golang 阅读(8117) 评论(0) 推荐(1) 编辑
摘要: CountersBuilt-in Counters这些counters你在Web UI中,或是job结束后在控制台生成的统计报告中都看得到,根据名字你也能猜到这些counter是什么意思。分为3个Group:Map-Reduce FramewordMap input records,Map skip... 阅读全文
posted @ 2012-08-24 10:12 高性能golang 阅读(2194) 评论(0) 推荐(0) 编辑
摘要: InputFormatInputFormat类用来产生InputSplit,并把它切分成record。public interface InputFormat { InputSplit[] getSplits(JobConf job, int numSplits) throws IOE... 阅读全文
posted @ 2012-08-24 10:12 高性能golang 阅读(8911) 评论(1) 推荐(2) 编辑