What Is Apache Hadoop?
hadoop是一个框架,它允许使用简单的编程模型跨计算机集群对大型数据集进行分布式处理。它被设计成从单台服务器扩展到数千台机器,每台机器都提供本地计算和存储。库本身设计用于检测和处理应用层上的故障,而不是依赖于硬件来提供高可用性的服务,因此在一组计算机上交付高可用性的服务,每一个计算机都可能出现故障。
Hadoop是一个大家族,是一个开源的生态系统,是一个分布式运行系统,是基于Java编程语言的架构。不过它最高明的技术还是HDFS和MapReduce,使得它可以分布式处理海量数据。
具有开源,可靠,可扩展,分布式计算等优点
hadoop框架包括以下模块:
①Hadoop Common:常见的实用程序,支持其他Hadoop模块。
②Hadoop HDFS(hadoop distribute file system):Hadoop分布式文件系统(HDFS™):一个分布式文件系统,它提供了高通量访问应用程序数据。
③Hadoop YARN:HadoopYARN:用于作业调度和集群资源管理的框架。
④Hadoop MapReaduce:Hadoop MapReduce:一种基于纱线的大型数据集并行处理系统
分布式:相对于集中式
集中式:一台机器,所有的软件都安装在同一台计算机上
分布式:多台机器,将东西、软件进行划分,每台机器存储一部分
如果:一个商城项目,有订单模块,用户模块,订单模块......可以将每个模块放在不同的机器上运行,共同协作工作
也就是说一个大任务可以划分为多个业务部署在不同的服务器。
集群:同一个业务部署到多台服务器上
主从架构:
Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多小的工作单元,并把这些单元放到任何集群节点上执行。在MapReduce中,一个准备提交执行的应用程序成为“作业job”,而从一个作业换分出的、运行于个计算节点的工作单元成为“任务task”。此外,Hadoop提供的分布式文件系统HDFS主要负责各个节点上的数据的存储,并实现了高吞吐率的数据读写。
在分布式存储和分布式计算方面,Hadoop都使用主/从(Master/Slave)架构。在一个配置完整的集群上想让Hadoop跑起来,需要在集群中运行一系列后台(daemon)程序。不同的祸胎程序扮演着不同的角色,这些角色由NameNode,DataNode,Secondary NameNode,JobTracker,TaskTracker组成,其中NameNode,Secondary NameNode,JobTracker运行在Master几点上,而在每个Slave节点上,部署着一个DataNode和TaskTracker,一边这个Slave服务器上运行的数据处理程序能尽可能直接处理本机的数据。对Master节点需要特别说明的是,在小集群中,Secondary NameNode可以属于某个从节点;在大型集群汇中,NameNode和JobTracker被分别部署在两台服务器上。
NameNode
NameNode是HDFS的守护程序,负责记录文件是如何分割成数据块的,以及数据块被存储到哪些数据节点上。它的主要功能是对内存及I/O进行集中管理。
一般来说,NameNode所在的服务器不存储任何用户信息或执行计算任务,以避免这些程序降低服务器的性能。如果其他从服务器因出现软硬件的问题而宕机,Hadoop集群仍旧可以继续运行,或者快速重启。但是由于NameNode是Hadoop集群中的一个单一节点,一旦NameNode服务器宕机,整个系统将无法运行。
DataNode
集群中的每个从服务器都运行着一个DataNode后台程序,它负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个数据时,先由 NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataNode服务器的后台程序进行通信,并且对相应的数据块进行读/写操作。
主从架构相当于项目经理,管理者,调度者;从节点是被管理者,是执行者
分布式文件系统HDFS:
主节点:nameNode:将储存的文件划分为block块进行存储(每个block块的内存为128M),每个block块副本为三个(以防一个block损坏影响整个程序的运行)
从节点:dataNode:管理存储,存储当前DataNode所在节点机器上的数据block块
分布式集群资源管理YARN:
集群资源管理的资源为:CPU core(内核)和内存
主节点:resourceManager管理整个集群的资源,接收client提交的应用
从节点:nodeManager管理每个节点(每台机器)的资源
在企业部署Hadoop集群的时候,HDFS的DataNode和YARN nodemanager基本上在一台机器上,充分利用资源