大数据面试题 (附答案)

Hive 与传统数据库的区别
查询语言HQL SQL

数据存储位置 HDFS Raw Device或者 Local FS

数据格式 用户定义 系统决定

数据更新不支持支持

索引无有

执行MapRedcueExecutor

执行延迟高低

可扩展性高低

数据规模大小

Hadoop的流程
1.创建hadoop用户
2.修改IP
3.安装JDK,并配置环境变量
4.修改host文件映射
5.安装SSH,配置无秘钥通信
6.上传解压hadoop安装包
7.配置conf文件夹下的hadoop-env.sh、core-site.xlmapre-site.xml、hdfs-site.xml
8.配置hadoop的环境变量
9.Hadoop namenode -format
10.start-all

spark 的运行流程
构建Spark Application的运行环境,启动SparkContext
SparkContext向资源管理器(可以是Standalone,Mesos,Yarn)申请运行Executor资源,并启动StandaloneExecutorbackend,
Executor向SparkContext申请Task
SparkContext将应用程序分发给Executor
SparkContext构建成DAG图,将DAG图分解成Stage、将Taskset发送给Task Scheduler,最后由Task Scheduler将Task发送给Executor运行
Task在Executor上运行,运行完释放所有资源

7.Hadoop框架中怎么优化

Storm用于处理高速、大型数据流的分布式实时计算系统。为Hadoop添加了可靠的实时数据处理功能
Spark采用了内存计算。从多迭代批处理出发,允许将数据载入内存作反复查询,此外还融合数据仓库,流处理和图形计算等多种计算范式。Spark构建在HDFS上,能与Hadoop很好的结合。它的RDD是一个很大的特点。
Hadoop当前大数据管理标准之一,运用在当前很多商业应用系统。可以轻松地集成结构化、半结构化甚至非结构化数据集。

.Mapreduce调度模式
MapReduce是hadoop提供一个可进行分布式计算的框架或者平台,显然这个平台是多用户的,每个合法的用户可以向这个平台提交作业,那么这就带来一个问题,就是作业调度。
任何调度策略都考虑自己平台调度需要权衡的几个维度,例如操作系统中的进程调度,他需要考虑的维度就是资源(CPU)的最大利用率(吞吐)和实时性,操作系统对实时性的要求很高,所以操作系统往往采用基于优先级的、可抢占式的调度策略,并且赋予IO密集型(相对于计算密集型)的进程较高的优先级,扯的有点远。
回到hadoop平台,其实MapReduce的作业调度并没有很高的实时性的要求,本着最大吞吐的原则去设计的,所以MapReduce默认采用的调度策略是FIFO(基于优先级队列实现的FIFO,不是纯粹的FIFO,这样每次h),这种策略显然不是可抢占式的调度,所以带来的问题就是高优先级的任务会被先前已经在运行并且还要运行很久的低优先级的作业给堵塞住。
16、机架感知;
1)不同节点之间的通信能够尽量发生在同一个机架之内,
而不是跨机架
(2)为了提高容错能力,名称节点会尽可能把数据块的副本
放到多个机架上

17、MR 数据倾斜原因和解决方案;
1)、key分布不均匀
2)、业务数据本身的特性
3)、建表时考虑不周
4)、某些SQL语句本身就有数据倾斜
1、参数调节
hive.map.aggr = true
Map 端部分聚合,相当于Combiner
hive.groupby.skewindata=true
map的数量
reduece的数量
reduce数量为0
18、集群 HA。
高可用集群软件实现故障检查和故障转移(故障/备份主机切换)的自动化,当然像负载均衡、DNS分发也可提供高可性。
19、hbase 过滤器实现原则
采用bloomfilter进行过滤,Bloom Filter是一种空间效率很高的随机数据结构
对于某个region的随机读,HBase会遍历读memstore及storefile(按照一定的顺序),将结果合并返回给客户端。如果你设置了bloomfilter,那么在遍历读storefile时,就可以利用bloomfilter,忽略某些storefile。
(4)Region的StoreFile数目越多,BLOOMFILTER效果越好
(5)Region下的storefile数目越少,HBase读性能越好
20.请问下,直接将时间戳作为行健,在写入单个 region 时候会发生热点问题,为什么呢?
大量的client访问hbase集群的一个或少数几个节点,造成少数region server的读/写请求过多、负载过大,而其他region server负载却很小,就造成了“热点”现象
有大量连续编号的row key ==> 大量row key相近的记录集中在个别region
==> client检索记录时,对个别region访问过多 ==> 此region所在的主机过载
==> 热点
21.fsimage 和 edit 的区别?
1.fsimage保存了最新的元数据检查点,在HDFS启动时加载fsimage的信息,包含了整个HDFS文件系统的所有目录和文件的信息。
对于文件来说包括了数据块描述信息、修改时间、访问时间等;对于目录来说包括修改时间、访问权限控制信息(目录所属用户,所在组)等。
2.editlog主要是在NameNode已经启动情况下对HDFS进行的各种更新操作进行记录,HDFS客户端执行所有的写操作都会被记录到editlog中。
列举几个配置文件优化?
hadoop.tmp.dir 基础设置
Hdfs-site.xml 配置namenode和datanode的存放位置 最好配置到持久目录中
dfs.replication 3
Dfs.data.dir dfs.name.dir 最好配置
hadoop.logfile.size 10000000 日志文件最大为10M
hadoop.logfile.count 10 日志文件数量为10个
io.file.buffer.size 4096 4K 大型的cluster 流文件的缓冲区可以更大一点 减少io次数
4、写出你对 zookeeper 的理解
为了解决分布式事务性一致的问题
它提供了简单原始的功能,分布式应用可以基于它实现更高级 的服务,比如同步,配置管理,集群管理,名空间。它被设计为易于编程,使用文件系统目录树作为数据模型。服务端跑在java上,提供java和C的客户端 API
顺序一致性:按照客户端发送请求的顺序更新数据。
原子性:更新要么成功,要么失败,不会出现部分更新。
单一性 :无论客户端连接哪个server,都会看到同一个视图。
可靠性:一旦数据更新成功,将一直保持,直到新的更新。
及时性:客户端会在一个确定的时间内得到最新的数据。

22NameNode 与 SecondaryNameNode 的区别与联系?
Nn是hdfs主节点
SecondaryNameNode是第二名称节点 里面存储的信息与namenode差不多 每隔一段时间会与namenode的信息同步
当namenode挂掉时,会通过secondaryNameNode去恢复nameNode,保证集群正常的运行 还可以减少namenode的启动时间

你可能感兴趣的:(大数据面试题 (附答案))