大数据之数仓二面凉经

面前

满怀希望的我,兴高采烈的,然后干啥都开心。买了一张通往杭州的火车票,自以为是往梦想的车票。为了赶火车,我早早的6点就起来了,天空还是一片阴暗,超市也没开门,卖早点的阿姨也没起来。我就这样饿着肚子坐了一个多小时的公交,一路颠簸终于到了火车站。我提前到了车站,买的是10.27的票,去改签了一下(8:52)。在超市买了一个桂花糕,吃吃等等。上车之后看着路边的风景,我仿佛掉进了一幅画里。满怀期待,向往大都市的念头不由自主的就出来了。脑海中出现了一个人一座城,人是奋斗的人,城市繁忙的城。突然,火车倾斜了,这是一条不平坦的道路。一会又恢复正常了,过会又倾斜了,心惊胆跳的,原来是铁轨是倾斜的,可能是因为转弯的缘故。车上有很多背包的大哥,我看着他们的脸,感觉都是程序员,是我学习的榜样,我更有动力了。为了面试更加的稳,我拿出我的笔记,又看了一会。。。。

到了杭州一切和想象中的一样,川流不息,高楼大厦和一个渺小的我。有一种仰观宇宙之大,俯察品类之盛的感觉。我是一只小蚂蚁。

找了一会,找到了要面试的公司,人力的小姐姐很热情的接待了我,还给我倒了一杯热水。带我见了一下大哥,大哥的头顶有点稀疏,哈哈哈。安排了饭后提前面试。和小姐姐聊了一会天,小姐姐还给了我一张饭票。心满意足的吃完饭,开始面试。

1.自我介绍

2.介绍自己的项目

3.hadoop集群搭建

1.安装jdk
2.修改主机
3.安装ssh,并配置免密登入
4.修改hosts文件
5.做时间同步
6.上传hadoop包,解压
7.配置core-site.xml,hdfs-stite.xml,yarn-site.xml,mapred-site.xml,hadoop-env.sh,slaves(workers)
8.格式化

4.MR的原理

1.一个mr程序启动的时候,最先启动的是MRAppMaster,MRAppMaster启动后根据本次job的描述信息,计算出需要的maptask实例数量,然后向集群申请机器启动相应数量的maptask进程

2.maptask进程启动之后,根据给定的数据切片范围进行数据处理,主体流程为:

2.1 利用客户指定的inputformat来获取RecordReader读取数据,形成输入KV对

2.2 将输入KV对传递给客户定义的map()方法,做逻辑运算,并将map()方法输出的KV对收集到缓存

2.3 将缓存中的KV对按照K分区排序后不断溢写到磁盘文件

3.MRAppMaster监控到所有maptask进程任务完成之后,会根据客户指定的参数启动相应数量的reducetask进程,并告知reducetask进程要处理的数据范围(数据分区)

4.Reducetask进程启动之后,根据MRAppMaster告知的待处理数据所在位置,从若干台maptask运行所在机器上获取到若干个maptask输出结果文件,并在本地进行重新归并排序,然后按照相同key的KV为一个组,调用客户定义的reduce()方法进行逻辑运算,并收集运算输出的结果KV,然后调用客户指定的outputformat将结果数据输出到外部存储

5.讲一下join的过程

MapJoin简单说就是在Map阶段将小表数据从 HDFS 上读取到内存中的哈希表中,读完后将内存中的哈希表序列化为哈希表文件,在下一阶段,当 MapReduce 任务启动时,会将这个哈希表文件上传到 Hadoop 分布式缓存中,该缓存会将这些文件发送到每个 Mapper 的本地磁盘上。因此,所有 Mapper 都可以将此持久化的哈希表文件加载回内存,并像之前一样进行 Join。顺序扫描大表完成Join。减少昂贵的shuffle操作及reduce操作

MapJoin分为两个阶段:

1.通过MapReduce Local Task,将小表读入内存,生成HashTableFiles上传至Distributed Cache中,这里会HashTableFiles进行压缩。

2.MapReduce Job在Map阶段,每个Mapper从Distributed Cache读取HashTableFiles到内存中,顺序扫描大表,在Map阶段直接进行Join,将数据传递给下一个MapReduce任务
Common Join

6.hadoop分布式的优点以及实现

方便----->不需昂贵和高可靠的硬件资源,商用硬件即可
弹性------>集群节点很容易扩展或卸载
健壮----->故障检测和自动恢复
简单----->用户可以快速编写出高效的并行分布代码

7.假如我是你学弟介绍一下分布式

8.分布式数据库和普通数据库的区别或者说是优缺点

9.讲下星型模型是什么

10.为什么要用数仓而不是普通数据库,hive和传统数据库之间的区别

1、写时模式和读时模式

传统数据库是写时模式,在load过程中,提升了査询性能,因为预先解析之后可以对列建立索引,并压缩,但这样也会花费更多的加载时间。

Hive是读时模式,1 oad data非常迅速,因为它不需要读取数据进行解析,仅仅进行文件的复制或者移动。

2、数据格式。Hive中没有定义专门的数据格式,由用户指定,需要指定三个属性:列分隔符,行分隔符,以及读取文件数据的方法。数据库中,存储引擎定义了自己的数据格式。所有数据都会按照一定的组织存储

3、数据更新。Hive的内容是读多写少的,因此,不支持对数据的改写和删除,数据都在加载的时候中确定好的。数据库中的数据通常是需要经常进行修改

4、执行延迟。Hive在查询数据的时候,需要扫描整个表(或分区),因此延迟较高,只有在处理大数据是才有优势。数据库在处理小数据是执行延迟较低。

5、索引。Hive比较弱,不适合实时查询。数据库有。

6、执行。Hive是 Mapreduce,数据库是 Executor

7、可扩展性。Hive高,数据库低

8、数据规模。Hive大,数据库小

11.校园经历

12.职业规划

13.反问环节

14.hr回来和你聊非技术

然后你就可以回家了

猜你喜欢

转载自blog.csdn.net/qq_42706464/article/details/109128393