应用场景+使用语法
1.linux
1.Linux的五条命令和作用
1.ln -s 软连接
2.yum install -y 下载
3.监控 tail -F
4。别名 alias
5.grep 过滤
2.环境变量的位置
所有用户环境变量:/ect/profile
个人环境变量: ~/.bashrc
3.无法启动别名的原因
1.未配置当前别名 可用 which is alias_name 查看
2.未使别名生效,未配置环境变量 可用whereis alias_name 查看
4.查端口
1.ps -ef | grep dip
2.netstat -nlp|grep httpd
5.强制退出正编辑的文件再次编辑如何处理
例: 1.log
删除1.log 当前目录下 .1.log 文件
6.查看文件大小 文件: ls -h
du -h
查看文件夹大小:du -h
7.查看 内存,磁盘,负载 大小
内存:free -h
磁盘: df -h
负载: top
8.解决网卡丢失
service NetworkManager stop
chkconfig NetworkManager off
systemctl restart network
9.内网ip
ip -a
inconfig
10.空文件
echo /dev/null >xxx.log
vim xxx.log
gg+dG
2.shell
1.什么是shell
shell是用Linux命令编辑成的普通文件
2.获得文本外成绩参数,分为大于等于90,大于等于80,其他三个阶级
score="$1"
if[ "$1" -ge 90 ];then
echo "good"
elif [ "$1" -ge 80];then
echo "emmm"
else
echo "hehe"
fi
3.将 q.log中的 name="zhangsan,lisi,zhaoliu"拆分成数组
4.取出1.log文件第二到最后一行和第一,二列
第二到最后一行: cat 1.log | awk 'if{NR!=1},2{print}'
第一,二列: cat 1.log | wak '{print $1,$2}'
5.将1,log文件中所有/data/log替换成 /data/spark
sed -i 's#/data/log#/data/spark#g' 1.log
6.如何debug
1.在文本内容里加入 #!/bin/bash -x
2.在启动中 sh -x 1.log
7.$0:文件名
$1:第一个文件
$#:所有变量的个数
$$:将所有变量变成字符串进行输出
3.mysql
1.什么是mysql
MySQL是数据库系统,用户存储、组织和访问表中的数据
2.在对表中数据更改或删除是应注意什么
1.where 对某个条件数据进行变更
2.无 where 对整个表进行变更
3.数据清洗(nvl)
1.ifnull
2.colease
3.where col_name is not null
4.sql的三大类型
1.ddl 数据定义语言: create drop alter
2.dml 数据操作语言: insert select updat delete
3.dcl 数据控制语言
5.多表联查的种类有哪些有什么不同
1.左链接: left join
以左表为基准,有就拼接没有就是null
2.右链接:right join
以右表为基准,有就拼接没有就是null
3.内链接: join
左,右表都有的数据进行拼接
4.全链接 full join
左,右表所有数据进行拼接,有就拼接没有就是null
6.合并表的方法和不同
1.union 去重
2.union all 不去重
7.什么是维度,什么是指标,最大,最小,统计,平均聚合函数,别名,分组
1.维度:用过来区分数据的性质
2,指标:用过来描述数据的值
3. max(age),min(age),cont(age),avg(age)
4.max(age) as max_alias
5.group by 维度
8.drop 删除表
delete 删除数据库
truncate 清空表
4.hadoop
1.hadoop三大框架及作用
1.分布式存储(HDFS)
namenode:1.指挥数据存储
2.接受dn blockreport
datanode:1.负责数据存储 block
2. block
3.心跳
3.client
seconderynamenode:1.辅助namenodegongz
2.sm不是热备
3.高可用
2.分布式计算框架(MapReduce)
3.资源调度框架(YARN)
resourcemanager:指挥资源分配
nodemanager:真正的资源
2.HDFS读流程
1.Client 调用 FS.ope与NN通信,
NN以FSDataInputS返回部分或全部的block列表
2.Client调用FSDataInputS.read
去第一个块最近的DN读取
读取完成,check,若ok关闭DN通信
读取失败,记录DN和block
下次不再从这个节点读取,找第二个节点
3.当block读取完,文件未读取完
则调用下一批block
4.Client调用FSDataInputS.close关闭输入流
3.HDFS写流程
1.Client调用FS.create方法和nn通信
,检查是否路径文件是否存在,
检查是否有权限去创建
检查通过创建文件
2.nn根据文件大小,块大小,副本数参数】
计算块的数量,和存储DN位置,
返回给FSOutS
3.Client调用FSOutS.write方法
将第一个块的第一个副本写在第一个DN上
在第二个DN写第二副本
在第三个DN写第三副本
4.当第三个副本写完,返回一个ack包给DN2节点
DN2也写完返回一个ack包给DN1
DN1也写完返回一个ack包给FSOuts
5.重复流程直到所有块写完,client调用
FSOutS的close,告诉NN,文件写完
4.yarn流程
1.mr程序提交到客户端节点
2.yarnRunner向rm申请一个 Application
3.rm将路径返回给yarnRunner
4.将资源提交到hdfs
5.申请运行mrAppmaster
6.rm将请求以task发送到一个NM上
7.nm创建容器Container,产生mrAppmaster
8.容器从hdfs拷贝资源
9.mrAppmasster申请运行MapTask资源
10.rm分配任务给个其他nm,并进行创建容器
11。mr向nm发送启动脚本,rm运行
12.MapTask运行完毕,向rm申请容器,运行ReduceTask
13.ReduceTask 从MapTask获取数据
14.运行完毕,mr向rm申请注销
5.Mapreduce流程
1.数据输入input
2.map阶段:映射,写入缓存
3.shuffle:1.map阶段 1拆分,合并
reduce阶段 1.再次拆分,分区
map的输出作为rduce的输入
把某些kv按规律拆分
4.reduce : 规约:文件合并
5.数据输出:putput
6.yarn的调度器
作用:job如何调度
1.fofo 单行
2. 容量调度器
3. 公平调度器
6.副本放置位置
1.第一个副本
1.放置在client的DN上
2.client不在DN上,随机选择一个DN
2.第二个副本
放置在第一个副本不同机架的DN上
3.第三个副本
第二个副本相同机架不同DN
4.4个以上
随机放置
7.hdfs安全模式的发生和对业务影响和命令
1.发生
1.启动hdfs
2.hdfs故障
3.主动进入,维护
2.影响 1.可读不可写
3.命令:hadoop dfsadmin -safemode
8。block丢失,查看,解决
1.查看 hdfs fsck \
2.解决 1.自恢复(多副本,丢失少)6h
2.hdfs debug recoverless -/path file_name
9.reduck task个数
1.mr 用户决定
2.默认为1
3.reduck task个数=文件输出个数
4.个数 按照文件大小 (134,217,728 =》 128G)
3.hdfs.rollCount => 按照hdfs文件数据条数 (条)
5.sink Processors 的负载和均衡的含义,
1.负载:当主输出口出现问题是由副输出口代替,
当主输出口恢复后,继续由主输出口输出
2.均衡:配置多个并列的输出口,有轮换 和随机两种模式
可以减轻 sink压力
6.主要监控那个组件,原因
1.channle
1.channle 平稳后 数据变少 source没有新数据或source出问题
2.channle 平稳后 数据变多 sink出问题
7.调优
1.sql 3个方面
1.数据量
2.数据存储格式 行式存储,列式存储
3. sql 查询性能
8.数据压缩
9.sql
1.查询性能
1.参数
2.数据倾斜
1.fetch
2.map shuffle reduce
按某些key 按照一定规则进行数据分发【数据倾斜】
7.sqoop
1.sqoop是什么
数据库通信工具,主要用于在Hadoop (Hive)与传统的数据库 (mysql、postgresql...)间进行数据的传递。
只有reduce
2.Sqoop导入导出Null存储一致性问题
--null-non-string
--null-string
3.table 没有主键
1.--split-by =》指定mapreduce 按照哪个字段 进行切片
2.-m 1
4.Sqoop底层运行的任务是什么
只有Map阶段,没有Reduce阶段的任务。默认是4个MapTask
5.筛选数据范围+字段
--where
--columns
6. 指定作业名字
mapreduce——name
7.分隔符
fileld_by
8.修改 目标路径
默认sqoop mysql => /user/hadoop/
8.zk
1.什么是zookeeper
分布式协调服务
2.临时节点和永久节点的区别
1.节点创建好之后 当前session有效 关闭session 节点就会消失
2.节点创建好之后 可以永久存在,下面可以存放子节点 ephemeralOwner = 0x0
3.能否收到每次节点变化的通知
点数据的更新频率很高的话,不能;
当一次数据修改,通知客户端,客户端再次注册watch,在这个过程中,可能数据已经发生了许多次数据修改
4.ZooKeeper使用到的各个端口
Leader服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader;
Follower与Leader交换信息的端口。