1 使用Hive或者自定义MR实现如下逻辑
product_no lac_id moment start_time user_id county_id staytime city_id 13429100031 22554 8 2013-03-11 08:55:19.151754088 571 571 282 571 13429100082 22540 8 2013-03-11 08:58:20.152622488 571 571 270 571 13429100082 22691 8 2013-03-11 08:56:37.149593624 571 571 103 571 13429100087 22705 8 2013-03-11 08:56:51.139539816 571 571 220 571 13429100087 22540 8 2013-03-11 08:55:45.150276800 571 571 66 571 13429100082 22540 8 2013-03-11 08:55:38.140225200 571 571 133 571 13429100140 26642 9 2013-03-11 09:02:19.151754088 571 571 18 571 13429100082 22691 8 2013-03-11 08:57:32.151754088 571 571 287 571 13429100189 22558 8 2013-03-11 08:56:24.139539816 571 571 48 571 13429100349 22503 8 2013-03-11 08:54:30.152622440 571 571 211 571 字段解释:
product_no:用户手机号; lac_id:用户所在基站;
start_time:用户在此基站的开始时间; staytime:用户在此基站的逗留时间。 需求描述:
根据lac_id和start_time知道用户当时的位置,根据staytime知道用户各个基站的逗留时长。根据轨迹合并连续基站的staytime。
最终得到每一个用户按时间排序在每一个基站驻留时长 期望输出举例:
13429100082 22540 8 2013-03-11 08:58:20.152622488 571 571 270 571 13429100082 22691 8 2013-03-11 08:56:37.149593624 571 571 390 571 13429100082 22540 8 2013-03-11 08:55:38.140225200 571 571 133 571 13429100087 22705 8 2013-03-11 08:56:51.139539816 571 571 220 571 13429100087 22540 8 2013-03-11 08:55:45.150276800 571 571 66 571
2 Linux脚本能力考察
2.1 请随意使用各种类型的脚本语言实现:批量将指定目录下的所有文件中的$HADOOP_HOME$替换成/home/ocetl/app/hadoop
2.2 假设有10台主机,H1到H10,在开启SSH互信的情况下,编写一个或多个脚本实现在所有的远程主机上执行脚本的功能 例如:runRemoteCmd.sh \期望结果: H1: XXXXXXXX XXXXXXXX XXXXXXXX H2: XXXXXXXX XXXXXXXX XXXXXXXX H3: ...
3 Hadoop基础知识与问题分析的能力
3.1 描述一下hadoop中,有哪些地方使用了缓存机制,作用分别是什么
3.2 请描述https://issues.apache.org/jira/browse/HDFS-2379说的是什么问题,最终解决的思路是什么?
4 MapReduce开发能力
请参照wordcount实现一个自己的map reduce,需求为: a 输入文件格式:
xxx,xxx,xxx,xxx,xxx,xxx,xxx b 输出文件格式: xxx,20 xxx,30 xxx.40
c 功能:根据命令行参数统计输入文件中指定关键字出现的次数,并展示出来
例如:hadoop jar xxxxx.jar keywordcount xxx,xxx,xxx,xxx(四个关键字)
5 MapReduce优化
请根据第五题中的程序, 提出如何优化MR程序运行速度的思路
6 Linux操作系统知识考察
请列举曾经修改过的/etc下的配置文件,并说明修改要解决的问题?
7 Java开发能力
7.1 写代码实现1G大小的文本文件,行分隔符为\\x01\\x02,统计一下该文件中的总行数,要求注意边界情况的处理
7.2 请描述一下在开发中如何对上面的程序进行性能分析,对性能进行优化的过程
答案如下:
1. 考虑后,决定使用 MR 来实现,于是使用Java,用一个MR Job完成这个事情:
1. package org.aboutyun;
2.
3. import org.apache.commons.lang.StringUtils;
4. import org.apache.hadoop.conf.Configuration;
5. import org.apache.hadoop.fs.Path;
6. import org.apache.hadoop.io.LongWritable;
7. import org.apache.hadoop.io.Text;
8. import org.apache.hadoop.mapreduce.Job;
9. import org.apache.hadoop.mapreduce.Mapper;
10. import org.apache.hadoop.mapreduce.Reducer;
11. import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
12. import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
13. import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
14. import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
15.
16. import java.io.IOException;
17. import java.text.ParseException;
18. import java.text.SimpleDateFormat;
19. import java.util.ArrayList;
20. import java.util.Collections;
21. import java.util.Comparator;
22.
23. public class TimeCount {
24. public static void main(String[] args) throws Exception {
25. Configuration conf = new Configuration();
26.
27. Job job = new Job(conf, \
28.
29. job.setOutputKeyClass(Text.class);
30. job.setOutputValueClass(Text.class);
31.
32. job.setMapperClass(Map.class);
33. job.setReducerClass(Reduce.class);
34.
35. job.setInputFormatClass(TextInputFormat.class);
36. job.setOutputFormatClass(TextOutputFormat.class);
37.
38. FileInputFormat.addInputPath(job, new Path(args[0]));
39. FileOutputFormat.setOutputPath(job, new Path(args[1]));
40.