一 .简述如何安装配置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));
}
}