大数据面试题及答案【最新版】大数据高级面试题大全(2021版),发现网上很多大数据面试题及答案整理都没有答案,所以花了很长时间搜集,本套大数据面试题大全,大数据面试题大汇总,有大量经典的大数据面试题以及答案,包含大数据语言常见面试题、大数据工程师高级面试题及一些大厂大数据开发面试宝典,面试经验技巧等,应届生,实习生,企业工作过的,都可参考学习!
从业务系统获取数据
sqoop从关系型数据库中 导入数据到hdfs中,也可以将hdfs数据倒进到关系型数据库中
flume:采集数据存放到hdfs中
ftp:从文件服务器上下载分析所需的数据
数据存储
分为ods 层 ,dw层,da层
源数据层:没有格式化的数据,不利于分析
数据仓库层:来自ODS层要经过ETL的过程 格式统一 数据规则
数据应用层:使用DW层,数据使用者
写sql
配置调度系统
导出数据展示
这个命令可以检查Namenode、Datanode、Task Tracker、 Job Tracker是否正常工作。
如果是HMaster宕机,HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。即ZooKeeper会保证总会有一个HMaster在对外提供服务。
两者都使用mr模型来进行并行计算,hadoop的一个作业称为job,job里面分为map task和reduce task,每个task都是在自己的进程中运行的,当task结束时,进程也会结束。
Spark用户提交的任务称为application,一个application对应一个SparkContext,app中存在多个job,没触发一个action操作就会产生一个job。
这些job可以并行或者串行执行,每个job有多个stage,stage是shuffle过程中DAGSchaduler通过RDD之间的依赖关系划分job而来的,每个stage里面有多个task,组成taskset有TaskSchaduler分发到各个executor中执行,executor的生命周期是和application一样的,即使没有job运行也是存在的,所以task可以快速启动读取内存进行计算的。
Hadoop的job只有map和reduce操作,表达能力比较欠缺而且在mr过程中会重复的读写hdfs,造成大量的io操作,多个job需要自己管理关系。
Spark的迭代计算都是在内存中进行的,API中提供了大量的RDD操作join,groupby等,而且通过DAG图可以实现良好的容错。
./Kafka-topic.sh --create --partition 3 --replication-factor 2 --topic test --zookeeper node01:2181,node2:2181,node3:2181
Region过大会发生多次compaction,将数据读一遍并写一遍到hdfs上,占用io,region过小会造成多次split,region会下线,影响访问服务,调整hbase.heregion.max.filesize为256m。
实时查询,可疑人物是从内存中查询,一般响应为1秒内。
Hbase机制是数据先写入到内存中,当数据达到一定量,再写入磁盘中,在内存中不进行数据的更新和合并操作,值增加数据,使得用户的写操作值进入内存中可以立即返回,保证了Hasee的高性能
弹性分布式数据集,是spark中最基本的数据抽象,可以存于内存中或者磁盘中,分布式存储可用于分布式计算
一个不可变,可分区,里面的数据可并行计算的集合
首先map task会从本地文件系统读取数据,转换成key-value形式的键值对集合,使用的是hadoop内置的数据类型,如Text,Longwritable等。
将键值对集合输入mapper进行业务处理过程,将其转化成需要的key-value再输出。
之后会进行一个partition分区操作,默认使用的是hashpartitioner,可以通过重写hashpartitioner的getPartition方法来自定义分区规则。
之后会对key进行sort排序,grouping分组操作将相同key的value合并分组输出,在这里可以使用自定义的数据类型,重写WritableComparator的Comparator方法来自定义排序规则,重写RawComparator的compara方法来自定义分组规则。
之后进行一个combiner归约操作,就是一个本地的reduce预处理,以减小shuffle,reducer的工作量。
Reduce task会用过网络将各个数据收集进行reduce处理,最后将数据保存或者显示,结束整个job。
InputFormat会在map操作之前对数据进行两方面的预处理。
1.是getSplits,返回的是InputSplit数组,对数据进行Split分片,每片交给map操作一次。
2.是getRecordReader,返回的是RecordReader对象,对每个Split分片进行转换为key-value键值对格式传递给map常用的InputFormat是TextInputFormat,使用的是LineRecordReader对每个分片进行键值对的转换,以行偏移量作为键,行内容作为值。
3.自定义类继承InputFormat接口,重写createRecordReader和isSplitable方法在createRecordReader中可以自定义分隔符。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。