企业级Hadoop大数据平台实战(1)——认识Hadoop

文章目录

    • 一、什么是Hadoop
    • 二、Hadoop的优点
    • 三、核心架构
    • 四、HDFS交互关系
    • 五、Hadoop的常用模块
    • 六、HADOOP生态圈以及各组成部分的简介
    • 七、Hadoop的配置文件

一、什么是Hadoop

Hadoop 是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上。而且它提供高传输率(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求(requirements)这样可以流的形式访问(streaming access)文件系统中的数据。

二、Hadoop的优点

高可靠性 Hadoop按位存储和处理数据的能力值得人们信赖
高扩展性 Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中
高效性 Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快
高容错性 Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配
低成本 与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低

三、核心架构

Hadoop 由许多元素构成。其最底部是 Hadoop Distributed File System(HDFS),它存储 Hadoop 集群中所有存储节点上的文件。HDFS(对于本文)的上一层是MapReduce 引擎,该引擎由 JobTrackers 和 TaskTrackers 组成。通过对Hadoop分布式计算平台最核心的分布式文件系统HDFS、MapReduce处理过程,以及数据仓库工具Hive和分布式数据库Hbase的介绍,基本涵盖了Hadoop分布式平台的所有技术核心。

HDFS三个重要角色:NameNode、DataNode和Client
企业级Hadoop大数据平台实战(1)——认识Hadoop_第1张图片

  • HDFS

对外部客户机而言,HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。
但是 HDFS 的架构是基于一组特定的节点构建的(上图),这是由它自身的特点决定的。
这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;
DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 1.x版本的一个缺点(单点失败)。
在Hadoop 2.x版本可以存在两个NameNode,解决了单节点故障问题。
存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。
这与传统的 RAID 架构大不相同。块的大小(1.x版本默认为 64MB,2.x版本默认为128MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。HDFS 内部的所有通信都基于标准的 TCP/IP 协议。

  • NameNode

NameNode 是一个通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。

NameNode 决定是否将文件映射到 DataNode 上的复制块上。
对于最常见的 3 个复制块,第一个复制块存储在同一机架的不同节点上,最后一个复制块存储在不同机架的某个节点上。

NameNode会将文件系统的Meta-data存储在内存中,这些信息主要包括了文件信息、每一个文件对应的文件块的信息和每一个文件块在DataNode的信息等。

实际的 I/O事务并没有经过 NameNode,只有表示 DataNode 和块的文件映射的元数据经过 NameNode。

NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 NameNode 的本地文件系统上。
FsImage 和 EditLog 文件也需要复制副本,以防文件损坏或 NameNode 系统丢失。
NameNode本身不可避免地具有SPOF(Single Point Of Failure)单点失效的风险,主备模式并不能解决这个问题,
通过Hadoop Non-stop namenode才能实现100% uptime可用时间。

  • DataNode

DataNode 也是一个通常在 HDFS实例中的单独机器上运行的软件。Hadoop 集群包含一个 NameNode 和大量 DataNode。

DataNode 通常以机架的形式组织,机架通过一个交换机将所有系统连接起来。
Hadoop 的一个假设是:机架内部节点之间的传输速度快于机架间节点的传输速度。

DataNode 响应来自 HDFS 客户机的读写请求。它们还响应来自 NameNode 的创建、删除和复制块的命令。
NameNode 依赖来自每个 DataNode 的定期心跳(heartbeat)消息。
每条消息都包含一个块报告,NameNode 可以根据这个报告验证块映射和其他文件系统元数据。
如果 DataNode 不能发送心跳消息,NameNode 将采取修复措施,重新复制在该节点上丢失的块。

  • 文件操作

可见,HDFS 并不是一个万能的文件系统。它的主要目的是支持以流的形式访问写入的大型文件
如果客户机想将文件写到 HDFS 上,首先需要将该文件缓存到本地的临时存储。如果缓存的数据大于所需的 HDFS 块大小,创建文件的请求将发送给 NameNode。NameNode 将以 DataNode 标识和目标块响应客户机。
同时也通知将要保存文件块副本的 DataNode。

当客户机开始将临时文件发送给第一个 DataNode 时,将立即通过管道方式将块内容转发给副本 DataNode。
客户机也负责创建保存在相同 HDFS名称空间中的校验和(checksum)文件。
在最后的文件块发送之后,NameNode 将文件创建提交到它的持久化元数据存储(在 EditLog 和 FsImage 文件)。

四、HDFS交互关系

企业级Hadoop大数据平台实战(1)——认识Hadoop_第2张图片企业级Hadoop大数据平台实战(1)——认识Hadoop_第3张图片

五、Hadoop的常用模块

Apache Hadoop 为可靠的,可扩展的分布式计算开发开源软件
Apache Hadoop软件库是一个框架,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集(海量的数据)

Hadoop Common 支持其他Hadoop模块的常用工具
Hadoop分布式文件系统(HDFS™) 一种分布式文件系统,可提供对应用程序数据的高吞吐量访问
Hadoop YARN 作业调度和集群资源管理的框架
Hadoop MapReduce 一种用于并行处理大型数据集的基于YARN的系统

六、HADOOP生态圈以及各组成部分的简介

HADOOP是apache旗下的一套开源软件平台
HADOOP提供的功能:利用服务器集群,根据用户的自定义业务逻辑,对海量数据进行分布式处理
HADOOP的核心组件有:
|HDFS| 分布式文件系统|
|YARN | 运算资源调度系统|
|MAPREDUCE| 分布式运算编程框架|

hadoop生态圈中 各个组件的作用描述:

(1)hdfs(分布式文件系统):就是一个文件系统,可以存储海量的数据。
(2)mapreduce(分布式运算程序开发框架):从海量的数据中,通过一定的算法,计算出有用信息。
(3)hive(SQL数据仓库工具):就是sql语句解释器,接收用户输入的sql语句,然后将该sql语句翻译成复杂的mapreduce程序,并发布到mr集群中进行运算,也是计算出有用的信息。
(4)hbase(分布式海量数据库):mysql是基于linux/window的文件系统的数据库,而hbase就是基于hdfs文件系统的数据库。
(5)flume(日志数据采集框架):就是一个水泵,将水从一个源水坑,抽到到另一个目的水坑中。当然flume抽的是 “数据”。将数据从一个文件中抽取到另一个文件中。
(6)sqoop(数据导入导出工具):将hdfs文件系统的文件,导出到linux文件系统的文件中。就像“豌豆荚”应用程序,实现 android系统与window系统之间文件的导入导出。
(7)ooize/azkaban(工作流调度框架):一个完整的业务(work)是由多个任务(task)相互配合完成的。该组件就是负责协调各个task的执行顺序。
(8)ZOOKEEPER:分布式协调服务基础组件
(9)Mahout:基于mapreduce/spark/flink等分布式运算框架的机器学习算法库

七、Hadoop的配置文件

  • hadoop-env.sh: 用于定义 hadoop 运行环境相关的配置信息,比如配置 JAVA_HOME 环境变量、为 hadoop 的 JVM 指定特定的选项、指定日志文件所在的目录路径以及 master 和 slave文件的位置等;
  • core-site.xml: 用于定义系统级别的参数,如 HDFS URL、Hadoop 的临时目录以及用于rack-aware 集群中的配置文件的配置等,此中的参数定义会覆盖 core-default.xml 文件中的默认配置;
  • hdfs-site.xml: HDFS 的相关设定,如文件副本的个数、块大小及是否使用强制权限等,此中的参数定义会覆盖 hdfs-default.xml 文件中的默认配置;
  • mapred-site.xml:HDFS 的相关设定,如 reduce 任务的默认个数、任务所能够使用内存的默认上下限等,此中的参数定义会覆盖 mapred-default.xml 文件中的默认配置;
  • masters: hadoop 的 secondary-masters 主机列表,当启动 Hadoop 时,其会在当前主机上 启 动 NameNode 和 JobTracker , 然 后 通 过 SSH 连 接 此 文 件 中 的 主 机 以 作 为 备 用NameNode;
  • slaves:Hadoop 集群的 slave 主机列表,master 启动时会通过 SSH 连接至此列表中的所有主机并为其启动 DataNode 和 taskTracker 进程;

你可能感兴趣的:(Linux企业实战)