一段混沌时期过去了,有些无奈,有些疯狂,有些欢喜,有些迷失,总之,它是过去了。
之前的一段时间给新来的博士老师查资料,关于列车联网的,什么CTCS3,ETCS,CTC,TDCS,TDMS,TDCS,RSM-R等一系列新名词,还好也算努力的去做然后交工了,如果有这方面需要的,可以提供一些资料(只保证近期不会删除)。
最近在看了老师给的一些资料,主要是hadoop权威指南,对这个平台,包括HDFS和MapReduce有了一些浅显的理解,我知道开始都是比较困难的,慢慢的坚持吧。俗话说好记忆不如烂笔头,看的同时也记录了一些比较重要又不是很容易理解的知识点,防止过后就忘(虽然这样保质期也不长,o(︶︿︶)o 唉)。
说好的hadoop平台被一拖再拖,实在是有点心有愧疚,前天在实验室3台电脑组成的集群上编写了第一个可以被认为是mapreduce程序的小应用,在网上下载了一个云层天气数据集,120个文件作为输入,通过程序查看单个站点十几年的天气变化情况,几分钟处理了几亿条数据还是令我这小菜鸟蛮吃惊的,程序虽然比较简单,类似与wordcount,不过麻雀虽小,五脏还是不少的,至少练习了MapReduce程序的开发过程,这个应该算是比较基础的了,继续熟悉才能深入吧。
附上这个简单实现:
import java.io.IOException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import org.apache.hadoop.mapreduce.Job; import org.apache.hadoop.mapreduce.Mapper; import org.apache.hadoop.mapreduce.Reducer; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.util.GenericOptionsParser; /** * 记录同一观测站的天气状况出现的次数 * key=年月+天气状况 value=次数 * Ppt precipitation ww= 50-75,77,79,80-99 . D drizzle 50-59 . R rain 60-69 . S snow 70-75,77,79 . Ts thunderstorm,shower 80-99 . * @author ubuntu * 2012.8.11 */ public class WeatherCount { public static class WeatherCountMapper extends Mapper<LongWritable, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException { String line = value.toString();//读取一行 String time = line.substring(0,4);//年月 int station = Integer.parseInt(line.substring(19,24).trim());//站台 if(station==71906){ String ww = line.substring(25,27);//天气指标 int weatherIndex = 0;//天气指数 String weather = null; if(!ww.equals("-1")){//-1代表数据丢失 weatherIndex = Integer.parseInt(ww.trim()); if(weatherIndex>=50&&weatherIndex<=59) weather = "drizzle"; else if(weatherIndex>=60&&weatherIndex<=69) weather = "rain"; else if((weatherIndex>=70&&weatherIndex<=75)||weatherIndex==77||weatherIndex==79) weather = "snow"; else if(weatherIndex>=80&&weatherIndex<=99) weather = "thunderstorm"; if(weather!=null){ context.write(new Text(time+weather), one); } } } } } public static class WeatherCountReducer extends Reducer<Text, IntWritable, Text, IntWritable>{ protected void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException { int sum = 0; for(IntWritable value : values){ sum += value.get(); } context.write(key, new IntWritable(sum)); } } public static void main(String[] args) throws Exception{ Configuration conf = new Configuration(); String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs(); if(otherArgs.length!=2){ System.err.println("Usage:WeatherCount <input path> <output path>"); System.exit(-1); } Job job = new Job(conf,"weather count"); job.setJarByClass(WeatherCount.class); FileInputFormat.addInputPath(job, new Path(otherArgs[0])); FileOutputFormat.setOutputPath(job, new Path(otherArgs[1])); job.setMapperClass(WeatherCountMapper.class); job.setCombinerClass(WeatherCountReducer.class); job.setReducerClass(WeatherCountReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); System.exit(job.waitForCompletion(true)?0:1); } }
今天把系科系统(CxServer)给搭上了,虽然是好久之前老师让改的,但是还是觉得这个系统比较难懂,用wt库加C++编写的网站,实在让我头大,加上不是很熟悉的Linux服务器……不过,由于第一次部署这个系统时比较用心,克服了许多困难,上论坛,搜网页,解决了很多问题,(包括程序自己的!),这次搭的时候还算比较顺利,下午放到了学校的服务器上,加了url转发,外网算是可以登录了,对于这个创新基金管理系统,如果遇到了搭建问题,也可以一起讨论。
至于感情,我想,我是觉得好寂寞了……前两天打球时遇到了她,话说人家现在过的很好,我真是屌丝,就不能也信守承诺,过自己的生活么!?有句话说的好,想要忘记就要“不要见,不要贱”。
人生总是要遇到无可知的路途,暂时的迷失不要紧,大方向不能丢,时常让自己快乐,疯狂,忘我,青春就是用来还债的。
决定去健身了,hold不住了。如果你是宅,请记得有个好身体。