Please enable JavaScript.
Coggle requires JavaScript to display documents.
Hadoop (:radioactive_sign:2个进程之间的距离 (:moneybag:复制 (:explode…
Hadoop
-
:moneybag:节点
:one:NameNode
-
:radioactive_sign:目录结构(元数据,不能分割的数据)
:heavy_dollar_sign:作用
-
:two:DataNode出故障的时候,负责创建更多的副本block(恢复数据)
-
:four:文件会被打碎成blocks,分散存储到DataNode里面,所以NameNode要维护文件和Blocks以及Block和DataNode之间的联系(只存放在内存里,因为不用持久化维护)
:two:DataNode
:star:由于Hadoop自身的复制和特性保证了可靠性,所以不用做RAID
:moneybag:健康检查
:explode:每个DataNode定期都要向NameNode汇报,以保证DataNode都健康
-
-
-
:cherry_blossom:原理
-
:two:RM寻找负责人AppMaster
:one:找到可用的资源节点,由于每个节点都有节点管理器,所以就发给NodeManager,然后NodeManager创建出AppMaster
:warning:这里的NodeManager一般只有1个,而下面的NodeManager有多个.此外这里的NodeManager要启用的是AppMaster
:three:AppMaster执行job
:one:AppMaster请求ResourceManager,ResourceManager会告诉AppMaster选择资源信息
:three:AppMaster根据ResourceManager指示的节点,找他们的NodeManager
:two:转给yarn调度器,yarn调度器分配Container,在Container上启动AppMaster
:four:AppMaster创建多个记录跟踪进度,接收task的进度报告和完成报告
:five:检索input split,为每个split创建map任务和一定数量的reduce任务(如果job是个小任务的话,AppMaster直接在自己的节点上运行小job,一般就是input size<block size=>这种现象叫uber)
:six:AppMaster调用OutputCommitter的setupJob()方法,默认是FileOutputCommitter,主要是创建目录和临时工作目录
:star:客户在节点外,而rm和am是节点,之间有远程进程调用(RPC)
-
:key:关键
:one:存储
-
:wrench:查看文件的存储情况
:explode:浏览器访问9870端口,菜单栏里的"Utilities"里浏览文件系统,然后点击自己的文件就行了
:moneybag:参数
:one:块大小
:bread:假如1个文件9.3M,而块大小设置为2M,那么总共分成5份.如果复制的份数是2的话,就总共5*2=10
份,每1份就是1个block,然后1个block会存在2个节点上
-
-
-
-
-
:two:运算
:key:MapReduce
:one:Map
:moneybag:方法
:one:setup
:explode:1个节点执行map函数前执行的的方法,1个节点1个block只执行1次setup
-
-
-
-
:explode:大数据的文本=><行号,一行的字符串>=><行号对应的信息,行字符串对应的信息>=><行号对应的信息,[多行字符串对应的信息]>=><行号对应的信息,最大值>
-
:warning:输出
:bread:MapReduce里的输出全都在DataNode的hadoop/logs/userlogs/.../stdout里面,因为在数据节点上执行
-
-
-
-
-