Apache Hadoop是一套用于在由通用硬件构建的大型集群上运行应用程序的框架,狭义上是Hadoop指的是Apache软件基金会的一款开源软件(用java语言实现),允许用户使用简单的编程模型实现跨机器集群对海量数据进行分布式计算处理
Hadoop核心组件,Hadoop广义上指生态圈。
Hadoop HDFS(分布式文件存储系统):解决海量数据存储;
Hadoop YARN(集群资源管理和任务调度框架):解决资源任务调度,是Hadoop的资源管理器;
Hadoop MapReduce(分布式计算框架):解决海量数据计算。(读取慢有弊端,导致企业一线不再直接使用MapReduce进行编程处理)。
MapReduce将计算过程分为两个阶段:Map和Reduce
高可靠性:底层维护多个数据副本,所以即使Hadoop某个计算元素或储存出现故障,也不会导致数据丢失;
效率高:并行工作,以加快任务处理速度;
高扩展性:在集群将分配任务数据,可方便的扩展以千计节点;
高容错性:能够自动将失败的任务重新分配。
开源社区版:官网https://hadoop.apache.org/ (本专栏后续主要使用)
商业发行版:Cloudera、Hortonworks
Hadoop集群包括两个集群:HDFS集群、YARN集群,两个集群逻辑上分离(两个集群互相没有依赖互不影响)、通常物理上在一起(某些角色进程往往部署在同一台物理服务器上),这两个都是标准的主从架构集群。
YARN架构
1)ResourceManager(RM):管理整个集群资源(内存CPU等);
2)NodeManager(NM):管理单个节点服务器资源;
3)ApplicationMaster(AM):管理单个任务运行,任务在container里面运营,允许多任务运行;
4)Container:容器,相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等,每个NodeManager上可以有多个Container。
没有MapReduce集群这个说法嘛?
因为MapReduce是计算框架、代码层面的组件,没有集群一说。