1.为什么HDFS不适合存储小文件?
- 元数据存储在NameNode内存中,一个节点的内存是有限的。
- 存储大量的小文件会消耗过多的寻道时间
同等大小一个大文件的访问速度一定比多个小文件访问速度快
3.NameNode存储block的数量是有限的
比如你一个block元数据需要消耗150byte的内存
一个文件的大小为10K,一亿个文件为1TB,但他会消耗20GB的内存,所占内存太大。
2.MapReduce有什么用途,请说明一下其详细的过程。
MapReduce是用来处理离线数据的。其可以用来统计单词出现的次数。
其过程如下:
Spiltting:首先我们对所有的数据进行分片(splitting),如图,它被分为了三个部分。
Mappping:每个分片(spilt)会被发送到一个或多个映射器,以键值对的方式存储每个单词以及它出现的次数。
Shuffing: 将映射器输出的所有的键值对都收集起来,并根据键进行排序,排序后的键值对被分发给不同的Reducer。
Reducing: 归约阶段,将相同键的键值对进行合并,得到最终的计数。
最后,即可得到最终结果。

3.如何排查Kubernetes中的网络连接问题?
- 使用kubectl get endpoints检查Service的后端Pod是否正常。
- 使用kubectl exec 进入pod,使用curl或ping测试网络连接。
- 检查NetworkPolicy是否限制了流量。
4.请解释Docker镜像和容器的区别。
镜像是一个只读模板,包含运行应用程序所需的文件系统和配置。
容器是镜像的运行实例,具有可写成和运行时状态。