摘要:
CentOS提供了一个启动服务的功能:service [service name] (start|stop|restart|...),此功能的执行脚本为/sbin/service。今天看了下此脚本,发现了个bug,可由以下命令复现:service cmd1 cmd2 --full-restart,其执行结果要么是cmd2被重启要么是"cmd2: unrecognized service",总之cmd1被忽略了。其实service cmd1 cmd2 ...cmdn --full-restart都能复现此bug。感兴趣的可以看下此脚本源码或者sh -x service cmd 阅读全文
摘要:
虽然一般情况下我们无需设置输入文件的解码器类,hadoop会自行选择,但需遵守如下守则(或说是给mapreduce提示):“如果我们压缩的文件有相应压缩格式的扩展名(比如lzo,gz,bzip2等),hadoop就会根据扩展名去选择解码器解压。”不然的话,哼哼,等着着急上火郁闷吧。 阅读全文
摘要:
有个工具类逐行读文本文件,读取数据然后放入内存中。代码如下:FSDataInputStream in = null;BufferedReader br = null; FileSystem fs = FileSystem.get(new URI(somePath), new Configuratio... 阅读全文
摘要:
最近需要为一些数据增加随机读的功能,于是采用生成HFile再bulk load进HBase的方式。运行的时候map很快完成,reduce在sort阶段花费时间很长,reducer用的是KeyValueSortReducer而且只有一个,这就形成了单reducer全排序的瓶颈。于是就想着采用TotalOrderPartitioner使得MR Job可以有多个reducer,来提高并行度解决这个瓶颈。于是动手写代码,不仅用了TotalOrderPartitioner,还使用InputSampler.RandomSampler生成分区文件。但执行时碰到问题,查资料时无意发现HFileOutputFo 阅读全文
摘要:
有多条hive语句从同一张表中做count操作,语句如下: select pf,way,method,count(distinct id) where push_date_type ='$push_date_type' group by pf,way,method; select pf,way,-1,count(distinct id) where push_date_type ='$push_date_type' group by pf,way;...... 想着用multi group by特性优化下效率,于是把上述语句改写成:from push_revis 阅读全文
摘要:
关于此一篇不错的文章:使用MRUnit实现MapReduce程序的单元测试需要补充的是:1. 还需要一个jar包hadoop-mapred-0.22.0.jar,否则会收到关于MapContextImpl或ReduceContextImpl的NoClassDefFoundError。2. 如果遇到异常:java.lang.IncompatibleClassChangeError,把刚添加的jar包搞成和原来hadoop相关的jar包版本一致或很相近。 阅读全文
摘要:
具体的出错信息是:Failed with exception java.io.IOException:org.apache.hadoop.hive.serde2.SerDeException: class org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe: expects either BytesWritable or Text object!出错原因:数据文件的field使用了LazySimpleSerDe不能解析的类型。报出此异常的代码为:public Object deserialize(Writable field) throws S 阅读全文
摘要:
异常信息:java.net.UnknownHostException: unknown host: xxx-host at org.apache.hadoop.ipc.Client$Connection.<init>(Client.java:244) at org.apache.hadoop.ipc.Client.getConnection(Client.java:1234) at org.apache.hadoop.ipc.Client.call(Client.java:1075) at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.j 阅读全文
摘要:
这本书里翻译方面问题较多,对于错别字等简单问题就不说了,这里仅列些我发现的比较严重的问题:1. 391页:“一般来说,面向行的存储格式对于那些只访问表中一小部分行的查询比较有效。相反,面向行的存储格式适合同时处理一行中很多列的情况。”读到这句话感觉很不对劲,首先“相反” 前后都是关于“面向行的存储”适合的地方,这哪有相反的地方;其次,有点面向行或者列存储知识的人都知道他们的优缺点。于是对照《Hadoop The Definitive Guide 2nd Edition》中对应的地方,果不其然:这么低级的错误,column在什么情况中的意思是“行”呢,用本山的话就是“在答错的情况下”!2. 19 阅读全文
摘要:
以下是本楼主用血和泪换来的教训,往事不堪回首啊!lzo关于hadoop的codec有两个 com.hadoop.compression.lzo.LzoCodec 和com.hadoop.compression.lzo.LzopCodec,两个类虽只有一字之差,其实区别挺大。1. LzopCodec与lzop工具兼容,LzopCodec本质是LZO格式的但包含额外的文件头。 lzoCodec只是一种压缩算法,不会生成额外的文件头。 ps:http://www.quora.com/Whats-the-difference-between-the-LzoCodec-and-the-LzopCodec 阅读全文