开源工具之Hadoop

是什么?

Hadoop是一种分析和处理大数据的软件平台,是一种对大量数据进行分布式处理的软件框架。

Hadoop的框架最核心的设计就是:

HDFS和MapReduce.

  • HDFS为海量的数据提供了存储
  • MapReduce为海量的数据提供了计算.

HDFS

是什么?

Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。

特点

  • HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;
  • 它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。
  • HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
  • 对外部客户机而言,HDFS就像一个传统的分级文件系统。可以创建、删除、移动或重命名文件,等等。

结构设计

HDFS 的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。
这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。由于仅存在一个 NameNode,因此这是 HDFS 的一个缺点(单点失败)。
存储在 HDFS 中的文件被分成块,然后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(通常为 64MB)和复制的块数量在创建文件时由客户机决定。NameNode 可以控制所有文件操作。
在这里插入图片描述

主从结构

  • 主节点,只有一个: namenode
  • 从节点,有很多个: datanodes

各节点功能

  • namenode负责:接收用户操作请求 、维护文件系统的目录结构、管理文件与block之间关系,block与datanode之间关系。通常在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。
  • datanode负责:存储文件文件被分成block存储在磁盘上、为保证数据安全,文件会有多个副本。
HDFS内部通信协议

HDFS 内部的所有通信都基于标准的 TCP/IP 协议。

MapReduce

是什么?

MapReduce是处理大量半结构化数据集合的编程模型。

什么是编程模型?

编程模型是一种处理并结构化特定问题的方式。

  • 例如,在一个关系数据库中,使用一种集合语言执行查询,如SQL。告诉语言想要的结果,并将它提交给系统来计算出如何产生计算。
  • 还可以用更传统的语言(C++,Java),一步步地来解决问题。

这是两种不同的编程模型MapReduce就是另外一种。

MapReduce和Hadoop是相互独立的,实际上又能相互配合工作得很好。

MapReduce 的主从结构

  • 主节点,只有一个: JobTracker
  • 从节点,有很多个: TaskTrackers

各节点功能

  • JobTracker负责:接收客户提交的计算任务、把计算任务分给TaskTrackers执行、监控TaskTracker的执行情况
  • TaskTrackers负责:执行JobTracker分配的计算任务

hadoop优点:

  • Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。
  • Hadoop 是可靠的,按位存储和处理数据的能力值得人们信赖。因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。
  • Hadoop 是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。
  • Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
  • Hadoop 还是可伸缩的,能够处理 PB 级数据。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
  • 高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
  • 低成本。hadoop是开源的,项目的软件成本低。
  • Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。
  • Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。
  • Hadoop是一个能够让用户轻松架构和使用的分布式计算平台。用户可以轻松地在Hadoop上开发和运行处理海量数据的应用程序。

hadoop大数据处理的意义

  • Hadoop在大数据处理中广泛应用得益于其自身在数据提取、变形和加载(ETL)方面上的天然优势。
  • Hadoop的分布式架构,将大数据处理引擎尽可能的靠近存储,对例如像ETL这样的批处理操作相对合适,因为类似这样操作的批处理结果可以直接走向存储。
  • Hadoop的MapReduce功能实现了将单个任务打碎,并将碎片任务(Map)发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。

Hadoop能做什么?

  • 大数据量存储:分布式存储
  • 日志处理: Hadoop擅长这个
  • 海量计算: 并行计算
  • ETL:数据抽取到oracle、mysql、DB2、mongdb及主流数据库
  • 使用HBase做数据分析: 用扩展性应对大量的写操作—Facebook构建了基于HBase的实时数据分析系统
  • 机器学习: 比如Apache Mahout项目
  • 搜索引擎:hadoop + lucene实现
  • 数据挖掘:目前比较流行的广告推荐
  • 大量地从文件中顺序读。HDFS对顺序读进行了优化,代价是对于随机的访问负载较高。
  • 数据支持一次写入,多次读取。对于已经形成的数据的更新不支持。
  • 数据不进行本地缓存(文件很大,且顺序读没有局部性)
  • 任何一台服务器都有可能失效,需要通过大量的数据复制使得性能不会受到大的影响。
  • 用户细分特征建模
  • 个性化广告推荐
  • 智能仪器推荐
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值