1、hdfs作为分布式存储系统,底层的实现的方式(可能不正确)
1、底层是一个分布式存储的,底层会将数据进行切分多个block块(128M),并存储在不同的节点上面,这种分布式方式有助于提高数据的可靠性护额并行度
2、底层主从架构,hdfs底层是一个主从架构,又一个节点(namenode)和多个子节点(datanode)组成,namenode负责管理文件系统的的命名空间以及文件元数据信息。datanode负责存储真实的数据块。
3、副本机制:HDFS通过复制机制(Replication)实现数据的冗余和容错性。它默认将数据块复制到多个DataNode上(通常是3个副本),以防止数据丢失。这种冗余机制提高了数据的可靠性和容错性。
4、数据流式访问:HDFS支持数据的流式访问。客户端可以通过流式操作读取或写入文件,不需要一次性加载整个文件,这在处理大文件时很有优势
5、一次写入、多次读取,HDFS的设计假设数据通常是一次写入,多次读取。这使得在读取频繁的应用场景中具有高效性。
6、容错和自愈的能力:HDFS具有强大的容错和自愈能力。当某个DataNode出现故障时,HDFS能够自动将副本移动到其他健康的DataNode,保证数据的可用性。
2、hdfs不同节点之间的通信的方式是:
hadoop集群中机架之间的通信的方式是通过rpc通信,rpc是一种远程调度协议,主要是用于分布式系统之间的远程通信,允许一个计算机程序调度另外一个地址空间的函数和过程。
3、在centos7中的解压命令是:
tar负责打包,gzip负责压缩tar
-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件
4、mysql中的事务
在mysql中,事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作都看成一个整体,一起向系统提交或撤销,最终的结果要么是成功,要么就是失败。
5、在MySQL中什么是索引,为什么要创建索引
mysql中的索引是一种数据结构,创建索引的目的是为了加快查询的效率。
6、当问到对hadoop的理解(就是在三大组件,分别的流程,架构,原理)
7、对于此时有一万个小文件存储在hdfs上可以吗?
8、block块的大小是多少(两种版本不同,都需要知道),如何修改
9、为什么spark要比mapreduce的速度要快(spark与mapreduce的区别)
1、spark底层是DAG有向无关图
2、spark是基于内存的。
3、spark的粗粒度调度,对于mapreduce是细粒度调度。(粗粒度调度:指的是将整个任务所需要的资源一次性申请,细粒度调度指的是需要多少资源就申请多少资源)
10、谈谈flink与spark streaming的区别:
flink是标准的实时的处理引擎,是基于事件驱动,主要是以流为核心,然而对于spark 的RDD来说实际上就是一组小批次的RDD集合,是微批的模型,是以批为核心。
主要的区别:
1、时间机制:
spark streaming支持的时间机制有限,只支持处理时间。
flink支持流处理程序在时间上的三个定义:事件事件、摄入时间、处理时间,同时也支持watermark机制来处理滞后数据
2、容错机制
spark streaming中可以通过开启checkpoint来保证容错,当出现问题的时候,恢复到原先checkpoint的位置继续,此时没有办法做到恰好一次处理语义。
flink是通过使用两阶段提交协议来解决这个问题的
3、架构不同:
Spark Streaming 在运行时的主要角色包括:
服务架构集群和资源管理 Master Yarn Application Master;
工作节点 Work Node Manager;
任务调度器 Driver;任务执行器 Executor
Flink 在运行时主要包含:客户端 Client、作业管理 Jobmanager、任务管理Taskmanager。
4、任务调度:
Spark Streaming 连续不断的生成微小的数据批次,构建有向无环图DAG,Spark Streaming 会依次创建 DStreamGraph、JobScheduler。
Flink 根据用户提交的代码生成 StreamGraph,经过优化生成 JobGraph,然后提交给 JobManager进行处理,JobManager 会根据 JobGraph 生成 ExecutionGraph,ExecutionGraph 是 Flink 调度最核心的数据结构,JobManager 根据 ExecutionGraph 对 Job 进行调度,根据物理执行图部署到Taskmanager上形成具体的Task执行。