热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Hadoop系列之什么是Hadoop(1)

什么是HadoopHadoop是使用Java编写,允许分布在集群,使用简单的编程模型的计算机大型数据集处理的Apache的开源框架。Hadoop框架应

什么是Hadoop

Hadoop 是使用 Java 编写,允许分布在集群,使用简单的编程模型的计算机大型数据集处理的Apache 的开源框架。 Hadoop 框架应用工程提供跨计算机集群的分布式存储和计算的环境。 Hadoop 是专为从单一服务器到上千台机器扩展,每个机器都可以提供本地计算和存储。

Hadoop 可以用单节点模式安装,但是只有多节点集群才能发挥 Hadoop 的优势,我们可以把集群扩展到上千个节点,而且扩展过程中不需要先停掉集群。

Hadoop 由三个关键部分组成:
HDFS:Hadoop 分布式文件系统,它是 Hadoop 数据存储层。
MapReduce:数据计算框架
YARN:负责资源管理和任务调度。


Hadoop 架构

在了解了什么是 Hadoop 之后,再来详细了解一下 Hadoop 的架构。
Hadoop架构图

Hadoop 以主从的方式工作。一个 Master 节点和多个 Slave 节点,slave 节点可以扩招到1000个。Master 节点管理,维护和监控 slave 节点, slave 节点是真正在干活的机器。Master 节点应该部署在配置较高的机器上面,因为它是 hadoop 集群的核心。Maste r存储元数据(即数据的数据),slave 是真正存储数据的机器。客户端通过master 节点来分发任务。


Hadoop组件

在本教程,我们将会学习到 HDFS,MapReduce 和Yarn 这3大重要组件。


HDFS是什么

HDFS 即 Hadoop 分布式文件系统(Hadoop Distribute File System),以分布式存储的方式存储数据。

在 Hadoop 架构里面,master 节点上会运行一个叫做 namenode 的守护进程,每个 slave 节点上都会有 datanode 守护进程,两个进程都是属于HDFS 的。因此,slave 节点也叫做 datanode 节点。Namenode 主要用于存储元数据和管理 datanode 节点。而 datanode 则是真正存储数据和执行任务的地方。
HDFS架构图

HDFS 是一个具有故障容错,分布式的,高可靠的且可扩展的用于数据存储的文件系统。HDFS 是为了存储海量数据而开发的,数据量可达到 TB 级别。数据文件会被分割成块(默认一个块大小为128MB)并存储在多个节点。分割的数据块按照复制因子进行跨 datanode 复制。避免 datanode 节点发生故障后造成数据丢失。

假如有一个文件大小为640MB,那么它将会被分割成5个块,每个块128MB(按照默认的数据块大小)。


MapReduce是什么

Hadoop MapReduce 是一种编程模型,它是 Hadoop 最重要的组件之一。它用于计算海量数据,并把计算任务分割成许多在集群并行计算的独立运行的 task。MapReduce 是 Hadoop 的核心,它会把计算任务移动到离数据最近的地方进行执行,因为移动大量数据是非常耗费资源的。

因此,MapReduce 是一个分布式处理海量数据的计算框架。由于数据存储以分布式方式存储在 HDFS,它为 MapReduce 执行并行任务提供了基础。


Yarn是什么

Yarn 是一种资源管理系统,在集群模式下,管理、分配和释放资源(CPU,内存,磁盘)变得非常复杂。而 Yarn 可以非常高效的管理这些资源。它根据来自任何应用程序的请求分配相同的值。

在 Master 节点会运行一个叫ResourceManager 守护进程,且每个slave 节点都会有一个叫 NodeManager 的守护进程。


Hadoop 守护进程

守护进程是一种运行在后台的进程。Hadoop 主要有4个守护进程。
Yarn守护进程
NameNode :它是HDFS运行在Master节点守护进程。


  • DataNode:它是 HDFS 运行在Slave节点守护进程。
  • ResourceManager:它是 Yarn 运行在 Master 节点守护进程。
  • NodeManager:它是 Yarn 运行在 Slave 节点的守护进程。

除了这些,可能还会有 secondary NameNode,standby NameNode,Job HistoryServer 等进程。


Hadoop是怎么工作的

Apache Hadoop 工作原理:


  1. 输入数据被划分成若干个128MB(默认值)的块,然后把它们移动到不同的节点。
  2. 在多个 datanode 存储完所有数据块之后,用户才能处理这些数据。
  3. 接着,master 把用户提交的程序调度到独立的节点上。
  4. 等所有节点处理完数据之后,输出计算结果并写回 HDFS。

Hadoop生态下的组件介绍

在本节我们会涉及到 Hadoop 生态下的各种组件。先看看 Hadoop 生态下有哪些组件:
Hadoop生态
Hadoop HDFS:Hadoop 分布式存储系统。
Yarn:Hadoop 2.x版本开始才有的资源管理系统。
MapReduce:并行处理框架。
HBase:基于 HDFS 的列式存储数据库,它是一种 NoSQL 数据库,非常适用于存储海量的稀疏的数据集。
Hive:Apache Hive 是一个数据仓库基础工具,它适用于处理结构化数据。它提供了简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。
Pig:它是一种高级脚本语言。利用它不需要开发 Java 代码就可以写出复杂的数据处理程序。
Flume:它可以从不同数据源高效实时的收集海量日志数据。
Sqoop:适用于在 Hadoop 和关系数据库之间抽取数据。
Oozie:这是一种 Java Web 系统,用于 Hadoop 任务的调度,例如设置任务的执行时间和执行频率等。
Zookeeper:用于管理配置信息,命名空间。提供分布式同步和组服务。
Mahout:可扩展的机器学习算法库。


推荐阅读
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • 《Spark核心技术与高级应用》——1.2节Spark的重要扩展
    本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第1章,第1.2节Spark的重要扩展,作者于俊向海代其锋马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看1. ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • CentOS 7配置SSH远程访问及控制
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  • 前言折腾了一段时间hadoop的部署管理,写下此系列博客记录一下。为了避免各位做部署这种重复性的劳动,我已经把部署的步骤写成脚本,各位只需要按着本文把脚本执行完,整个环境基本就部署 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 本文介绍了在Linux下安装和配置Kafka的方法,包括安装JDK、下载和解压Kafka、配置Kafka的参数,以及配置Kafka的日志目录、服务器IP和日志存放路径等。同时还提供了单机配置部署的方法和zookeeper地址和端口的配置。通过实操成功的案例,帮助读者快速完成Kafka的安装和配置。 ... [详细]
author-avatar
用户d4k2wd8en1
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有