`

Hadoop学习分享----入门概要介绍

 
阅读更多

一、什么是Hadoop?


  • 基于2003年google发表Map/Reduce 和 Google File System(GFS)论文研发。
  • 用java实现的HDFS(Hadoop分布式文件系统)+Map/Reduce(并行编程计算处理框架)。
  • 对大量数据进行分布式处理的软件框架。

 

二、Hadoop的优势


 1、高可靠性:

HDFS假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。MapReduce的任务监控保证了分布式处理的可靠性。

2、高效性:

Hadoop (M/R)是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。

3、高扩展性:

Hadoop可以扩展至数千个节点,对数据持续增长,数据量特别巨大的需求很合适。

4、低成本:

Hadoop是开源项目,而且不仅从软件上节约成本,硬件上的要求也不高。Hadoop生态群活跃,其周边开源项目丰富,HBase, Hive,Impala等等基础开源项目众多。

三、Hadoop的不足


1、不适合低延迟数据访问,不适合做实时数据分析。

2、无法高效存储大量小文件。

3、不支持多用户写入及任意修改文件。

四、Hadoop的两大核心子项目介绍


 (一)、HDFS简介

提供一个高效可用的分布式文件系统,具体如下:

1、可以创建、删除、移动或重命名文件,等等。
2、采用多个备份,保证单节点出现故障是,数据不会丢失。
3、是一个抽象的文件系统,实际的文件数据是分布在多个节点上。

 

HDFS的结构:



<1>、NameNode和Secondary NameNode介绍

NameNode:

  • 负责管理文件系统名称空间(Namespace)和控制外部客户机的访问。
  • 维护文件系统树(filesystem tree)以及文件树中所有的文件和文件目录信息的元数据(metadata)。
  • 是hadoop守护进程中最重要的一个,位于HDFS的主端,它跟踪文件如何被分割成文件块,而这些块又被哪些节点存储,以及分布式文件系统的整体运行状态是否正常。

Secondary NameNode:

  • 是一个用来监控HDFS状态的辅助后台程序。就想NameNode一样,每个集群都有一个Secondary  NameNode,并且部署在一个单独的服务器上。Secondary  NameNode不同于NameNode,它不接受或者记录任何实时的数据变化,但是,它会与NameNode进行通信,以便定期地保存HDFS元数据的快照。由于NameNode是单点的,通过Secondary  NameNode的快照功能,可以将NameNode的宕机时间和数据损失降低到最小。同时,如果NameNode发生问题,Secondary  NameNode可以及时地作为备用NameNode使用。


NameNode维护以上管理信息的四个重要的物理文件:

  • fsimage:二进制文件,存储HDFS的文件和目录元数据。格式如下:
  • edits:作为NameNode的变更日志,记录fsimage的变更信息,如创建/删除目录,创建/删除文件,修改权限,修改namespace/diskspace限额等。
  • fstime:记录最近一次checkpoint的时间,作为Secondary NameNode判断当前是否需要进行checkpoint的依据。
  • VERSION:记录namspaceID,作为整个namespace的唯一标识,DataNode也保存这个标识,在每次DataNode连接NameNode时都要检查,不一致的DataNode会被拒绝连接。

NameNode和secondary Namenode:

为什么会用这样的交互机制?

原因:

1.fsimage是存于硬盘的元数据检查点,Hadoop不会对每个文件操作都写出到fsimage,这样是很慢的,但是每个文件操作都会在提交后运行前先写入edits编辑日志,这样在namenode出现故障后,就会将fsimage和edits编辑日志结合读入内存,重建元数据信息。

 2.为了避免edits编辑日志的无限制扩大,secondary namenode 就回按照时间阈值(比如1小时)或者按大小阈值(edits编辑日志文件大小超过64M,这些参数都可以设置)“周期性”的读取namenode中的edits和fsimage重构fsimage检查点,同时在namenode中进行edits的滚动,来解决这个问题。

<2>、DataNode介绍

  • 提供数据存储空间,保存HDFS中的数据信息,它管理的是数据块(Block) 。
  • 响应来自 HDFS 客户端的读写请求,
  • 响应来自 NameNode 的创建、删除和复制块的命令。

当一个Datanode启动时,它会扫描本地文件系统,产生一个这些本地文件对应的所有HDFS数据块的列表,然后作为报告发送到Namenode,这个报告就是块状态报告。


<3>、Client介绍

  • 代表用户与namenode和datanode交互来访问整个文件系统。客户端提供了一些列的文件系统接口,因此我们在编程时,几乎无须知道datanode和namenode,即可完成我们所需要的功能。

<4>、Namenode,Datanode,Client之间的通信

  • Namenode,Datanode,Client之间的通信都是建立在TCP/IP的基础之上的。当Client要执行一个写入的操作的时候,命令不是马上就发送到Namenode,Client首先在本机上临时文件夹中缓存这些数据,当临时文件夹中的数据块达到了设定的Block的值(默认是64M)时,Client便会通知Namenode,Namenode便响应Client的RPC请求,将文件名插入文件系统中并且在Datanode中找到一块存放该数据的block,同时将该Datanode及对应的数据块信息告诉Client,Client便把这些本地临时文件夹中的数据块写入指定的数据节点。



(二)、Map/Reduce和计算任务框架介绍

<一>、Map/Reduce介绍

  • 提供了一套并发处理数据的接口
  • Map 函数接受一组数据并将其转换为一个键/值对列表,输入域中的每个元素对应一个键/值对。
  • Reduce 函数接受 Map 函数生成的列表,然后根据它们的键(为每个键生成一个键/值对)缩小键/值对列表。

 

执行计算流程图:


  • Map/Reduce的本质是用户需编程提供两个以Key/value方式操作的函数:

          f(map) ~ input_data    list (k1,v1)

          f(reduce) ~  (k1,list(v1))   result_data

  • Map/Reduce系统提供的隐藏操作有:

         将map结果list(k1,v1)重新分发,使同一个k1对应的数据(k1,list(v1))定向到同一个计算单元reducer。

 

例子:我们想要统计每个员工每天在开会上平均要花费多少时间。数据内容:employee, date, meeting_time。

  • 如果用sql,maybe:select employee, avg(meeting_time) from tablename group by employee.
  • 如果用map/reduce programming,maybe:map过程,把数据按<employee, meeting_time>分发;reduce过程,对同一个employee的meeting_time求平均,并输出<employee, avg(meeting_time)>




<二>、JobTracker和TaskTracker介绍:

JobTracker介绍:

JobTracker后台程序用来连接应用程序与Hadoop。用户代码提交到集群以后,由JobTracker决定哪个文件将被处理,并且为不同的task分配节点。同时,它还监控所有的task,一旦某个task失败了,JobTracker就会自动重新开启这个task,在大多数情况下这个task会被放在不用的节点上。每个Hadoop集群只有一个JobTracker,一般运行在集群的Master节点上。


TaskTracker介绍:

TaskTracker与负责存储数据的DataNode相结合,其处理结构上也遵循主/从架构。JobTracker位于主节点,统领 MapReduce工作;而TaskTrackers位于从节点,独立管理各自的task。每个TaskTracker负责独立执行具体的task,而 JobTracker负责分配task。虽然每个从节点仅有一个唯一的一个TaskTracker,但是每个TaskTracker可以产生多个java 虚拟机(JVM),用于并行处理多个map以及reduce任务。TaskTracker的一个重要职责就是与JobTracker交互。如果 JobTracker无法准时地获取TaskTracker提交的信息,JobTracker就判定TaskTracker已经崩溃,并将任务分配给其他 节点处理。







  

五、Hadoop其他重要子项目


 1、Hbase

  • Google Bigtable的开源实现
  • 列式数据库
  • 可集群化
  • 可以使用shell、web、api等多种方式访问,通过api函数对数据库进行操作
  • 适合高读写(insert)的场景:大量数据向数据库中写入,读出
  • HQL查询语言:Hbase Query Language
  • NoSQL的典型代表产品

2、Hive 蜂巢

  • 数据仓库工具,可以把hadoop下的原始结构化数据变成Hive中的表
  • 支持一种与SQL几乎完全相同的语言。除了不支持更新、索引和事务,几乎SQL的其它特征都能支持
  • 可以看成是从SQL到Map-Reduce的映射器
  • 提供shell,JDBC/ODBC,Thrift,Web等接口

3、Zookeeper动物园管理员:通信协调软件:Hbase数据节点之间的协调

  • Google Chubby的开源实现
  • 用于协调分布式系统上的各种服务。例如确认消息是否准确到达,,防止单点失效,处理负载均衡等
  • 应用场景:Hbase,实现Namenode自动切换
  • 工作原理:领导者,跟随者以及选举过程

4、Avro鹰

  • 数据序列化工具,由Hadoop的创始人Doug Cutting主持开发
  • 如:java中产生数据,存入磁盘,需要先序列化
  • 用于支持大批量数据交换的应用。支持二进制序列化方式,可以便捷,快速地处理大量数据
  • 动态语言友好,Avro提供的机制使动态语言可以方便地处理Avro数据
  • Thrift接口

5、Cassandra(没落于hbase)

  • NoSQL,分布式的Key-Value型数据库,由Facebook贡献给apache
  • 与Hbase类似,也是借鉴Google Bigtable的思想体系
  • 只有顺序写,没有随机写的设计,满足高负荷轻型的性能需求
分享到:
评论

相关推荐

    Hadoop的体系介绍

    hadoop的体系介绍:1,hadoop的快速入门;2,分布式的系统概述;3,离线分析系统概述;

    hadoop学习资料

    为了帮助大家更好地了解和学习Hadoop,本文将根据提供的信息进行整理,详细介绍每份资料的内容概要及其适用场景,旨在为初学者及进阶者提供有价值的学习指引。 #### 一、Hadoop技术内幕系列 1. **《Hadoop技术内幕...

    Hadoop-HDFS.xmind

    hadoop-hdfs快速入门 内容概要:HDFS是Apache Hadoop中的分布式文件系统,用于处理大规模数据集。它通过数据局部性原理减少网络传输,提高了系统效率;同时提供数据备份和自我修复机制,确保数据安全性和可靠性。 ...

    Robotframework-UserGuide2.7.7.pdf

    根据提供的文件内容,以下为Robot Framework用户指南2.7.7版本的知识点概要: Robot Framework是一个基于Python的可扩展的关键字驱动测试自动化框架,专门用于端到端的验收测试和接受测试驱动开发(ATDD)。由于其...

    大数据技术领域Hadoop组件ZooKeeper入门体验

    内容概要:本文档分为三个主要部分介绍了如何开始使用 ZooKeeper:第一部分是首次启动并体验ZooKeeper,涉及服务器的启动和基本的状态查询;第二部分则是关于ZooKeeper配置的基本理解和修改,特别是客户端的最大连接...

    数据分析-挖掘入门知识分享

    在展示方面,分析师需要掌握图表设计的概要,以确保图表能够有效地传达数据中的信息。 为了实现数据的收集、存储和分析,多种工具被广泛使用。这些工具包括但不限于Excel、SQL数据库、报告工具如PowerPoint、Word和...

    华为OD的概要介绍与分析

    ### 华为OD(OpenDrive)概要介绍与分析 #### 一、华为OD的核心概念与价值 华为OD(OpenDrive)是华为面向开发者提供的一个全面的云存储服务框架,它集成了对象存储(Object Storage Service, OBS)、文件存储、大...

    10G的python数据分析与挖掘实战学习视频

    内容概要:10G的Python数据分析与挖掘实战学习视频,包括了Python3数据科学入门与实战,大数据入门到实战篇(Hadoop2.80),Python3实战Spark大数据分析及调度,数据分析与数据挖掘高级实战案例 适合人群:具备一定...

    python量化投资学习视频.txt

    内容概要:5G的python量化投资学习学习,包括了Python数字货币量化投资课程,大数据入门到实战篇(Hadoop2.80),Python3实战Spark大数据分析及调度,数据分析与数据挖掘高级实战案例 适合人群:具备一定编程基础,...

    数据分析挖掘入门知识分享.pptx

    数据分析挖掘入门知识分享 数据分析挖掘是当前企业核心竞争力的重要组成部分之一,涉及到各个行业、业务职能领域和个人生活的方方面面。随着信息化革命的深入,生产数据、行为数据的产生已经渗透到每一个行业和领域...

    零基础学习R语言数据分析从入门到精通全面指南

    内容概要:本文档从零基础出发,详细介绍R语言的基本概念、数据类型、对象操作、数据读取与写入、流程控制、图形绘制及高级数据分析技巧。覆盖统计分析、机器学习、数据挖掘、文本挖掘及大数据分析等领域,包括决策...

    一个基础的大数据开发教程,涵盖了大数据的基本概念、常用工具和技术栈,以及一个简单的实战项目

    内容概要:本文件全面介绍了大数据的基本概念以及‘三V’特点,并详细解释了为什么需要进行大数据开发。文中还概述了一系列重要的大数据技术和常用的工具栈如Hadoop、Spark等。特别地,文章给出了一套实战案例指导...

    数据分析教程及资源大全-全面覆盖基础知识到进阶学习

    内容概要:本文档集合了一系列关于数据分析的学习资料和资源,旨在帮助新手及中级学习者掌握数据分析领域的各项关键技术。内容包括:① 数据分析的基本概述及其工具;② 使用Python(如Pandas、NumPy)、Matplotlib...

    现代企业与研究中常用数据分析工具分类概述

    内容概要:本文详细介绍了不同类型的数据分析工具,分为数据处理与清洗工具(Excel、OpenRefine)、数据可视化工具(Tableau、Power BI、D3.js)、数据分析与统计工具(Python、R、SAS)、大数据分析工具(Apache ...

    大数据专业课程介绍.pdf

    这个课程将涵盖大数据技术的概要介绍,包括大数据技术的定义、特点、应用场景等。 Linux 大数据必备 Linux 大数据必备是大数据专业的基础课程,旨在让学生掌握 Linux 操作系统的基本操作,包括 Linux 常见版本、...

    大数据专业课程介绍.docx

    大数据技术入门课程旨在介绍当前流行大数据技术,数据技术原理,并介绍其思想,介绍大数据技术培训课程,概要介绍。 Linux 大数据必备课程则旨在介绍 Linux 常见版本,VMware 虚拟机安装 Linux 系统,虚拟机网络配置...

    HBase分布式存储系统的安装与简单操作指南

    内容概要:本文档详细介绍了一个高可靠性、高性能、面向列、可扩展的分布式存储系统——HBase。首先阐述了HBase的基本概念及其优势特点,接着详述了HBase的安装步骤,包括操作系统的要求、Java与Hadoop的前置条件...

    Hbase中文文档

    1. 入门 1.1. 介绍 1.2. 快速开始 2. 配置 2.1. Java 2.2. 操作系统 2.3. Hadoop 2.4. HBase运行模式:单机和分布式 2.5. ZooKeeper 2.6. 配置文件 2.7. 配置示例 2.8. 重要配置 2.9. Bloom Filter 3. 升级 3.1. 从...

    Scala容器的核心编程.pdf

    JAVA 程序设计师的 SCALA 入门教学, 此教学将对 Scala 语言以及编译器做一个简易介绍。设定的读者为具有程设经验且想要看 Scala 功能概要的人。内文假设读者有着基本、特别是 Java 上的对象导向程设知识。

Global site tag (gtag.js) - Google Analytics