2017.12.22练习

1.HDFS的读写流程
HDFS读流程:
    1.Client通过File.open(filepath)方法,与NameNode进行RPC通信,返回该文件的部分或全部的block列表(也包含该列表的block的分布与DateNode地址的列表),也就是返回FSDateInputStream对象
    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.副本放置策略
第一副本:放置在上传文件的DateNote上,如果是集群外提交,则随机挑选一台磁盘不太慢,cpu不太忙的节点上
  第二副本:放置在第一副本不同的机架的节点上
  第三副本:与第二副本相同机架的不同节点上
  如果还有更多副本,随机放在节点上
3.mr提交yarn流程(yarn架构设计)
1.用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
 2.ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通信,要求它在这个Container中启动应用程序的ApplicationMaster。
 3.ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~74.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端口是多少
hdfs:50070
  yarn: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 -czvf xxx
13.tar解压一般有一个问题需要我们注意,请问是什么
用户 用户组权限问题
14.搜索某个东西
find / -name "*xxx*"
15.写了一个shell脚本,发现没权限执行,需要添加什么权限
chmod +x
16.R参数的两个命令,我们讲过两个R参数的命令
chmod chown
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(对应的值)
 删除:deleter from 数据库名.表名
 修改:update 数据库名 set 字段名称=新值
 查询:select 字段 from 数据库名.表名
23.分组语法
group by
 select 列名 sum(memory) from user group by1,列2 having sum(memory) > 3000
24.排序语法
order by xxx asc/desc
  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存储:文件系统的命名空间
  文件名称
  文件目录结构
  文件的属性(权限,创建时间,副本数)
  blockmap中NameNode节点不会持久的存储这种映射关系,是通过集群在启动和运行时,DateNode定期发送blockReport给NameNode,以NameNode在内存中来动态维护这种映射关系
若泽大数据交流群:671914634
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值