第十七次早课

第十七次早课:

1、HDFS的读写流程
HDFS读流程:
    1.Client通过FileSy.open(filePath)方法,去与NameNode进行RPC通信,返回该文件的部分或全部的block列表(也包含该列表个block的分布与DataNode地址的列表),也就是返回FSDataInputStream对象。
    2.Client调用FSDataInputStream对象的read()方法。
        a.去与第一块的最近的DataNode进行read,读取完后,会check,假如successful,会关闭与当前DataNode通信;(假如check fail,会记录失败的块+DataNode信息,下次就不会读取,那么会去该块的第二个DataNode地址读取)
        b.然后去第二个块的最近的DataNode上的进行读取,check后,会关闭与此DataNode的通信。
        c.假如block列表读取完了,文件还未结束,那么FileSystem会从NameNode获取下一批的block的列表。(当然读操作对于Client端是透明的,感觉就是连续的数据流)
    3.Client调用FSDataInputStream.close()方法,关闭输入流。
HDFS写流程:
    1.Client调用FileSystem.create(filePath)方法,去与NameNode进行RPC通信,check该路径的文件是否存在以及有没有权限创建该文件,假如ok,就创建一个新文件,但是并不关联任何block,返回一个FSDataOutputStream对象;(假如not ok,就返回错误信息,所以写代码要try-catch)
    2.Client调用FSDataOutputStream对象的write()方法,会将第一块写入第一个DataNode,第一个DataNode写完传给第二节点,第二个写完传输给第二个节点,第二个写完传给第三节点,当第三个节点写完返回一个ack packet给第二个节点,第二个返回一个ack packet给第一个节点,第一个节点返回一个ack packet给FSDataOutputStream对象,意思标识第一个块写完,副本数为3,然后剩余的块依次这样写;(当然写操作对于Client端也是透明的)
    3.当向文件写入数据完成后,Client调用FSDataOutputStream.close()方法,关闭输出流,flush缓存区的数据包。
    4.再调用FileSystem.complete()方法,告诉NameNode节点写入成功。
2、副本放置策略
第一副本:放置在上传文件的DataNode上;如果是集群外提交,则随机挑选一台磁盘不太慢、CPU不太忙的节点上。
第二副本:放置在于第一副本不同的机架的节点上。
第三副本:与第二副本相同机架的不同节点上。
如果还有更多的副本:随机放在节点上。
3、mr提交yarn流程?
1.用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
2.ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通信,要求它在这个Container中启动应用程序的ApplicationMaster。
3.ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7;
4.ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源;
5.一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。
6.NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过启动该脚本启动任务。
7.各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。
8.应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。
    当用户向YARN中提交一个应用程序后,YARN将分为两个阶段运行该应用程序:
        a.第一个阶段是启动ApplicationMaster;
        b.第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行完成。
4、yarn的调优参数分为哪两块?
yarn的调优分为内存(memory)和CPU两块。
5、container内存设置最大不能超过什么?分为内存和CPU。
容器内存最大不能超过NM进程设置的resource的内存
6、yarn的core我们是用的物理core还是虚拟core
yarn里面 是使用虚拟core,简称vcore
7、yarn的web端口多少?
8088
8、突然有一天机器上,我之前敲的命令忘记了,怎么办?
history
9、进程 端口号 这两个命令是什么
进程:ps -aux | grep xxx
端口号:netstat -nlp|grep xxx
10、杀死所有的xxx进程
kill -9 $(pgrep -f xxx)
11、关于jps,假如发现是不可用信息,那么我们该怎么做
先查看,之后杀死此信息
12、tar解压 和压缩参数
解压:tar -zxvf xxx
压缩:tar -cxvf xxx
13、tar解压 一般有个问题我们要注意 是什么
用户、用户组和权限
14、搜索某个东西
find / -name "*xxx*"
15、写了一个shell脚本,然后没权限不能执行,加什么权限
chmod +x
16、R参数的两个命令 请记住,我只讲过两个R参数的命令
chown chmod
17、后台运行哪些命令
screen、&、nohup
18、按什么快捷键从screen一个会话退出来
ctrl + a + d
19、su sudo区别是什么
su:切换用户
sudo:获取临时权限
20、我想要切换到家目录 有哪几种命令
cd 
cd ~
21、怎样给一个用户sudo权限
修改/etc/sudoers文件内容
22、MySQL增删改查语法
增:insert into 数据库名.表名(列名) values(对应的值);
删:delete from 数据库名.表名;
改:update 数据库名.表名 set 字段名称=新的值;
查:select 字段 from 数据库名.表名;
23、分组语法
group by
select 列1,列2……,sum(memory) from user group by 列1,列2…… having sum(memory) > 3000
24、排序语法
order by xxx desc | asc
例如:select * from user order by cretime;
25、left join 哪个表数据最全?左表ID为1的1条,右表ID为1 是三条,请问结果几条?
左边的表最全,最后的结果是三条
26、MySQL的分组排序那个案例有谁做好了?求每个班级的总成绩前三名
SELECT * FROM (
SELECT name,class,sum(chinese+math+english) cengji 
from aaa GROUP BY name,class
) a 
WHERE 3>(
SELECT COUNT(*) FROM (
SELECT name,class,SUM(english+chinese+math) cengji 
FROM aaa GROUP BY name,class) b 
WHERE b.class=a.class and b.cengji>a.cengji) 
ORDER BY a.class,a.cengji DESC;
27、namenode存储是什么?
NameNode存储:文件系统的命名空间
    a.文件名称
    b.文件目录结构
    c.文件的属性【权限,创建时间,副本数】
    d.文件对应哪些数据块 -->数据块对应哪些DataNode节点
        【blockmap当然NameNode节点不会持久的存储这种映3射关系,是通过集群在启动和运行时,DataNode定期发送blockReport给NameNode,以此NameNode在内存中来动态维护的这种映射关系】

你可能感兴趣的:(第十七次早课)