网站建设新趋势网站开发验收资料
- 作者: 五速梦信息网
- 时间: 2026年04月20日 07:44
当前位置: 首页 > news >正文
网站建设新趋势,网站开发验收资料,做个网站怎么做,wordpress后台登录地址变更【大数据面试题大全】大数据真实面试题#xff08;持续更新#xff09; 1#xff09;Java1.1.Java 中的集合1.2.Java 中的多线程如何实现1.3.Java 中的 JavaBean 怎么进行去重1.4.Java 中 和 equals 有什么区别1.5.Java 中的任务定时调度器 2#xff09;SQL2.1.SQL 中的聚… 【大数据面试题大全】大数据真实面试题持续更新 1Java1.1.Java 中的集合1.2.Java 中的多线程如何实现1.3.Java 中的 JavaBean 怎么进行去重1.4.Java 中 和 equals 有什么区别1.5.Java 中的任务定时调度器 2SQL2.1.SQL 中的聚合函数2.2.SQL 中的各种 join 与区别2.3.简单说一下 MySQL 中的数据结构2.4.关系型数据库和大数据组件中的 nosql 数据库有什么区别 3Linux4Hadoop4.1.Yarn4.1.1.Yarn 提交作业流程4.1.2.Yarn 的资源调度4.1.3.Yarn 成员 4.2.HDFS4.2.1.HDFS 读写流程4.2.2.HDFS 中小文件过多会有什么影响4.2.3.HDFS 中小文件过多怎么处理4.2.4.HDFS 成员4.2.5.NameNode 和 SecondaryNameNode 的区别与联系4.2.6.HDFS 中 Fsimage 与 Edits 详解 4.3.MapReduce4.3.1.map 阶段的工作机制4.3.2.reduce 阶段的工作机制4.3.3.MR 的优劣4.3.4.MR 的相关配置 5Hive5.1.Hive 相关数据的存储位置5.2.Hive 内外表的区别5.3.Hive 如何实现分区5.4.Hive 装载数据5.5.Hive 修复分区数据5.6.Hive 中的排序方式及对比5.7.row_number()、rank()、dense_rank() 的区别5.8.Hive 如何实现数据的导入和导出5.9.Hive 中 over() 的使用 6Sqoop6.1.Sqoop 常用命令6.2.Sqoop 如何进行空值处理6.3.Sqoop 如何处理特殊字符6.4.Sqoop 任务有 reduce 阶段吗 7Oozie8Azkaban9Flume9.1.Flume 的架构组件9.2.Flume 的多种架构9.3.Flume 的相关配置 10Kafka10.1.Kafka为什么这么快10.2.Kafka 怎么避免重复消费10.3.Kafka 怎么保证顺序消费10.4.Kafka 分区有什么作用10.5.Kafka 如何保证数据不丢失10.6.消费者与消费者组之间的关系10.7.Kafka 架构及基本原理 11HBase11.1.HBase 的架构组成11.2.HBase 的读写流程11.3.HBase 中 rowkey 的设计11.4.Region 的分区和预分区11.5.HBase 优缺点 1Java
作为目前最火爆的开发语言使用Java已经是大数据开发者的基本技能很多大数据组件也适用于Java开发如Flink
1.1.Java 中的集合
【Java-Java集合】Java集合详解与区别
1.2.Java 中的多线程如何实现
1、继承Thread类。
2、实现Runnable接口。
3、实现Callable接口。
4、线程池提供了一个线程队列队列中保存着所有等待状态的线程。避免了创建与销毁额外开销提高了响应的速度。
详细https://www.cnblogs.com/big-keyboard/p/16813151.html
1.3.Java 中的 JavaBean 怎么进行去重
1、利用 HashSet泛型指定我们创建好的 JavaBean通过 hashSet 中的 add() 方法进行去重。
public static void main(String[] args) {Date datenew Date();//获取创建好的javaBean对象并进行赋值JavaBean t1 new JavaBean();t1.setLat(121);t1.setLon(30);t1.setMmsi(11);t1.setUpdateTime(date);//再创建一个javaBean对象,赋同样的值 JavaBean t2new JavaBean();t2.setLat(121);t2.setLon(30);t2.setMmsi(11);t2.setUpdateTime(date);//用HashSetHashSetJavaBean hashSet new HashSetJavaBean(); hashSet.add(t1); hashSet.add(t2); System.out.println(hashSet); System.out.println();for(JavaBean t:hashSet){ //只会出现一个值System.out.println(t);
} 2、利用 ArrayList泛型指定我们创建好的 javaBean通过 ArrayList 中的 contain() 方法进行判断后去重。
//用List
ListTestMain18 lists new ArrayListTestMain18();if(!lists.contains(t1)){lists.add(0, t1);}if(!lists.contains(t2)){//重写equalslists.add(0, t2);}
System.out.println(长度lists.size());1.4.Java 中 和 equals 有什么区别
用来判断对象在内存中的地址是否相等equals用来判断对象中的内容是否相等。
1.5.Java 中的任务定时调度器
1、Timer timer new Timer() timer.schedule重写 new TimerTask 方法
//方式1:
Timer timer new Timer();
//TimerTask task 要定时执行的任务
//long delay延迟多久开始执行
//long period每隔多久执行延迟
timer.schedule(new TimerTask() {Overridepublic void run() {System.out.println(每隔1s执行一次);}
} 50001000 );*/2、Executors.newScheduleThreadPool线程池数量返回的对象 scheduleAtFixeRate重写 run 方法。
//方式2:
ScheduledExecutorService executorService Executors.newScheduledThreadPool(3);
executorService.scheduleAtFixedRate(new Runnable() {Overridepublic void run() {System.out.println(每隔1s执行一次);}
}51 TimeUnit.SECONDS);3、SprintBoot 中提供了定时任务的相关注解使用起来特别方便利用corn定义触发的规则。
Component//表示该类是Spring的组件会由Spring创建并管理
EnableScheduling//表示开启定时任务扫描
public class TestTimedTask2 {//https://cron.qqe2.com/Scheduled(cron 0/3 * * * * ? )public void task(){System.out.println(每隔3s执行一次);}
}2SQL
SQL 作为计算机行业最基本的语言之一也是必须要了解的。
2.1.SQL 中的聚合函数
avg()max()min()sum()count() 等
注意
聚合函数不会自己使用也不会和 where 一起使用一般使用的时候都是和 group by 一起使用分组必聚合还有就是在 having 语句后面进行使用。
2.2.SQL 中的各种 join 与区别
inner join内连接就是找到两个表中的交集。
left join左外连接以左边的表为主如果没有与右边的表相对应的用 null 补充在表中。
right join右外连接以右边的表为主同上。
full join满外连接Hive 中特有的MySQL 中没有保留两边的表的所有内容没有对应的互相都用 null 补充在表中。
2.3.简单说一下 MySQL 中的数据结构
MySQL的数据结构为 B 树
【计算机基本原理-数据结构】八大数据结构分类
【计算机基本原理-数据结构】数据结构中树的详解
2.4.关系型数据库和大数据组件中的 nosql 数据库有什么区别
1、关系型数据库的特点 结构化的存储 采用结构化的查询语言sql 操作数据要具有一致性比如事务操作 可以进行join等复杂查询 无法进行大量数据的高并发读写
2、nosql数据库的特点 非结构化的数据库 高并发大数据下读写能力强 事务性差 join 的复杂操作能力弱
3Linux
在大数据环境安装部署、提交 jar 包的时候都会应用到 Linux 操作系统所以了解需要了解 Linux 常用命令。
【Linux-Linux常用命令】Linux常用命令总结
4Hadoop
4.1.Yarn
4.1.1.Yarn 提交作业流程
1、由客户端向 RM 提交任务MRSpark…
2、RM 接收任务并根据任务随机找一台NM启动 AppMaster通知以 container 方式。 container资源信息容器节点信息内存信息CPU信息运行AppMaster 3、指定 NM 启动 AppMaster启动后和 RM 保持心跳机制用于报告当前已经启动了并且通过心跳来传递相关信息。
4、根据 RM 给定任务信息根据任务信息对任务进行分配主要会分配出要启动多少个 map 和多少个 reduce以及每个 map 和每个 reduce 需要使用多大资源空间然后将资源申请相关信息发送给 RM心跳发送
5、RM 接收到资源申请信息后将申请信息交给内部资源调度器由资源调度器根据相关的资源调度方案进行资源分配即可如果当下没有资源在此处等待。
注意
资源并不是一次性全部给到 AppMaster一般会采用极可能满足方案如果满足不了会先给与一定资源进行运行如果空闲资源连一个 container 都不足就会将这些资源挂起等待资源充足。
6、AppMaster 基于心跳机制不断询问RM是否已经准备好了资源了如果发现已经准备好了然后直接将资源信息获取。
7、根据资源信息说明到指定的 NM 上启动 container 资源容器开始运行相关任务。
8、NM 接收启动的信息后开始启动执行此时会和 AppMaster 以及 RM 保持心跳连接。 RM 将任务的相关信息根据心跳通知 AppMaster AppMaster 将资源的使用信息根据心跳通知 RM 9、当 NM 运行完成后会通知 AppMaster 并将资源使用完成情况通知给 RM。
10、AppMaster 告知给 RM 任务已经运行完成了 RM 回收资源通知AppMaster进行自毁即可。
注意
当 NM 在运行过程中如果发生错误了此时 RM 会立即将资源回收此时 AppMaster 就需要重新和 RM 申请资源。
详情【Hadoop-Yarn】Yarn 的运行流程
4.1.2.Yarn 的资源调度
1、FIFO scheduler 先进先出调度方案
当一个调度任务进入到调度器之后那么调度器会优先满足第一个MR任务全部资源此时就有可能将资源全部都获取到了导致后续的任务本身的运行时间很短但是由于第一个MR将资源全部抢走了 导致后续任务全部等待。
此种调度器在生产中 一般不会使用因为生产中yarn平台不是你自己的。
2、Fair scheduler公平调度器
可以预先分配出多个队列, 相当于对资源进行预先的划分。
3、capacity scheduler容量调度器
此种调度器是有 Yahoo 提供一种调度方案同时也是当下Apache版本的hadoop默认调度方案。每个队列可以指定占用多少的百分比的资源从而保证大的任务可以有单独的队列来运行并且小的任务也可以正常的运行。
4.1.3.Yarn 成员
clustermanager、nodemanager、applicationmaster。
4.2.HDFS
4.2.1.HDFS 读写流程
【Hadoop-HDFS】HDFS的读写流程 SNN的数据写入流程
4.2.2.HDFS 中小文件过多会有什么影响
HDFS 擅长存储大文件我们知道HDFS 中每个文件都有各自的元数据信息如果 HDFS 中有大量的小文件就会导致元数据爆炸集群管理的元数据的内存压力会非常大namenode 节点
4.2.3.HDFS 中小文件过多怎么处理
1、使用官方工具 parquet-tools 合并指定的 parquet 文件。
合并 HDFS 上的 parquet 文件
hadoop jar parquet-tools-1.9.0.jar merge /tmp/a.parquet /tmp/b.parquet
合并本地的 parquet 文件
java -jar parquet-tools-1.9.0.jar merge /tmp/a.parquet /tmp/b.parquet2、合并本地的小文件上传到 HDFS通过 HDFS 客户端的 appendToFile 命令对小文件进行合并上传 hdfs dfs -appendToFile user1.txt user2.txt /test/upload/merged_user.txt3、合并 HDFS 的小文件下载到本地可以通过 HDFS 客户端的 getmerge 命令将很多小文件合并成一个大文件然后下载到本地最后重新上传至 HDFS。 hdfs dfs -getmerge /test/upload/user*.txt ./merged_user.txt4、Hadoop Archives HAR files是在 0.18.0 版本中引入到 HDFS 中的它的出现就是为了缓解大量小文件消耗 NameNode 内存的问题。 HAR 文件是通过在 HDFS 上构建一个分层文件系统来工作。HAR 文件通过 hadoop archive 命令来创建而这个命令实际上是运行 MapReduce 作业来将小文件打包成少量的 HDFS 文件将小文件进行合并成几个大文件
Usage: hadoop archive -archiveName name -p parent src dest
har命令说明
参数 “-p” 为 src path 的前缀src 可以写多个 path
归档文件
hadoop archive -archiveName m3_monitor.har -p /tmp/test/archive_test/m3_monitor/20220809 /tmp/test/archive# 删除数据源目录 hdfs dfs -rm -r /tmp/test/archive_test/m3_monitor/20220809
查看归档文件
hdfs dfs -ls -R har:///tmp/test/archive/m3_monitor.har
解归档将归档文件内容拷贝到另一个目录
hdfs dfs -cp har:///tmp/test/archive/m3_monitor.har/part-1-7.gz /tmp/test/4.2.4.HDFS 成员
namenode、datanode、secondarynamenodenamenode 有 active 和 standby。
4.2.5.NameNode 和 SecondaryNameNode 的区别与联系
SecondaryNameNode 并不是 NameNode 的备份节点主要是将内存中的 Fsimage 和磁盘上的 Fsimage 文件进行合并。
4.2.6.HDFS 中 Fsimage 与 Edits 详解
【Hadoop-HDFS】HDFS中Fsimage与Edits详解
4.3.MapReduce
4.3.1.map 阶段的工作机制
【Hadoop-MapReduce】MapReduce编程步骤及工作原理详见标题4map 阶段的工作机制
4.3.2.reduce 阶段的工作机制
【Hadoop-MapReduce】MapReduce编程步骤及工作原理详见标题5reduce 阶段的工作机制
4.3.3.MR 的优劣
不管是 map 阶段还是 reduce 阶段大量进行磁盘到内存内存到磁盘相关的 IO 操作主要目的能够解决处理海量数据计算问题。 带来好处能够处理海量的数据。 带来的弊端造成大量的磁盘 IO 工作导致效率比较低。
4.3.4.MR 的相关配置
配置默认值释义mapreduce.task.io.sort.mb100设置环型缓冲区的内存值大小mapreduce.map.sort.spill.percent0.8设置溢写的比例mapreduce.cluster.local.dir${hadoop.tmp.dir}/mapred/local溢写数据目录mapreduce.task.io.sort.factor10设置一次合并多少个溢写文件
5Hive
5.1.Hive 相关数据的存储位置
Hive 的元数据存储在mysql中默认derby不支持多客户端访问数据存储在 HDFS执行引擎为 MR。
5.2.Hive 内外表的区别
1、建表时用 external 区分。
2、删除外表时删除元数据删除内表是删除的是元数据和存储数据。
3、外表存储位置自己定内表存储位置在 /uer/hive/warehouse 中。
5.3.Hive 如何实现分区
1、创建表时指定字段进行分区。
2、使用 alter table 对已经创建完成的表进行分区的增加和删除操作。
建表
create table tablename(col1 string) partitioned by(col2 string);
添加分区
alter table tablename add partition(col2’202101’);
删除分区
alter table tablename drop partition(col2’202101’);3、修改分区。
alter table db.tablename
set location /warehouse/tablespace/external/hive/test.db/tablename5.4.Hive 装载数据
alter table db.tablename add if not exists partition (sample_date20220102,partition_namer) location /tmp/db/tablename/sample_date20220102/partition_namer;5.5.Hive 修复分区数据
msck repair table test; 5.6.Hive 中的排序方式及对比
1、Hive 中的排序方式有order bysort bydistribute bycluster by
2、四种排序方式的区别 order by 对数据进行全局排序只有一个 reduce 工作 sort by 一般和 distribute by 一起使用当 task 为 1 时效果和 order by 一样 distribute by 对 key 进行分区和 sort by 一起实现对分区内数据的排序工作 cluster by 当 order by 和 distribute by 的字段相同时可以用 cluster by 代替但是只能升序
注意
生产环境中使用 sort by 比较少容易造成 oom使用 sort by 和 distribute by 较多。
5.7.row_number()、rank()、dense_rank() 的区别
三者都是对数据进行标号排序 row_number()不会出现序号的增加或减少当数值相同时也会有排名先后之分 rank()当排序相同时序号重复总序不会变化 dense_rank()当排序相同时序号重复总序会减少
5.8.Hive 如何实现数据的导入和导出 导入数据 ① load data 的方式可以对本地或HDFS上的数据进行导入 ② Location方式 create external if not exists stu2 like student location /user/hive/warehouse/student/student.txt;③ sqoop方式 导出数据一般用sqoop方式
5.9.Hive 中 over() 的使用
6Sqoop
6.1.Sqoop 常用命令
【Sqoop-命令】Sqoop相关了解及命令
6.2.Sqoop 如何进行空值处理
导出数据时采用 –input-null-string 和 –input-null-non-string 两个参数。
导入数据时采用 –null-string 和 –null-non-string。
6.3.Sqoop 如何处理特殊字符
Sqoop 中遇到特殊字符可以使用 hive-drop-import-delims 丢弃也可以使用 –hive-delims-replacement它会将特殊字符替换为我们设定的字符。
6.4.Sqoop 任务有 reduce 阶段吗
只有 map 阶段没有 reduce 阶段的任务。默认是 4 个 MapTask。
7Oozie
1、Oozie 一般不单独使用因为需要配置 xml 文件很麻烦。
2、Oozie 一般与 Hue 一起使用可以调度各种任务比如 ShellMRHive等。
3、无论是单独使用还是与 Hue 集成Oozie中最重要的点都在于 workflow 的配置。
4、与 Hue 整合时在 Schedule 中配置定时任务的时间在 workflow 中配置任务的相关位置信息。
8Azkaban
1、元数据存储在 Mysql 中。
2、有三种部署模式 solo-server所有服务在一台服务器上 tow-serverwebexecutor在不同服务器上multiple-executor-server一般不常用。
3、azkaban的任务调度 Hive脚本 test.sql use default;
drop table aztest;
create table aztest(id intname string) row format delimited fields terminated by ;
load data inpath /aztest/hiveinput into table aztest;c
reate table azres as select * from aztest;insert overwrite directory /aztest/hiveoutput select count(1) from aztest; hive.job名称.job typecommand #固定
dependenciesxx #有依赖的任务的时候添加这个
command/home/hadoop/apps/hive/bin/hive -f test.sql将所有文件打包成 zip 包上传到 Azkaban 上然后点击 summary然后选择 schedule 进行时间的配置。
9Flume
Flume 是一个用来实时采集流数据的分布式数据采集系统容错性强可靠性高。
9.1.Flume 的架构组件
sourcechannelsink
1、Flume 中的 agent包含 sourcechannelsink 的统称。
2、source是用来采集数据的组件可以监控一个文件的变化可以监控一个目录下新文件的变化可以监控一个目录下所有文件的内容变化也可以自定义数据源在配置的时候要配置 source 的名称。
3、channnel可以配置两种方式进行数据的缓存一种是内存另一种是以生成文件的方式。
4、sink支持 HDFSKafka自定义目标源等还可以支持下一个 agent。
5、eventFlume 将采集到的数据封装到 event 中进行传输本质上是一个字节数组。
9.2.Flume 的多种架构
1、Flume 可以以 agent 的方式进行串联。
2、Flume 可以并联将多个 agent 的 sink 传输到新的 agent 的 source 中。
3、Flume 可以 串联并联多sink 等。
9.3.Flume 的相关配置
1、sourcechannelsink 的名称。
2、channel 是基于内存还是基于文件。
3、sink 对应的 channel。
4、sink 到 kafka 的话要配置 kafka 的 topic端口号ack 等。
10Kafka
10.1.Kafka为什么这么快
1、查询速度快 分区文件分段。 二分查找法定位消息在哪个段文件中。
2、写入速度快 顺序写入。 零拷贝数据直接从磁盘文件复制到网卡设备中不需要经过应用程序之手。零拷贝技术通过 DMA 技术将文件内容复制到内核模式下的 ReadBuffer直接将数据内核的数据传递到网卡设备中所以零拷贝是针对于内核数据再内核模式下实现了零拷贝。 批量发送通过 batch.size 参数来设置批量提交数据的大小默认是16K当数据积压到这一值时就会统一发送数据会发送到一个分区中。 数据压缩Producer 端压缩Broker 端保持Consumer 端解压缩。
10.2.Kafka 怎么避免重复消费
可以利用两阶段事务提交Flink或者容器去重HashSetRedis布隆过滤器
10.3.Kafka 怎么保证顺序消费
Kafka 是全局无序但是局部有序只要我们在推送消息的时候都推送到同一个分区消费时也指定一个分区消费即可。
10.4.Kafka 分区有什么作用
提升读写效率 方便集群扩容 消费者负载均衡
10.5.Kafka 如何保证数据不丢失
1、生产者端设置 ack0、1、-1 / all 0生产者端不会等到 Broker 端返回 ack继续生产数据。 1当 Broker 中的 Leader 端收到数据就返回 ack。 -1 / all当 Broker 中的 Leader 和 所有的Follower 都接收到数据才返回 ack。 2、消费者端采用先消费后提交的方式宁愿重复消费也不能让数据丢失。
3、Broker 端有副本机制保证数据安全性。
10.6.消费者与消费者组之间的关系
同一时间一条消息只能被同一个消费者组的一个消费者消费不能被同一个消费者组的其他消费者消费。但是可以被不同消费者的消费者组所消费。
10.7.Kafka 架构及基本原理
【Kafka-架构及基本原理】Kafka生产者、消费者、Broker原理解析 Kafka原理流程图
11HBase
11.1.HBase 的架构组成 HMaster HRegionServer Region zookeeper
HBaseClient - Zookeeper - HRegionServer - HLog - Region - store - memorystore - storeFile - HFile
11.2.HBase 的读写流程
【HBase-读写流程】HBase的读写流程与内部执行机制
11.3.HBase 中 rowkey 的设计 Hash 时间戳倒转
11.4.Region 的分区和预分区 HBase 在创建表的时候可以指定预分区规则。 HBase 建表后和可以通过 split 命令进行分区的更改。 HBase 也可以再建表的时候通过 split.txt 文件中的信息通过 SPLIT_FILE 命令进行预分区。
11.5.HBase 优缺点 优点 支持非结构化数据的存储 相对于关系型数据库HBase采用列式存储写入的效率很快 HBase中的null值不会被记录在内节省空间并提高了读写性能 支持高并发的读写 支持大量数据的存储工作 缺点 本身并不支持sql查询 不适合大范围的扫描查询
相关文章
-
网站建设新发展上海公司注册代理公司
网站建设新发展上海公司注册代理公司
- 技术栈
- 2026年04月20日
-
网站建设心得体会800字做网站新乡
网站建设心得体会800字做网站新乡
- 技术栈
- 2026年04月20日
-
网站建设写什么经营范围哪里有网站建设工程
网站建设写什么经营范围哪里有网站建设工程
- 技术栈
- 2026年04月20日
-
网站建设信息推荐wordpress keywords 用逗号 区分关键字
网站建设信息推荐wordpress keywords 用逗号 区分关键字
- 技术栈
- 2026年04月20日
-
网站建设行多用户商城系统哪里有
网站建设行多用户商城系统哪里有
- 技术栈
- 2026年04月20日
-
网站建设行业swot分析上海网站建设v芯ee8888e
网站建设行业swot分析上海网站建设v芯ee8888e
- 技术栈
- 2026年04月20日
