赞
踩
一、Linux
1、常用高级命令
Top:查看CPU使用情况(系统内存)
Iotop:查看磁盘IO使用情况
ps -ef :查看服务器进程信息
df -h:显示磁盘分区使用情况
netstat:查看端口号
rpm:安装软件包
tar:解压缩
jmap-heap:查看某一个进程对应的内存
distcp:集群间数据迁移
scp :节点之间数据迁移
二、shell
1、用过哪些工具
awk、sed、sort、cut、<python>
2、写过的shell脚本
1)分发脚本
2)启停脚本<重点>
#!/bin/bash
case $1 in
"start")
for i in hadoop102 hadoop103 hadoop104
do
ssh $i " 绝对路径"
done
;;
"stop")
do
ssh $i "绝对路径"
done
;;
esac
3)数仓中数据导入和导出脚本
mySQL -> hdfs <datax>
hdfs -> mySQL <datax>
4)数仓层级内部
ods -> ads (5步)
3、单引号('')和双引号("")
'' :不解析里面变量的值
"":解析里面变量的值
两者嵌套使用:谁在外面谁起作用
三、hadoop
1、入门
1)常用端口号:3.x:9870(hdfs),8088(yarn),19888(历史服务器),9820/9000/8020(内部通讯)
2)常用配置文件:core_site.xml hdfs_site.xml mapred_site.xml yarn_site.xml workers
2、HDFS
1)hdfs读写流程(笔试题):
2)小文件(面试题):危害:
a.存储:影响namenode的存储,一个文件的元数据大约150字节
b.计算:默认情况会对每个文件单独切片,一个文件需要一个maptask
3) 小文件怎么处理:a.CombineTextInputFormat:可以把多个小文件放在一起统一切片
b.har归档:多个小文件打包成块
c.jvm重用:开启一个jvm进程之后一直处理小文件不关闭
4)副本数:3个
5)块大小:1.x:64m
2.x:128
本地模式:32m
企业中:128m,256m,512m (根据磁盘读写速度而定)
3、MR
shuffle:横跨map和reduce,混写的过程为shuffle
数据进来先getpartition进行分区,方便后续处理
然后进入环形缓冲区:100m,80%(可以提高为200m,90%)
出缓冲区之后对key进行<快速>排序,产生大量溢写文件
将数据按照分区不同进行归并,在内存中完成,然后将数据溢写到磁盘,map阶段结束
reduce阶段开始:拉取指定分区的数据,放入内存中,内存不够用放入磁盘,然后将数据进行归并排序(拉去过来的数据都是有序的,无序的数据使用快排),然后放入reduce方法中
优化:a.getpartition阶段自定义分区处理数据倾斜 b.环形缓冲区优化 c.溢写文件归并过程,调整溢写文件个数(默认10个),d.溢写文件预聚合,不能影响最终业务逻辑(不能求平均值)e.减少磁盘io,使用压缩,f.reduce拉取文件个数调整
4、yarn
1)yarn的工作机制:
client(客户端)
2)有哪些调度器:
默认调度器,FIFO调度器,容量调度器(资源不够可以借,优先保证先进来的任务),公平调度器(也可以借,按缺额分配资源)
3)实际生产中:如果要求并行度比较高(中大型公司):公平调度器
如果要求并行度比较低(中小公司):容量调度器
4)默认几个队列:
默认一个default队列,需要用户创建,按照框架分:hive,spark,flink
提交一个递归死循环/rm -rf / 6.18,11.11
因此企业中会按照部门进行创建队列,降级使用
四、zookeeper
1、选举机制:半数选举机制
2、安装多少台:奇数台
3、10服务器安装多少zk:3台
20服务器安装多少zk:5台
50服务器安装多少zk:7台
100服务器安装多少zk:11台
200服务器安装多少zk:11台
zk台数越多:好处:可靠性高,坏处:效率低
4、常用命令:ls,get,create,delete,delete all
***Paxos算法和ZAB协议(扩展)
zookeeper底层使用的就是ZAB协议
***什么是CAP法则,zookeeper符合这个法则的那两个(扩展)
一致性(C),可用性(A),分区容错性(P)
zookeeper满足CP,在zookeeper其中一个节点挂掉之后重新选举之间无法使用,因此不满足可用性
***zookeeper选举机制:a.第一次选举:第一个和第二个来个先给自己投票,都不满足超过半数,进入等待,第三台来了前两台加第三台共三票,选举成功为leader
b.leader挂掉之后的重新选举:SID:服务器ID,和myid一样,ZXID:事务ID,用来标识一次服务器状态的变更,Epoch:每个Leader任期的代号,先比较Epoch,然后比较事务ID,最后比较myID
五、Flume(三件事)
1、组成
1)taildir sourse:a:断点续传,多目录b:对应版本:Apache1.7,cdh1.6产生 c.可能产生重复数据:可以加一个事务(不推荐,影响效率),也可以在下游处理,hive-dwd,redis,spark,flink
2)channel
a.file channel :基于磁盘。可靠性高,效率低(和钱有关)
b.memory channel:基于内存,可靠性低,效率高(日志文件)
c.kafka chanel:基于磁盘,可靠性高,效率高(下游是kafka)
3)hdfs sink:小文件
先控制大小在128m,然后控制时间30分钟,event个数禁止掉(0)
2、三个器
1)拦截器:ETL拦截器:json不完整的数据过滤掉,时间戳拦截器:零点漂移问题,数据落盘按照时间落盘,数据处理过程有延迟 自定义拦截器步骤:定义类,实现interceptor接口,重写4个方法,单event,多event,初始化、关闭,静态内部类builder,打包上传,配置文件
2)选择器
a.re... 把数据发送下一级所有通道
b.mu...把数据选择性发往指定通道
3)监控器
g 监控put,take,事务 尝试提交的次数,如果尝试次数远远大于成功次数,说明flume异常,增加flume内存(flume-env.sh4-6g),增加flume台数
日志服务器的配置:8g,16g
3、挂了及优化
source和sink有事务机制,不会丢失数据
channel如果是memory channel,有丢失数据的风险
小文件相关优化
增加flume内存(flume-env.sh4-6g),增加flume台数
六、kafka(重点:hive,kafka,spark,flink ,ck)
1、组成:生产者,broker,消费者,zk
2、安装多少台:2*(生产者峰值生产速率*副本数/100)+1 =3台
3、压测:得到生产者峰值生产速率,生产者峰值消费速率
4、副本:生产环境一般两个副本
副本多的好处:可靠性高,坏处:占用存储空间,影响通信效率
5、传输速率:100万日活*100条日志=1亿条数据
1亿/(24小时*3600s)= 1150条/s
一条日志(0.5k-2k) ->1k 1m/s
小峰值:中午,大峰值,晚上,是平时的20倍:20-30m/s
6:选择服务器:硬盘(固态,机械):kafka底层是顺序读写,两者顺序读写速度几乎一样,600m/s,所以选择机械硬盘
7、网络带宽:20-30m/s:千兆带宽:125m/s
8、cpu选择:越多越好,20核40线程的服务器,单独部署
9、内存:启动脚本里面可以调整内存:默认1g,生产环境调整为10-15g
10、分区数:增加分区可以增加并行度,峰值生产速率:20m/s,消费速率:40m/s
期望达到:100m/s,分区数= 100/(min(20,40)) = 5个分区
企业中一般设置3-10个分区,**只能增加,不能减少**
11、kafka是否做了监控:kafka eagle (manager,montor)
12、分区器:如果制定了分区,发送到指定分区,没有指定分区,制定了key,按照key的hashcode值%分区数进行分区,既没有指定分区,也没有 指定key,按照粘性分区
13、生产者如何提高吞吐量:
32m缓存 ==》64m
16k批次大小 ==》 32k
linger.ms ==》 0 =》 5-100ms
压缩:snappy,zstd,gzip
14、如何保证数据不丢:
acks:-1+ 副本数大于等于2+isr里面最小副本数大于等于2
15、保证数据不重复:
幂等性(pid,分区,序列号)+事务
acks:-1+ 副本数大于等于2+isr里面最小副本数大于等于2
16、保证数据有序:单分区数据有序
17、会不会乱序:inflight默认=5,缓存5个元数据
如果没有幂等性,设置inflight =1,如果开启了幂等性,inflight<=5 ,乱序的元数据不会落盘
18、kafka底层怎么高效读写:
1)kafka本身是集群,并行度高,可以增加分区
2)index稀疏索引,4k数据做一个索引
3)顺序读写600m/s
4)零拷贝+页缓存技术(重点)
19、删除数据策略:
delete(常用),压缩(保存最新)
20、消费者:主动拉取数据
21、消费策略:range(每个topic消费策略相同)
roundin(大的轮询,每个topic消费策略不同,避免数据倾斜)
粘性:出现故障后保证原先分区不动
topic数较少:粘性+range
topic数较大:粘性+roundin
22、触发再平衡条件
消费者会每隔3s和消费者组协调器通讯一次,如果通讯时间超过45s,会认为消费者挂掉了,就会把他的任务分配给别的消费者,
另一点:消费者消费一批数据超过5分钟还没消费完,也会认为挂掉了,触发再平衡
23、可以指定消费者消费位置:seek
24、可以按照时间指定消费位置
25、如何提高整个kafka的吞吐量
生产者:
32m缓存 ==》64m
16k批次大小 ==》 32k
linger.ms ==》 0 =》 5-100ms
压缩:snappy,zstd,gzip
broker:增加分区 ,对应的要增加消费者cpu核数
消费者:增加每批次处理的数据量,默认500 =》 1000-5000
最大数据量 默认50m =》 60m
26、kafka topic设置多少个合适
满足下一级消费者所有需求,同时也要适当聚合
27、传输大于1m的日志,会出现什么情况(重点)
kafka会卡住
kafka处理单条日志的上限:1m
28、默认保存时间:7天。生产环境:3天
29、kafka挂了:
1)重启(内存,磁盘,网络带宽)
2)误删:采用服役流程,先退役,再服役
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。