20211101 文档知识点总结(持续更新)

先理一下已经学了哪些,不需要重新看视频,直接看文档就好。很多东西了解即可,面试不会问的,我不知道hadoop的优势我就不能工作了吗。

 

第一章 hadoop入门

1.hdfs架构:是一个文件系统,包括

  namenode:用来存文件的名字、权限等元数据的节点

   datanode:存储块数据的节点

        secondaryNamenode:隔一段时间存一下元数据作为备份

2.Yarn架构:负责管理系统资源 如cpu等,比如一个任务需要分配多少资源。

  ResourceManager:其实我感觉就是项目总监。 首先RM响应客户的请求,然后监控NodeManager的资源情况,根据任务的需要分配一个App Master,你可以理解为派一个小弟去协调(做这个NodeManager的项目经理),你就管这一个NM上面的协调工作。

    NodeManager:跟总监汇报资源情况,接受项目总监和项目经理的命令,说白了你的资源就是为项目服务的。

          AppMaster:项目经理小弟,就负责那一个NM上面的任务协调,需要什么资源拿什么资源。

           Container:你要锤子要斧子,要鸡蛋还是要胡萝卜,要的东西太多,不好描述。直接给你标记个1号麻袋,你要什么都拿麻袋装,到时候把1号麻袋还我就行。

 

3.MapReduce架构:是一个分而治之的计算框架,框架说白了就是已经做好了骨架,你来填核心内容。分为:

  Map:说白了就是把很多任务,切分成很多份发给很多机器去执行,来增加速度。

  Reduce:接受很多机器的统计结果,进行一个汇总。比如把每个区的结果汇总在一起才是北京市的统计结果。

 

4.大数据生态

 Sqoop:hadoop和hive《---------》关系型数据库,两者间数据的互相导入。

Flume:日志收集

kafka:分布式订阅消息系统

storm:连续计算,以流的形式输出给用户

spark:基于内存的计算框架

Flink:也是内存计算框架,用于实时计算

Oozie:管理hadoop作业的工作流程调度系统

HBase:分布式、面向列的数据库,适合存储非结构化数据!

Hive:数据仓库工具,可以将结构化的数据文件映射为数据库表,并提供简单的sql查询功能,本质是将sql转化为mapreduce任务进行运行。优点是学习成本低。

Zookeeper:针对分布式系统的可靠协调系统,提供功能包括配置维护、名字服务、分布式同步、组服务等。

 

5.hadoop搭建:

这个完全按照文档搭建的分布式,我已经搭建好了,就三台。

运行下Jps就知道怎么部署的了,hdfs+yarn+mapreduce,不过我没部署zookeeper好像。

 

 第二章 hdfs

hdfs适合什么?不适合低延时数据访问;不适合存大量小文件;一次写入,多次读出;不支持文件修改,只支持追加;

 

1.hdfs文件块大小(面试重点)

默认大小hadoop2.x版本是128M,合理的数值设置取决于磁盘传输速率:寻址时间为传输时间的1%。

2.熟练使用hdfs shell命令

3.hdfs客户端开发

(1)hadoop依赖包、设置好hadoop_home和path环境变量----》这里之所以没用Maven是因为还需要加一些winutils。--》这里得以视频为准,不能以文档。

(2)配置maven:junit、hadoop-client、log4j,强调下是导入hadoop-client,模拟hadoop客户端。

 (3)写hdfs程序,调用hdfs api。 

套路化的东西。

4.熟悉hdfs API

5.hdfs数据流:上传数据其实很简单,客户端发起上传请求,namenode响应同意,然后客户端分片之后上传第一个块,namenode反馈在dn1-3这三个节点上存第一个块,然后客户端向dn1-3建立一条管道,客户端传给dn1,dn1传给dn2,dn2传给dn3。

读数据更简单,从namenode获取一个文件所有块的存储位置,然后依次从位置获取数据块。

6.Namenode和SecondaryNameNode

namenode更新元数据是在内存中,但内存数据断电即失,因此需要备份到磁盘上,但是如果边更新 边备份到FsImage效率就很低。namenode只需要记录客户端最新的一段修改,也就是edits log,这种记录的速度特别快。

秘书SNN负责把最新的一段修改Editslog,合并到FsImage备份上,就专门做这个事儿因为恨耗时。会定期询问namenode是否合并。

 7.datanode工作机制(567都是面试重点,不过我想先略过,因为我觉得死记没啥用)

 

第三章 Mapreduce

有三种提交job来测试的方式:1.win本地测试  2.打好jar包上传给集群测试  3.本地运行程序,程序中设置好jar包地址自动提交集群

【今天最大收获是把第三种给跑通了】

1.主类里面 job.setJar 要设置好jar包位置

2.run-Edit configurations里面要写对参数

3.其次metainf要和jar包在同一个目录下

4.hdfs里面的用户要授权

 

 

 

 

 

 

   

 

posted @ 2021-11-01 18:01  写代码是唯一安静独处  阅读(35)  评论(0编辑  收藏  举报