大数据面试题

一 .简述如何安装配置apache 的一个开源的hadoop

  1.  使用root账户登陆   

  2.修改ip

  3.修改host主机名

  4.配置ssh 免密登陆

  5.关闭防火墙 

  6.安装JDK

 7.解压hadoop安装包

  8.配置hadoop的核心配置文件 hadoop-env.sh  core-site.xml  mapred-site.xml yarn-site.xml hdfs-site.xml

  9.配置hadoop 的环境变量

  10 .格式化hadoop namenode-format

  11. 启动节点start-all.sh

二 .列出hadoop 集群中的都分别需要启动哪些进程 它们分别是作用是什么?

  namenode  :负责管理HDFS中文件的元数据,响应客户端请求,管理datanode 上文件block的均衡,维持副本数量

secondname: 主要负责checkpoint 操作 也可以做冷备 对一定范围内数据做快照性备份

datanode : 存储数据块 负责客户对数据块的io请求

jobtracker :管路任务 ,并将任务分配给tasktracker

tasktracker: 执行jobtrancker 分配的任务

resource manager  nodemanager journalnode  zookeeper  zkfc

三 简述mapreduce的运行原理

先将文件进行分割后,进行map操作,后面进行shuffle操作,分为map端shuffle和reduce端shuffle,map输出结果放在缓冲区,当缓存区到达一定阈值时,将其中数据spill(也就是溢写)到磁盘,然后进行partition, sort, combine操作,这样多次spill后,磁盘上就会有多个文件,merge操作将这些文件合并成一个文件,reduce端shuffle从map节点拉取数据文件,如果在内存中放得下,就直接放在内存中,每个map对应一块数据,当内存占用量达到一定程度时,启动内存时merge,把内存中的数据输出到磁盘的一个文件上。如果在内存中放不下的话,就直接写到磁盘上。一个map数据对应一个文件,当文件数量达到一定阀值时,开始启动磁盘文件merge,把这些文件合并到一个文件中。最后,把内存中的文件和磁盘上的文件进行全局merge,形成一个最终端文件,做为reduce的输入文件。当然merge过程中会进行sort,combine操作。

四 hive中内部外部表的区别

  内部表:数据存储在Hive的数据仓库目录下,删除表时,除了删除元数据,还会删除实际表文件。

外部表:数据并不存储在Hive的数据仓库目录下,删除表时,只是删除元数据,并不删除实际表文件。


五  mapreduce中的combiner 和partition的区别

  Combiner就是在map端先进行一次reduce操作,减少map端到reduce端的数据传输量,节省网络带宽,提高执行效率。

Partition就是将map输出按key分区,送到不同的reduce上去并行执行,提高效率。



说说你对yarn  的理解 

hadoop 批量处理小文件  处理大文件 

hadoop 说说你们常用的压缩格式  为啥用它

  combiner 的应用的场景 原理 

每天都数据量 跑多久 几个节点  ---人家拿笔算 

MR的运行的原理 

yarn的高可用

hadoop 的优化 代码怎么优化的  配置参数怎么优化的 

简单的说一下 hbase  的搭建过程 

常见的linux 命令    http://www.itkeyword.com/doc/7445737322711133x228/linux (如何查看内存 和 cpu) 

如果 有一部分数据 想要存放到 HDSF上 , 但是 HDFS 上的磁盘不够了怎么办?

画图 说明kafka的存储机制 

简要说明  spark 的容错

spark 的submit的流程 

spark 的原理 

如何理解RDD 的弹性-->内存与磁盘的权衡

groupbyKey  和 reduceByKey  的区别  cache  和 checkpoint 的区别

  什么情况下用checkpoint 

你在项目中遇到了 哪些问题  怎么解决的  解决的方案 思路 

spark 的优化  http://lxw1234.com/archives/category/spark  手写 数据的格式 

spark  streaming  具体用到的APi  从kafka 获取数据有哪些方式  createStream  createDiscretStream spark streaming 每个批次的数据量的大小  原理  window的 大小 

spark的特性

spark 的DAG task stage 的划分依据 

kafka 默认的分区几个  你们的项目用到了多少个topic

  说说你对zookeeper 的理解  复习题上的就够了

Hbase的优化 参数配置的优化

用到组件的版本  java 面试题    抽象类 和 接口 的懂不懂多线程  多线程中如何传参list  和 map 的区别 hashMap  如何保证数据的唯一性  hash  和 equals    在hashmap 中get数据的时候  hash  一样  会怎么样  (判断equals )

面向对象的特征

重写 和 重载的区别   

手写代码      mr  用spark 写一个 分组排序  一个 表  name  cid  mark    用 spark 或者  sql  求出 每个班级每门课程的前三名

用spark  streaming  写一个wordcount  要完完全全的  包括mian  方法  scala 

老板面试   

你在上家公司学到了什么?  说上一家公司的好话  可以从 团队协作上  和 自己的能力(自学能力)    你的大数据是通过什么学到的?  书  具体什么书    博客 具体什么博客    说说你对大数据未来的趋势数据的来源谈谈大数据未来的发展的趋势现场出题

晚上 四个人过河 一把手电  A 10 分钟 B 8  分钟 c 2  分钟 d 1  分钟  最快几分钟? 

有一个 10 层的楼  每个电梯门口随机的放一个钻石  只能拿一个  上去就不能往下返回了 拿到钻石游戏就结束了  如何尽可能的拿到最大的钻石 ?  1-5  层看成旧的数据  ---》找到其最大的一个  不拿  6-10 层看成新的数据 ------ 拿1-5层最大的跟6-10层的比较 遇到更他差不多大的 或者 比他大的  就拿

  java  有一个学生表  map类型的    (id,name)还有一个成绩表 map类型的  (id+cid,score)用java 代码 实现  查找name为张三的  成绩

HashMapmap1=new HashMap();  //student  表

map1.put("1","hadoop");map1.put("2","hive");map1.put("3","hbase");map1.put("4","spark");

HashMapmap2= new  HashMap(); //  成绩表  < cid+id,score>map2.put("s1,1","89");map2.put("s2,2","100");map2.put("s3,3","58");HashMapmap3=new HashMap();

System.out.println("==================================");

Setkeys=map2.keySet();  // cid+id ,scorefor (String str:keys){            // id nameString [] stt=str.split(",");if (stt.length>2&&stt.length<=0){}String cid=stt[0];String id =stt[1];String score=map2.get(str);String name=map1.get(id);map3.put(str,score+":"+name );  //  cid+id ,score:name}Setkeyss =(Set)map3.keySet();

for (String srt:keyss){

String [] arr=map3.get(srt).split(":");

if(arr[1].equals("hive")){

System.out.println(arr[1]+"....."+arr[0]);

}

}

2.第二题

package com.qingmang.string;

public class StringFirst {

/**

* @param args

*/

public static void main(String[] args) {

/**

* 题目的要求

*  输入的阿拉伯数字  但是字符串的类型

*  将字符串的类型的数据转换成  int  类型的

*

*  比如  "123456789" 转换成 int类型的

*  example :

*

*    public int transform  (String  str){

*        defind

*      }

*/

// TODO Auto-generated method stub

System.out.println("输入字符串 返回int  类型的值");

/* INT  char

* 48    0

* 49    1

* 50    2

* 51    3

* 52    4

* 53    5

* 54    6

* 55    7

* 56    8

* 57    9

*/

String str  ="123456789789456123";

char  chars[] =str.toCharArray();

/*for (char a :  chars){

System.out.print(a.);

}*/

for  (int a=0; a < chars.length; a++){

char ch =chars [a];

System.out.print((int)ch +" ");

//  0  对应的是 48

int num=((int)ch)-48;

System.out.print(chars [a]+"str ");

System.out.println(num +"ints ");

}

//System.out.println((char)(48));

}

}


   


你可能感兴趣的:(大数据面试题)