|
11 | 11 | 1. 相对简单的表结构,存储相对松散,多冗数据 |
12 | 12 | 2. 一般是只读优化 |
13 | 13 |
|
14 | | -**2. 什么是知识图谱,简单介绍一下苏格拉底?** |
15 | | - |
16 | | - 知识图谱: |
17 | | - 1. 知识图谱是一种语义网络,是对语义知识的一种形式化描述,节点代表实体,边代表实体之间的关系; |
18 | | - 2. 知识图谱以一种可视化的方式展示「知识」; |
19 | | - 3. 当你使用 Google 搜索奥巴马时,在右边出现的奥巴马的相关信息,比如奥巴马的妻子,奥巴马的女儿,这就使用到了知识图谱; |
20 | | - |
21 | | - 苏格拉底: |
22 | | - 1. 苏格拉底是提供一站式知识获取、融合、建模、存储、查询等知识图谱全生命周期的管理方案的一个平台; |
23 | | - 2. 苏格拉底主要有 数据来源、知识抽取、知识建模、规则引擎、苏格拉底应用几个方面; |
24 | | - 3. 苏格拉底后台使用 MongoDB 和 Mysql 数据库主要为了实现 **schema 的快速迭代**,**数据的快速迭代,配合算法做实体对齐**; |
25 | | - |
26 | | -**3. 你是如何使用 Spark 管理日志的?** |
| 14 | +**2. 你是如何使用 Spark 管理日志的?** |
27 | 15 |
|
28 | 16 | 1. 每次对实例的更改,都会把变更记录到 mongo 数据库,形成一个变更记录的collection; |
29 | 17 | 2. 分析数据时,将 mongo 数据库中 collection 的数据使用 Spark 倒入到 Hive 表中,然后再进行分析 |
30 | 18 |
|
31 | | -**4. 你们公司的业务场景是什么?(针对公司的业务场景,调研市场上主流的图数据库)** |
32 | | - |
33 | | - 1. 支持倒入 SPO 三元组的数据(包含 schema-free 和 schema-constrained 两类数据库) |
34 | | - 2. 对于 schema-free 的数据库,需要对数据库中的数据进行统计、分析、整理出可用的强 schema |
35 | | - 3. 图数据库需要支持实体 对齐/融合 |
36 | | - 4. 图数据库需要支持 ETL 流程,schema-free --> schema-constrained --> 苏格拉底; |
37 | | - 5. 数据查询,图数据库时在整个项目中属于底层数据库,不会有直接的业务场景,只需要支持 数据/算法 人员做分析时使用的查询(用 Gremlin 就可以满足需求) |
38 | | - 6. 不需要支持 OLTP;OLAP 可以通过 TinkerPop Spark 进行支持,具体场景具体分析,目前需求不高。 |
39 | | - |
40 | | - 基于以上的需求,在调研是重点关注:是否 schema-free? ETL 性能如何? 离线计算能力如何?是否可横向/纵向扩展? |
41 | | - |
42 | | -**5. 你在调研图数据库的时候都调研了哪些指标,为什么最后选择了 JanusGraph + Neo4j 这两个数据库?** |
| 19 | +**3. 你在调研图数据库的时候都调研了哪些指标,为什么最后选择了 JanusGraph + Neo4j 这两个数据库?** |
43 | 20 |
|
44 | 21 | * 这里的东西需要多补充一下 !!! |
45 | 22 |
|
|
66 | 43 |
|
67 | 44 | * 这里如果问到,着重讲解一个就可以了。 |
68 | 45 |
|
69 | | -**6. 深入调研 JanusGraph,ThinkerPop,都得到了哪些成果?(这里面试官可能问到哪些问题?)** |
| 46 | +**4. 深入调研 JanusGraph,ThinkerPop,都得到了哪些成果?(这里面试官可能问到哪些问题?)** |
70 | 47 |
|
71 | 48 | 1. Gremlin 语法文档总结; |
72 | 49 | 2. 不同数据库对 Gremlin 支持程度的测试; |
73 | 50 | 3. HugeGraph 不能动态支持修改 schema,有些直接报错,因此放弃了 Hu个Graph; |
74 | 51 |
|
75 | | -**7. 为什么要有 Spark,他相比 Hadoop 解决了什么问题?** |
| 52 | +**5. 为什么要有 Spark,他相比 Hadoop 解决了什么问题?** |
76 | 53 |
|
77 | 54 | 1. Spark 替代的 Hadoop 生态中的 MapReduce; |
78 | 55 | 2. MapReduce 在计算时,每次 Reduce 之后都会写入磁盘文件。如果一个任务有多个 Map/Reduce 计算,就会多次读写磁盘文件,大大降低运算速度; |
|
81 | 58 |
|
82 | 59 | * Spark 擅长迭代式计算,交互式查询,流处理,批处理(这个 Hadoop 好像也有?); |
83 | 60 |
|
84 | | -**8. Spark 弹性体现在哪里?** |
| 61 | +**6. Spark 弹性体现在哪里?** |
85 | 62 |
|
86 | 63 | 1. 自动的进行内存和磁盘数据存储的切换; |
87 | 64 | 2. 基于 lineage 的高效容错(某处出错,不需要从头开始计算); |
88 | 65 | 3. Task 失败会自动进行特定次数的重试; |
89 | 66 |
|
90 | | -**9. Spark 什么时候进行缓存?** |
| 67 | +**7. Spark 什么时候进行缓存?** |
91 | 68 |
|
92 | 69 | 1. 特别耗时的计算之后; |
93 | 70 | 2. 计算链条已经很长,计算之后; |
94 | 71 | 3. shuffle 之后; |
95 | 72 | 4. checkpoint(checkpoint 就是把所有的数据放到磁盘中) 之前; |
96 | 73 |
|
97 | | -**10. 什么是 RDD,什么是 Partition?** |
| 74 | +**8. 什么是 RDD,什么是 Partition?** |
98 | 75 |
|
99 | 76 | 1. 一个 RDD 是一个只读的,分布式的,被分区的数据集,由多个 partition 构成; |
100 | 77 | 2. RDD 不可变,可以自我恢复; |
101 | 78 | 3. 一个 partition 是一些数据的集合; |
102 | 79 |
|
103 | | -**12. 计算模型为什么使用 DAG ?** |
| 80 | +**9. 计算模型为什么使用 DAG ?** |
104 | 81 |
|
105 | 82 | 1. DAG 是有向无环图,RDD 和 关系构成 DAG,DAG 的顶点代表 RDD,边代表对 RDD 进行的操作; |
106 | 83 | 2. DAG记录 RDD 之间直接的依赖关系,当某个 RDD 出错时,可以通过依赖关系从父 RDD 恢复出错的 RDD,体现了 DAG 良好的容错性; |
107 | 84 | 3. DAG 主要解决了 MapReduce 的两个问题: |
108 | 85 | * 每个 MapReduce 操作都是相互独立的,HADOOP不知道接下来会有哪些 Map/Reduce; |
109 | 86 | * 每一步的输出结果,都会持久化到硬盘或者 HDFS 上; |
110 | 87 |
|
111 | | -**13. 什么是 shuffle,哪些情况会 shuffle ?** |
| 88 | +**10. 什么是 shuffle,哪些情况会 shuffle ?** |
112 | 89 |
|
113 | 90 | 1. 把分布在不同节点的数据按照一定的规则汇集到一起的过程,即把数据在不同 partition 之间移动; |
114 | 91 | 2. shuffle 分为:shuffle write,shuffle read;只有产生宽依赖的时候才会 shuffle,shuffle 会写入本地磁盘文件; |
|
123 | 100 | * 父 RDD 的一个 partition 被子 RDD 的多个 partition 依赖; |
124 | 101 |
|
125 | 102 |
|
126 | | -**14. Stage 的划分依据?** |
| 103 | +**11. Stage 的划分依据?** |
127 | 104 |
|
128 | 105 | 1. 根据 DAG 图,从后往前推,遇到宽依赖就断开,划分为一个stage;遇到窄依赖就将这个RDD加入该stage中; |
129 | 106 |
|
130 | | -**15. Spark 2.0 为什么有了 dataframe,解决了 RDD 的哪些不足?** |
| 107 | +**12. Spark 2.0 为什么有了 dataframe,解决了 RDD 的哪些不足?** |
131 | 108 |
|
132 | 109 | 1. DataFrame 有 schema,而 RDD 没有 schema; |
133 | 110 | 2. 有了 schema 之后,可以更方便,更高效的对数据进行管理,查询,分析; |
|
136 | 113 | 比如: |
137 | 114 | 有了 schema 之后,你可以选择只需读需要的数据,加快 I/O,Hadoop 一般是列存,I/O 快 |
138 | 115 |
|
139 | | -**16. Hive 是什么,Hive 和 HDFS 的区别?** |
| 116 | +**13. Hive 是什么,Hive 和 HDFS 的区别?** |
140 | 117 |
|
141 | 118 | Hadoop 生态: |
142 | 119 | * HDFS 文件管理系统,可以对比 Windows 的 File Explore; |
|
146 | 123 |
|
147 | 124 | Spark ---> Map/Reduce |
148 | 125 |
|
149 | | -**17. Mongo 中的数据库级别?** |
| 126 | +**14. Mongo 中的数据库级别?** |
150 | 127 |
|
151 | 128 | 1. 数据量在不到千万级(400/500 万量),支持直接查询;Mongo 本身提供的功能可以满足当前的需求,查询大多在毫秒级,最多不超过 2s; |
152 | | - 2. log 日志在不到亿级(1亿),分析数据使用的是 Spark,怎么读 Mongo 是我们组大神写的,没有深入研究; |
| 129 | + 2. log 日志在不到亿级(1亿),分析数据使用的是 Spark,怎么读 Mongo 是我们组大神写的,没有深入研究; |
0 commit comments