Skip to content

Commit 1320ff0

Browse files
committed
大数据工程师
1 parent 3a7799a commit 1320ff0

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

大数据工程师.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11

22
**1. 什么是数据仓库?**
3+
34
数据仓库(Data Warehouse)是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,数据库主要用于**事务处理**,数据仓库主要用于**数据分析**;
45

56
数据库的特点:
@@ -11,6 +12,7 @@
1112
2. 一般是只读优化
1213

1314
**2. 什么是知识图谱,简单介绍一下苏格拉底?**
15+
1416
知识图谱:
1517
1. 知识图谱是一种语义网络,是对语义知识的一种形式化描述,节点代表实体,边代表实体之间的关系;
1618
2. 知识图谱以一种可视化的方式展示「知识」;
@@ -22,10 +24,12 @@
2224
3. 苏格拉底后台使用 MongoDB 和 Mysql 数据库主要为了实现 **schema 的快速迭代****数据的快速迭代,配合算法做实体对齐**
2325

2426
**3. 你是如何使用 Spark 管理日志的?**
27+
2528
1. 每次对实例的更改,都会把变更记录到 mongo 数据库,形成一个变更记录的collection;
2629
2. 分析数据时,将 mongo 数据库中 collection 的数据使用 Spark 倒入到 Hive 表中,然后再进行分析
2730

2831
**4. 你们公司的业务场景是什么?(针对公司的业务场景,调研市场上主流的图数据库)**
32+
2933
1. 支持倒入 SPO 三元组的数据(包含 schema-free 和 schema-constrained 两类数据库)
3034
2. 对于 schema-free 的数据库,需要对数据库中的数据进行统计、分析、整理出可用的强 schema
3135
3. 图数据库需要支持实体 对齐/融合
@@ -63,11 +67,13 @@
6367
* 这里如果问到,着重讲解一个就可以了。
6468

6569
**6. 深入调研 JanusGraph,ThinkerPop,都得到了哪些成果?(这里面试官可能问到哪些问题?)**
70+
6671
1. Gremlin 语法文档总结;
6772
2. 不同数据库对 Gremlin 支持程度的测试;
6873
3. HugeGraph 不能动态支持修改 schema,有些直接报错,因此放弃了 Hu个Graph;
6974

7075
**7. 为什么要有 Spark,他相比 Hadoop 解决了什么问题?**
76+
7177
1. Spark 替代的 Hadoop 生态中的 MapReduce;
7278
2. MapReduce 在计算时,每次 Reduce 之后都会写入磁盘文件。如果一个任务有多个 Map/Reduce 计算,就会多次读写磁盘文件,大大降低运算速度;
7379
3. Spark 基于内存,计算的中间结果都优先放在内存中(内存不够再考虑磁盘),因此速度比 MapReduce 快;
@@ -76,29 +82,34 @@
7682
* Spark 擅长迭代式计算,交互式查询,流处理,批处理(这个 Hadoop 好像也有?);
7783

7884
**8. Spark 弹性体现在哪里?**
85+
7986
1. 自动的进行内存和磁盘数据存储的切换;
8087
2. 基于 lineage 的高效容错(某处出错,不需要从头开始计算);
8188
3. Task 失败会自动进行特定次数的重试;
8289

8390
**9. Spark 什么时候进行缓存?**
91+
8492
1. 特别耗时的计算之后;
8593
2. 计算链条已经很长,计算之后;
8694
3. shuffle 之后;
8795
4. checkpoint(checkpoint 就是把所有的数据放到磁盘中) 之前;
8896

8997
**10. 什么是 RDD,什么是 Partition?**
98+
9099
1. 一个 RDD 是一个只读的,分布式的,被分区的数据集,由多个 partition 构成;
91100
2. RDD 不可变,可以自我恢复;
92101
3. 一个 partition 是一些数据的集合;
93102

94103
**12. 计算模型为什么使用 DAG ?**
104+
95105
1. DAG 是有向无环图,RDD 和 关系构成 DAG,DAG 的顶点代表 RDD,边代表对 RDD 进行的操作;
96106
2. DAG记录 RDD 之间直接的依赖关系,当某个 RDD 出错时,可以通过依赖关系从父 RDD 恢复出错的 RDD,体现了 DAG 良好的容错性;
97107
3. DAG 主要解决了 MapReduce 的两个问题:
98108
* 每个 MapReduce 操作都是相互独立的,HADOOP不知道接下来会有哪些 Map/Reduce;
99109
* 每一步的输出结果,都会持久化到硬盘或者 HDFS 上;
100110

101111
**13. 什么是 shuffle,哪些情况会 shuffle ?**
112+
102113
1. 把分布在不同节点的数据按照一定的规则汇集到一起的过程,即把数据在不同 partition 之间移动;
103114
2. shuffle 分为:shuffle write,shuffle read;只有产生宽依赖的时候才会 shuffle,shuffle 会写入本地磁盘文件;
104115
3. 下面的操作会产生 shuffle:
@@ -113,9 +124,11 @@
113124

114125

115126
**14. Stage 的划分依据?**
127+
116128
1. 根据 DAG 图,从后往前推,遇到宽依赖就断开,划分为一个stage;遇到窄依赖就将这个RDD加入该stage中;
117129

118130
**15. Spark 2.0 为什么有了 dataframe,解决了 RDD 的哪些不足?**
131+
119132
1. DataFrame 有 schema,而 RDD 没有 schema;
120133
2. 有了 schema 之后,可以更方便,更高效的对数据进行管理,查询,分析;
121134
3. 有了 schema 之后才可以写 Sql 语句;
@@ -134,5 +147,6 @@
134147
Spark ---> Map/Reduce
135148

136149
**17. Mongo 中的数据库级别?**
150+
137151
1. 数据量在不到千万级(400/500 万量),支持直接查询;Mongo 本身提供的功能可以满足当前的需求,查询大多在毫秒级,最多不超过 2s;
138152
2. log 日志在不到亿级(1亿),分析数据使用的是 Spark,怎么读 Mongo 是我们组大神写的,没有深入研究;

0 commit comments

Comments
 (0)