Hadoop起源于Google的集群系统,Google的数据中心使用廉价的Linux PC机组成集群,在上面运行各种应用。即使是分布式的新手也可以迅速使用Google的基础设施。
第一个是:GFS(Google FIle System),一个分布式文件系统,隐藏下层负载均衡,冗余复制等细节,对上层程序提供一个统一的文件系统API接口; 第二个是MepReduce:Google发现大多数分布式运算可以抽象为MapReduce操作。Map是把输入Input分解成中间的Key/Value 对,Reduce把Key/Value合成最终输出Output。这两个函数由程序员提供给系统,下层设施把Map和Reduce操作分布在集群上运行, 并把结果存储在GFS上; 第三个是BigTable:一个大型的分布式数据库,这个数据库不是关系式的数据库,而是一个巨大的表格,用来存储结构化的数据。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。 而Hadoop就是Google集群系统的一个开源实现,是一个项目总称。
Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有以下几个优点: – 高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。 – 高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。 – 高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。 – 高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。 – 低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低。
•Hadoop框架最核心的设计由两部分组成,分别是分布式文件系统和分布式计算框架。 •分布式文件系统Hdfs为海量的数据提供了存储,主要用于大规模数据的分布式存储。 •分布式计算框架MapReduce为海量的数据提供了计算,它构建在分布式文件系统之上,对存储在分布式文件系统中的数据进行分布式计算。
•在Hadoop中,MapReduce底层的分布式文件系统是独立模块, Hadoop 默认使用的分布式文件系统是Hdfs,它与MapReduce 框架紧密结合。 •用户也可按照约定的一套接口实现自己的分布式文件系统,然后经过简单的配置后,存储在该文件系统上的数据便可以被MapReduce处理,例如Spark。
jps –31144 Jps –19571 NameNode –19672 DataNode –19803 SecondaryNameNode –19887 JobTracker(ResourcesManager) –19994 TaskTracker(NodeManager)
•NameNode –它是Hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问 •DataNode –它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个 datanode 守护进程。 •SecondaryNameNode –它不是 namenode 的冗余守护进程,而是提供周期检查点和清理任务。 –出于对可扩展性和容错性等考虑,我们一般将SecondaryNameNode运行在一台非NameNode的机器上。 •JobTracker –JobTracker负责调度 DataNode上的工作。每个 DataNode有一个TaskTracker,它们执行实际工作。 –JobTracker和 TaskTracker采用主-从形式,JobTracker跨DataNode分发工作,而 TaskTracker执行任务。 –JobTracker还检查请求的工作,如果一个 DataNode由于某种原因失败,JobTracker会重新调度以前的任务。 •TaskTracker –TaskTracker是在网络环境中开始和跟踪任务的核心位置。与Jobtracker连接请求执行任务而后报告任务状态。
•默认不存在mapred-site.xml文件,需要将当前mapred-site.xml.template文件copy一份并重命名为mapred-site.xml,并且只是一个具有configuration节点的空文件; •默认不存在mapred-queues.xml文件,需要将当前mapred-queues.xml.template文件copy一份并重命名为mapred-queues.xml; •删除了master文件,现在master的配置在hdfs-site.xml通过属性dfs.namenode.secondary.http-address来设置
•ResourceManager包含两个主要的组件:定时调用器(Scheduler)以及应用管理器(ApplicationManager)。 •定时调用器(Scheduler): –定时调度器负责向应用程序分配置资源,它不做监控以及应用程序的状态跟踪,并且它不保证会重启由于应用程序本身或硬件出错而执行失败的应用程序。 •应用管理器(ApplicationManager): –应用程序管理器负责接收新任务,协调并提供在ApplicationMaster容器失败时的重启功能。 •节点管理器(NodeManager): –NodeManager是ResourceManager在每台机器的上代理,负责容器的管 理,并监控他们的资源使用情况(cpu,内存,磁盘及网络等),以及向 ResourceManager/Scheduler提供这些资源使用报告。 •应用总管(ApplicationMaster): 每个应用程序的ApplicationMaster负责从Scheduler申请资源,以及 跟踪这些资源的使用情况以及任务进度的监控