Hadoop、HDFS、Mapreduce

# [Hadoop安装在集群上后的结构](https://www.bilibili.com/video/BV1yW411S7pX?from=search&seid=3204228881718086816) ![屏幕截图 20201207 202725.png](https://cos.easydoc.net/17082933/files/kifqvu0e) ![屏幕截图 20201207 202740.png](https://cos.easydoc.net/17082933/files/kifqw7fj.png) # [HDFS架构和原理](https://www.bilibili.com/video/BV1LK41157HK?from=search&seid=1500946004279972484) # [MapReduce的大致工作原理](https://www.bilibili.com/video/BV1CW411S79e?t=919) ![1093860201705261734437471456396091.png](https://cos.easydoc.net/17082933/files/kifqvxkw.png) ![屏幕截图 20201208 165452.png](https://cos.easydoc.net/17082933/files/kifr01fr.png) [Hadoop的JVM重用](https://blog.csdn.net/javastart/article/details/76724271) > JVM重用技术不是指同一Job的两个或两个以上的task可以同时运行于同一JVM上,而是排队按顺序执行。 [流式计算(五)-Flink核心概念](https://www.cnblogs.com/xxbiao/p/12101216.html) > ++09-任务插槽(task slot)和资源++ > >每个工人(TaskManager)就是一个JVM进程(process),能通过独立线程执行一到多个子任务,子任务的可接收数量就叫任务插槽(task slot),至少得有1个。任务插槽代表TaskManager内的一组固定的资源集,一个TaskManager所有的任务插槽都会均分其控制的内存,比如有3个插槽的TaskManager ,各插槽被分配1/3其管理的内存,这样的好处是为了避免子任务间的资源竞争。但目前这里不涉及CPU资源,仅是内存隔离。 > >通过调整任务插槽数,可以控制子任务的隔离度。比如TaskManager只有一个任务插槽,即意味着每个任务组运行在独立的JVM(可运行在容器内)中,有多个任务插槽则意味着共享JVM内TCP连接(多路复用方式)和心跳消息,可能还共享数据集和数据结构,从而减少总体负载。 [MapReduce(4)—— TaskTracker的任务启动介绍](https://zhuanlan.zhihu.com/p/136445323) > TaskTracker接收到新的任务之后,借助JvmManager为该任务启动一个新的JVM或者将该任务分配给已有的JVM执行。对正在运行的JVM来说,TaskTracker是一个RPC Server, 每个JVM从TaskTracker处获取需要执行的任务,并通过RPC通信来更新任务的运行信息。由于每个JVM启动都需要耗费一定的资源,所以我们需要限制启动的JVM的个数,但如果只启动一个JVM又降低了整个系统的作业吞吐。JVM的启动、杀死以及复用由JvmManager来负责。 > >![image.png](https://cos.easydoc.net/17082933/files/kifr3phl.png)