下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【某公司笔试面试题】使用 mr , spark ,spark sql 编写 word count 程序【 Spark 版本】val conf=new SparkConf().setAppName("wd").setMaster("local1")val sc=new SparkContext(conf,2)/加载val lines=sc.textFile("tructField("name",DataTypes.StringType,true)")val paris=lines.flatMap(line=>l
2、ine.split("A")val words=paris.map(_,1)val result=words.reduceByKey(_+_).sortBy(x=>x._1,false)/打印result.foreach( wds=>println(" 单词: "+wds._1+" 个数: "+wds._2) sc.stop() 【 spark sql 版本】val conf=new SparkConf().setAppName("sqlWd").setMaster("local1"
3、)val sc=new SparkContext(conf)val sqlContext=new SQLContext(sc)/加载val lines=sqlContext.textFile("E:idea15createRecommederdatawords.txt") val words=lines.flatMap(x=>x.split(" ").map(y=>Row(y) val structType=StructType(Array(StructField("name",DataTypes.StringType,t
4、rue)val df=sqlContext.createDataFrame(rows,structType)df.registerTempTable("t_word_count")sqlContext.udf.register("num_word",(name:String)=>1)sqlContext.sql("select name,num_word(name) fromt_word_count").groupBy(df.col("name").count().show() sc.stop()2hive
5、的使用,内外部表的区别,分区作用,UDF 和 Hive 优化(1)hive 使用:仓库、工具(2)hive 内外部表:内部表数据永久删除,外部表数据删除后、其他人依然可以访问(3) 分区作用:防止数据倾斜(4)UDF 函数:用户自定义的函数(主要解决格式,计算问题),需要继承UDF 类java 代码实现class TestUDFHive extends UDF public String evalute(String str)tryreturn "hello"+strcatch(Exception e)return str+"error"(5)Hive
6、优化:看做mapreduce 处理排序优化:sort by 效率高于order by分区:使用静态分区(statu_date="20160516",location="beijin") ,每个分区对应hdfs 上的一个目录减少 job 和 task 数量:使用表链接操作解决 groupby 数据倾斜问题:设置hive.groupby.skewindata=true ,那么 hive 会自动负载均衡小文件合并成大文件:表连接操作使用 UDF 或 UDAF 函数: 3Hbase 的 rk 设计, Hbase 优化arowkey:hbase 三维存储中的关键(
7、rowkey :行键,columnKey(family+quilaty) :列键 ,timestamp :时间戳)rowkey 字典排序、越短越好使用 id+时间:使用 hash 散列: dsakjkdfuwdsf+9527+20160518应用中,rowkey 一般 10100bytes,8 字节的整数倍,有利于提高操作系统性能bHbase 优化分区: RegionSplit() 方法 NUMREGIONS=9column 不超过 3 个硬盘配置,便于regionServer 管理和数据备份及恢复分配合适的内存给regionserver其他:hbase 查询(1)get(2)scan使用 s
8、tartRow 和 endRow 限制4Linux 常用操作aawk :awk -F:BEGINprint "name ip "print $1 $7 ENDprint " 结束 " /etc/passwd last | head -5 |awk BEGINprint "name ip"print $1 $3ENDprint " 结束了 "bsed5java 线程 2 种方式实现、设计模式、链表操作、排序(1)2 种线程实现aThread 类继承TestCL th=new TestCL()/ 类继承 Threadt
9、h.start()实现 Runnable 接口Thread th=new Thread(new Runnable() public void run() /实现)th.start()(2) 设计模式,分为4 类创建模式:如工厂模式、单例模式结构模式:代理模式行为模式:观察者模式线程池模式7cdh 集群监控(1)数据库监控(2)主机监控(3)服务监控(4)活动监控计算机网络工作原理 将分散的机器通过数据通信原理连接起来,实现共享!9hadoop 生态系统hdfsmapreducehivehbasezookeeperflumehdfs 原理及各个模块的功能mapreduce 原理 mapreduc
10、e 优化数据倾斜11 系统维护:hadoop 升级 datanode 节点14jvm 运行机制及内存原理运行:I 加载 .class 文件II 管理并且分配内存III 垃圾回收内存原理:IJVM 装载环境和配置II 装载JVM.dll 并初始化JVM.dllIV 处理 class 类15hdfs 、 yarn 参数调优mapreduce.job.jvm.num.tasks默认为 1 ,设置为-1 ,重用 jvm16Hbase 、 Hive 、 impala 、 zookeeper 、 Storm 、 spark 原理和使用方法、使用其架构图 讲解1 、如何为一个hadoop 任务设置mappe
11、rs 的数量答案:使用 job.setNumMapTask(int n) 手动分割,这是不靠谱的官方文档:“ Note: This is only a hint to the framework 说明这个方法只是提示作用,不起决 ”定性作用实际上要用公式计算:Max( min.split , min ( max.split , block )就设置分片的最大最下值computeSplitSize()设置参考: 2、有可能使hadoop 任务输出到多个目录中么?如果可以,怎么做?答案:在1.X 版本后使用MultipleOutputs.java 类实现源码:MultipleOutputs.add
12、NamedOutput(conf, "text2", TextOutputFormat.class, Long.class,String.class);MultipleOutputs.addNamedOutput(conf, "text3", TextOutputFormat.class, Long.class,String.class);参考:发音:Multiple'm?lt?pl- 许多的3、如何为一个hadoop 任务设置要创建的reducer 的数量答案:job.setNumReduceTask(int n)或者调整hdfs-site.x
13、ml 中的 mapred.tasktracker.reduce.tasks.maximum 默认参数值4、在hadoop 中定义的主要公用InputFormats 中,哪一个是默认值:(A)TextInputFormat(B)KeyValueInputFormat(C)SequenceFileInputFormat答案: A5、两个类TextInputFormat 和 KeyValueTextInputFormat 的区别?答案:?FileInputFormat 的子类:TextInputFormat (默认类型,键是LongWritable 类型,值为Text 类型, key 为当前行在文件
14、中的偏移量,value 为当前行本身);?KeyValueTextInputFormat( 适合文件自带key, value 的情况,只要指定分隔符即可,比较实用,默认是t 分割 );源码:String sepStr=job.get("mapreduce.input.keyvaluelinerecordreader.key.value.separator","t");注意:在自定义输入格式时,继承FileInputFormat 父类参考:6、在一个运行的hadoop 任务中,什么是InputSpilt?答案:InputSplit 是 MapReduce
15、对文件进行处理和运算的输入单位,只是一个逻辑概念,每个 InputSplit 并没有对文件实际的切割,只是记录了要处理的数据的位置(包括文件的path和 hosts )和长度(由start 和 length 决定),默认情况下与block 一样大。拓展:需要在定义InputSplit 后,展开讲解mapreduce 的原理7、 Hadoop 框架中,文件拆分是怎么被调用的?答案: JobTracker ,创建一个InputFormat 的实例,调用它的getSplits() 方法,把输入目录的文件拆分成FileSplist 作为 Mapper task 的输入,生成Mapper task 加入
16、 Queue 。源码中体现了拆分的数量long goalSize = totalSize / (numSplits = 0 ? 1 : numSplits);long minSize = Math.max(job.getLong(org.apache.hadoop.mapreduce.lib.input.FileInputFormat.SPLIT_MINSIZE, 1), minSplitSize);/minSplitSize 默认是 18、分别举例什么情况下使用combiner, 什么情况下不会使用?答案: Combiner 适用于对记录汇总的场景(如求和),但是,求平均数的场景就不能使用C
17、ombiner 了9、 Hadoop 中 job 和 Tasks 之间的区别是什么?答案:job 是工作的入口,负责控制、追踪、管理任务,也是一个进程包含 map task 和 reduce taskTasks 是 map 和 reduce 里面的步骤,主要用于完成任务,也是线程10、 、 Hadoop 中通过拆分任务到多个节点运行来实现并行计算,但是某些节点运行较慢会拖慢整个任务的运行,hadoop 采用何种机制应对这种情况?答案:结果查看监控日志,得知产生这种现象的原因是数据倾斜问题解决:(1) 调整拆分mapper的数量(partition数量)(2)增加 jvm(3) 适当地将redu
18、ce的数量变大11 、流 API 中的什么特性带来可以使map reduce 任务可以以不同语言 (如perlrubyawk等)实现的灵活性?答案: 用可执行文件作为Mapper 和 Reducer , 接受的都是标准输入,输出的都是标准输出参考: 12 、参考下面的M/R 系统的场景:- -HDFS 块大小为64MB- -输入类型为FileInputFormat- -有 3 个文件的大小分别是:64k 65MB 127MBHadoop 框架会把这些文件拆分为多少块?答案:64k> 一个 block65MB> 两个文件:64MB 是一个 block , 1MB 是一个 block1
19、27MB-> 两个文件:64MB 是一个 block,63MB 是一个 block13 、 Hadoop 中的 RecordReader 的作用是什么?答案:属于split 和 mapper 之间的一个过程将 inputsplit 输出的行为一个转换记录,成为key-value 的记录形式提供给mapper14 、 Map 阶段结束后,Hadoop 框架会处理:Partitioning ,shuffle 和sort, 在这个阶段都会发生了什么?答案:MR 一共有四个阶段,split map shuff reduce 在执行完map 之后, 可以对 map 的输出结果进行分区,分区:这块分
20、片确定到哪个reduce 去计算(汇总)排序:在每个分区中进行排序,默认是按照字典顺序。Group :在排序之后进行分组15 、如果没有定义partitioner, 那么数据在被送达reducer 前是如何被分区的?答案:Partitioner 是在 map 函数执行context.write() 时被调用。用户可以通过实现自定义的?Partitioner 来控制哪个key 被分配给哪个?Reducer 。查看源码知道:如果没有定义partitioner ,那么会走默认的分区Hashpartitionerpublic class HashPartitioner<K, V> extends Partitioner<K, V> /* Use link Object#hashCode() to partition. */public int getPartition(K key, V value, int numReduceTasks) return (key.hashCode() & Integer.MAX_VALUE) % numReduceTasks;参考: 16 、什么是Combiner?答案:这是一个hadoop 优化性能的步骤,它发生在map 与 reduce 之间目的:解决了数据倾斜的问题,减轻网络压力,实际上时减少了maper 的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年医疗培训在线十年质量报告
- 2025年电子商务合同协议
- 培训课件:山野餐饮行业市场前景及投资研究报告
- 成都市双流区九江新城小学2026年储备教师招聘备考题库及1套参考答案详解
- 云南省卫生健康委所属事业单位开展2026年校园招聘309名备考题库含答案详解
- 2025年社区团购五年竞争格局:团长服务能力与供应链布局报告
- 大理农林职业技术学院2026年公开招聘非编工作人员备考题库及一套完整答案详解
- 湄潭县消防救援大队2025年政府专职消防员招聘备考题库带答案详解
- 2026年将乐县公开招聘紧缺急需专业新任教师备考题库及参考答案详解
- 2025年秋湘艺版八年级上册音乐期末测试卷(三套含答案)
- 甲醇中毒护理查房
- 执法用手机管理办法
- 大学军事理论考试题及答案
- 2025年中国泵行业市场白皮书
- 2025社交礼仪资料:15《现代社交礼仪》教案
- 食管癌的护理查房知识课件
- 高三日语二轮复习阅读专题课件
- 智圆行方的世界-中国传统文化概论知到课后答案智慧树章节测试答案2025年春暨南大学
- 粉色小清新小红帽英语情景剧
- 师德师风自查自纠工作自查报告
- 国家开放大学《Web开发基础》形考任务实验1-5参考答案
评论
0/150
提交评论