从零自学Hadoop(01):认识Hadoop

   

本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文连接,谢谢合做。html

文章是哥(mephisto)写的,SourceLinknode

阅读目录

本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文连接,谢谢合做。算法

文章是哥(mephisto)写的,SourceLink数据库

 

  我是一个工做比较多年数的.net程序猿,最开始作过ERP,这几年一直作监控、应急行业。从产品的体系架构到代码编写,统统参与。认识到做为一个完整的监控生态环境,对采集的数据的处理也很重要。采集的数据只有挖掘了才可能提供有价值的建议或利益输出。认识到单独的windows平台的不足,也想推广多平台的混搭,但因为没玩过Linux,仍是有点前怕狼后怕虎的,怕力不从心。一个搞技术的怕一个事物的时候,他可能就无法在这个事物上进步了,为了丰富本身的技术路线,决定从零自学Hadoop。确实难度比较大,但有了目标,一步步执行起来就是了。并且,无论结果怎么样,仍是能够从中学习到不少优秀平台的技术知识。能学到东西,我已经很知足了。apache

  下面的介绍,只是个搬运工,但也得给这个系列起个头,你们勉强将就的看下吧。编程

Hadoop

    Hadoop是一个由Apache基金会所开发的分布式系统基础架构。windows

      用户能够在不了解分布式底层细节的状况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。api

      Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特色,而且设计用来部署在低廉的(low-cost)硬件上;并且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,能够以流的形式访问(streaming access)文件系统中的数据。网络

      Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。架构

项目起源

  Hadoop由 Apache Software Foundation 公司于 2005 年秋天做为Lucene的子项目Nutch的一部分正式引入。它受到最早由 Google Lab 开发的 Map/Reduce 和 Google File System(GFS) 的启发。

  2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) 分别被归入称为 Hadoop 的项目中。

  Hadoop本来来自于谷歌一款名为MapReduce的编程模型包。谷歌的MapReduce框架能够把一个应用程序分解为许多并行计算指令,跨大量的计算节点运行很是巨大的数据集。使用该框架的一个典型例子就是在网络数据上运行的搜索算法。Hadoop最初只与网页索引有关,迅速发展成为分析大数据的领先平台。

 

优势

  Hadoop是一个可以对大量数据进行分布式处理软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。

  Hadoop 是可靠的,由于它假设计算元素和存储会失败,所以它维护多个工做数据副本,确保可以针对失败的节点从新分布处理

  Hadoop 是高效的,由于它以并行的方式工做,经过并行处理加快处理速度。

  Hadoop 仍是可伸缩的,可以处理 PB 级数据。

  此外,Hadoop 依赖于社区服务,所以它的成本比较低,任何人均可以使用。

  Hadoop是一个可以让用户轻松架构和使用的分布式计算平台。用户能够轻松地在Hadoop上开发和运行处理海量数据的应用程序。它主要有如下几个优势:

    1. 高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。

    2. 高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇能够方便地扩展到数以千计的节点中。

    3. 高效性。Hadoop可以在节点之间动态地移动数据,并保证各个节点的动态平衡,所以处理速度很是快。

    4. 高容错性。Hadoop可以自动保存数据的多个副本,而且可以自动将失败的任务从新分配。

    5. 低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本所以会大大下降。

  Hadoop带有用Java语言编写的框架,所以运行在 Linux 生产平台上是很是理想的。Hadoop 上的应用程序也可使用其余语言编写,好比 C++

  hadoop大数据处理的意义

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

 

核心架构

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

HDFS

  对外部客户机而言,HDFS就像一个传统的分级文件系统。能够建立、删除、移动或重命名文件,等等。可是 HDFS 的架构是基于一组特定的节点构建的(参见图 1),这是由它自身的特色决定的。这些节点包括 NameNode(仅一个),它在 HDFS 内部提供元数据服务;DataNode,它为 HDFS 提供存储块。因为仅存在一个 NameNode,所以这是 HDFS 的一个缺点(单点失败)。

  存储在 HDFS 中的文件被分红块,而后将这些块复制到多个计算机中(DataNode)。这与传统的 RAID 架构大不相同。块的大小(一般为 64MB)和复制的块数量在建立文件时由客户机决定。NameNode 能够控制全部文件操做。HDFS 内部的全部通讯都基于标准的 TCP/IP 协议。

NameNode

  NameNode 是一个一般在 HDFS 实例中的单独机器上运行的软件。它负责管理文件系统名称空间和控制外部客户机的访问。NameNode 决定是否将文件映射到 DataNode 上的复制块上。对于最多见的 3 个复制块,第一个复制块存储在同一机架的不一样节点上,最后一个复制块存储在不一样机架的某个节点上。注意,这里须要您了解集群架构。

  实际的 I/O事务并无通过 NameNode,只有表示 DataNode 和块的文件映射的元数据通过 NameNode。当外部客户机发送请求要求建立文件时,NameNode 会以块标识和该块的第一个副本的 DataNode IP 地址做为响应。这个 NameNode 还会通知其余将要接收该块的副本的 DataNode。

  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 将采起修复措施,从新复制在该节点上丢失的块。

 

开源实现

  Hadoop是项目的总称。主要是由HDFS和MapReduce组成。

  HDFS是Google File System(GFS)的开源实现。

  MapReduce是Google MapReduce的开源实现。

  这个分布式框架颇有创造性,并且有极大的扩展性,使得Google在系统吞吐量上有很大的竞争力。所以Apache基金会用Java实现了一个开源版本,支持Fedora、Ubuntu等Linux平台。雅虎和硅谷风险投资公司Benchmark Capital 联合成立一家名为Hortonworks的新公司,接管被普遍应用的数据分析软件Hadoop的开发工做。

  Hadoop实现了HDFS文件系统和MapRecue。用户只要继承MapReduceBase,提供分别实现Map和Reduce的两个类,并注册Job便可自动分布式运行。

 

子项目

  Hadoop Common: 在0.20及之前的版本中,包含HDFS、MapReduce和其余项目公共内容,从0.21开始HDFS和MapReduce被分离为独立的子项目,其他内容为Hadoop Common

  HDFS: Hadoop分布式文件系统(Distributed File System) - HDFS (Hadoop Distributed File System)

  MapReduce并行计算框架,0.20前使用 org.apache.hadoop.mapred 旧接口,0.20版本开始引入org.apache.hadoop.mapreduce的新API

  HBase: 相似Google BigTable的分布式NoSQL列数据库。(HBaseAvro已经于2010年5月成为顶级 Apache 项目)

  Hive:数据仓库工具,由Facebook贡献。

  Zookeeper:分布式锁设施,提供相似Google Chubby的功能,由Facebook贡献。

  Avro:新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。

  Pig: 大数据分析平台,为用户提供多种接口。

  Ambari:Hadoop管理工具,能够快捷的监控、部署、管理集群。

  Sqoop:于在HADOOP与传统的数据库间进行数据的传递。

 

HDFS流程图

  

---------------------------------------------------------------------------------------

系列索引

  【源】从零自学Hadoop系列索引

 

 

 

 

本文版权归mephisto和博客园共有,欢迎转载,但须保留此段声明,并给出原文连接,谢谢合做。

文章是哥(mephisto)写的,SourceLink

相关文章
相关标签/搜索