北京尚学堂|百战杰出班学员学习
发布时间:2019-08-30来源:http://www.dw0513.com 编辑:平山新闻网
广告位置(首页一通--图文)
来自尚学堂百战杰出班学员知乎Strive追逐圈外人的学习分享。

1.HDFS写文件的轨范:
1.1:Client向NameNode提交上传某文件的申请。
1.2:NameNode返反响应给Client,同意上传文件的申请。
1.3:Client向NameNode申请子节点DataNode。
1.4:NameNode响应给Client它的子节点DataNode。
1.5:Client向DataNode提交申请成立传输通道。
1.6:DataNode依次序顺序序响应连接
1.7:Client向DataNode上传一个Block,DataNode1向其他子节点冗余文件。
2.HDFS读取文件的轨范
1.1:Client向NameNode哀求下载某文件。
1.2:NameNode向Client返回文件的元数据。
1.3:Client向DataNode1哀求访谒读数据Block_1.
1.4:DataNode1向Client传输数据。
1.5:Client向DataNode2哀求访谒读数据Block_2.
1.6:DataNode2向Client传输数据。
3.Hadoop的shuffle历程
1.Map真个shuffle
Map端会措置惩罚惩罚输入数据并孕育产生中央功效,这其中央功效会写到本地磁盘,而不贰贰是HDFS。每个Map的输出会先写到内存缓冲区中,当写入的数据到达设定的阈值时,系统将会启动一个线程将缓冲区的数据写到磁盘,这个历程叫做spill。
在spill写入之前,会先进行二次序顺序序排序,首先按照数据所属的partition进行排序,然后每个partition中的数据再按key来排序。partition的目是将记录分别到不贰贰同的Reducer上去,以期望能够到达负载均衡,以后的Reducer就会按照partition来读取本身对应的数据。接着运行combiner(假如设置了的话),combiner的素质也是一个Reducer,其目的是对将要写入到磁盘上的文件先进行一次序顺序序措置惩罚惩罚,这样,写入到磁盘的数据量就会减少。末了将数据写到本地磁盘孕育产生spill文件(spill文件糊口生涯在{mapred.local.dir}指定的目录中,Map任务结束后就会被删除)。
末了,每个Map任务可能孕育产生多个spill文件,在每个Map任务完成前,会通过多路归并算法将这些spill文件归并成一个文件。至此,Map的shuffle历程就结束了。
2.Reduce真个shuffle
Reduce真个shuffle紧张包孕三个阶段,copy、sort(merge)和reduce。
首先要将Map端孕育产生的输出文件拷贝到Reduce端,平山新闻网,但每个Reducer如何知道本身应该措置惩罚惩罚哪些数据呢?
因为Map端进行partition的时候,实际上就相称于指定了每个Reducer要措置惩罚惩罚的数据(partition就对应了Reducer),所以Reducer在拷贝数据的时候只需拷贝与本身对应的partition中的数据即可。
每个Reducer会措置惩罚惩罚一个或圈外人多个partition,但需要先将本身对应的partition中的数据从每个Map的输出功效中拷贝过来。
接下来就是sort阶段,也成为merge阶段,因为这个阶段的紧张事情是执行了归并排序。
从Map端拷贝到Reduce真个数据都是有序的,所以很适合归并排序。
终极在Reduce端生成一个较大的文件作为Reduce的输入。
末了就是Reduce历程了,在这个历程中孕育产生了终极的输出功效,并将其写到HDFS上。
4.fsimage和edit的区别?
当NN,SN要进行数据同步时叫做checkpoint时就用到了fsimage与edit,fsimage是糊口生涯最新的元数据的信息,当fsimage数据到必然的巨细事会去生成一个新的文件来糊口生涯元数据的信息,这个新的文件就是edit,edit会回滚最新的数据。
5.简朴说一下hadoop的map-reduce模型
首先map task会从本地文件系统读取数据,转换成key-value形式的键值对集结,使用的是hadoop内置的数据类型,如Text,Longwritable等级。
将键值对集结输入mapper进行业务措置惩罚惩罚历程,将其转化成需要的key-value再输出。
之后会进行一个partition分区操纵,默认使用的是hashpartitioner,可以通过重写hashpartitioner的getPartition要领来自界说分区轨则。
之后会对key进行sort排序,grouping分组操纵将不异key的value合并分组输出,在这里可以使用自界说的数据类型,重写WritableComparator的Comparator要领来自界说排序轨则,重写RawComparator的compara要领来自界说分组轨则。
之落伍行一个combiner归约操纵,就是一个本地的reduce预措置惩罚惩罚,以减小shuffle,reducer的事情量。
Reduce task会用过网络将各个数据收集进行reduce措置惩罚惩罚,末了将数据糊口生涯或圈外人显示,结束整个job。
6.运行hadoop集群需要哪些守护进程?
DataNode,NameNode,TaskTracker和JobTracker都是运行Hadoop集群需要的守护进程。
7.hadoop的TextInputFormat感化是什么,如何自界说实现?
InputFormat会在map操纵之前对数据进行两方面的预措置惩罚惩罚。
1.是getSplits,返回的是InputSplit数组,对数据进行Split分片,每片交给map操纵一次序顺序序。
2.是getRecordReader,返回的是RecordReader东西,对每个Split分片进行转换为key-value键值对格局通报给map常用的InputFormat是TextInputFormat,使用的是LineRecordReader对每个分片进行键值对的转换,以行偏移量作为键,行内容作为值。
3.自界说类继续InputFormat接口,重写createRecordReader和isSplitable要领在createRecordReader中可以自界说分隔断绝分手符。
8.hadoop和spark都是并行计较,那么他们有什么不异和区别?
两圈外人都使用mr模型来进行并行计较,hadoop的一个功课称为job,job里面分为map task和reduce task,每个task都是在本身的进程中运行的,当task结束时,进程也会结束。
Spark用户提交的任务称为application,一个application对应一个SparkContext,app中存在多个job,没触发一个action操纵就会孕育产生一个job。
这些job可以并行或圈外人串行执行,每个job有多个stage,stage是shuffle历程中DAGSchaduler通过RDD之间的依靠干系分别job而来的,每个stage里面有多个task,组成taskset有TaskSchaduler分发到各个executor中执行,executor的生命相近期是和application一样的,纵然没有job运行也是存在的,所以task可以快速启动读取内存进行计较的。
Hadoop的job只有map和reduce操纵,表达能力对照欠缺而且在mr历程中会反复的读写hdfs,造成大量的io操纵,多个job需要本身治理干系。
Spark的迭代计较都是在内存中进行的,API中供给了大量的RDD操纵join,groupby等级,而且通过DAG图可以实现良好的容错。
9.为什么要用flume导入hdfs,hdfs的架构是怎样的?
Flume可以及时的导入数据到hdfs中,当hdfs上的文件到达一个指定巨细的时候会形成一个文件,或圈外人超时所指按时间的话也形成一个文件。
文件都是存储在datanode上的,namenode存储着datanode的元数据信息,而namenode的元数据信息是存在内存中的,所以当文件切片很小或圈外人许多的时候会卡死。
10.MR措施运行的时候会有什么对照常见的问题?
比如说功课中大部分都完成了,但是总有几个reduce一直在运行。
这是因为这几个reduce中的措置惩罚惩罚的数据要远弘远于其他的reduce,可能是对键值对任务分别的不贰贰均匀造成的数据倾斜。
解决的要领可以在分区的时候从头界说分区轨则对付value数据许多的key可以进行拆分、均匀打散等级措置惩罚惩罚,或圈外人是在map真个combiner中进行数据预措置惩罚惩罚的操纵。
11.简朴说一下hadoop和spark的shuffle历程
Hadoop:map端糊口生涯分片数据,通过网络收集到reduce端。
Spark:spark的shuffle实在DAGSchedular分别Stage的时候孕育产生的,TaskSchedular要分发Stage到各个worker的executor,减少shuffle可以提高机能。
12.hive中存放的是什么?
表。
存的是和hdfs的映射干系,hive是逻辑上的数据货仓旅馆,实际操纵的都是hdfs上的文件,HQL就是用SQL语法来写的MR措施。
13.Hive与干系型数据库的干系?
没有干系,hive是数据货仓旅馆,不贰贰能和数据库一样进行及时的CRUD操纵。
是一次序顺序序写入多次序顺序序读取的操纵,可以当作是ETL的工具。
14.Flume的事情登科时是什么?
焦点观念是agent,里面包孕source,channel和sink三个组件。
Source运行在日志收集节点进行日志收罗,之后姑且存储在channel中,sink卖力将channel中的数据发送到目的地。
只有发送告成channel中的数据才会被删除。
首先书写flume配置文件,界说agent、source、channel和sink然后将其组装,执行flume-ng呵责吁。
15.Hbase行键列族的观念,物理模型,表的设计原则?
行键:是hbase表自带的,每个行键对应一条数据。
列族:是创建表时指定的,为列的集结,每个列族作为一个文件单独存储,存储的数据都是字节数组,此中数据可以有许多,通过期间戳来区分。
物理模型:整个hbase表会拆分成多个region,每个region记录着行键的起始点糊口生涯在不贰贰同的节点上,盘问时就是对各个节点的并行盘问,当region很大时使用.META表存储各个region的起始点,-ROOT又可以存储.META的起始点。
Rowkey的设计原则:各个列族数据平衡,长度原则、相邻原则,创建表的时候设置表放入regionserver缓存中,制止主动增长和时间,使用字节数组取代string,最大长度64kb,最好16字节以内,按天分表,两个字节散列,四个字节存储时分毫秒。
列族的设计原则:尽可能少(凭据列族进行存储,凭据region进行读取,不贰贰须要的io操纵),每每和不贰贰每每使用的两类数据放入不贰贰同列族中,列族名字尽可能短。
16.请列出正常的hadoop集群中hadoop都分袂需要启动 哪些进程,他们的感化分袂都是什么,请尽量列的具体一些。
namenode:卖力治理hdfs中文件块的元数据,响应客户端哀求,治理datanode上文件block的均衡,维持副本数量
Secondname:紧张卖力做checkpoint操纵;也可以做冷备,对必然范畴内数据做快照性备份。
Datanode:存储数据块,卖力客户端对数据块的io哀求
Jobtracker :治理任务,并将任务分配给 tasktracker。
Tasktracker: 执行JobTracker分配的任务。
Resourcemanager、Nodemanager、Journalnode、Zookeeper、Zkfc
17.请说明hive中Sort By、Order By、Cluster By,Distribute By各代表什么意思?
order by:会对输入做全局排序,因此只有一个reducer(多个reducer无法保证全局有序)。只有一个reducer,会导致当输入范围较大时,需要较长的计较时间。
sort by:不贰贰是全局排序,其在数据进入reducer前完成排序。
distribute by:凭据指定的字段对数据进行分别输出到不贰贰同的reduce中。
cluster by:除了具有 distribute by 的成果外还兼具 sort by 的成果。
18.HBase简朴读写流程?
读:
找到要读数据的region地址的RegionServer,然后凭据以下挨次序顺序序进行读取:先去BlockCache读取,若BlockCache没有,则到Memstore读取,若Memstore中没有,则到HFile中去读。
写:
找到要写数据的region地址的RegionServer,然后先将数据写到WAL(Write-Ahead Logging,预写日志系统)中,然后再将数据写到Memstore等级候刷新,回覆客户端写入完成。
19.HBase的特点是什么?
(1)hbase是一个漫衍式的基于列式存储的数据库,基于hadoop的HDFS存储,zookeeper进行治理。
(2)hbase适合存储半布局化或非布局化数据,对付数据布局字段不贰贰够确定或圈外人混乱无章很难按一个观念去抽取的数据。
(3)hbase为null的记录不贰贰会被存储。
(4)基于的表包孕rowkey,时间戳和列族。新写入数据时,时间戳更新,同时可以盘问到以前的版本。
(5)hbase是主从布局。Hmaster作为主节点,hregionserver作为从节点。
20.请描述如何解决Hbase中region太小和region太大带来的功效。
Region过大会产生多次序顺序序compaction,将数据读一遍并写一遍到hdfs上,占用io,region过小会造成多次序顺序序split,region会下线,影响访谒处事,调解hbase.heregion.max.filesize为256m。
更多科技一手咨询,接待关注!