您的位置:首页 > 运维架构

初识Hadoop

2017-02-16 00:02 239 查看

一、Hadoop是什么?

1、 面向大数据处理

这里的大数据是个相对的说法,例如这些数据运用传统的方法难以快速地处理一般便可称为大数据。

2、 擅长离线数据分析

Hadoop可以处理大规模数据集,包括结构化数据、非结构化数据和半结构化数据,但Hadoop是按照批量处理系统来设计的,这也就限制了它的反应速度。

阻碍Hadoop实现实时分析的主要有两点:首先,大部分新的Hadoop查询引擎运行速度没能像主流关系型数据库中的查询那样快。在Impala和Hive这样的工具中,最终用户可以用SQL语言写查询指令,在Hadoop集群执行的时候,这些指令要翻译成MapReduce语言。整个过程是很慢的,远逊于直接在关系型数据库中运行SQL查询。

其次,与关系型数据库相比,Hadoop目前还是一个只读的系统。数据一旦写入Hadoop分布式文件系统(HDFS),用户很难插入、删除或修改存储的数据,一般只能追加数据。

3、 分布式文件系统(HDFS)+计算框架(MapReduce)

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

4、 Hadoop不是数据库,Hbase才是数据库

5、 Hadoop是一个快速进化的生态系统

Hadoop的版本发展迅速,其旗下拥有很多超级子项目

6、 Hadoop会使用在哪些行业?

Hadoop可以使用在金融、互联网、电子商城等行业。

二、Hadoop的发展历程

Hadoop的思想之源:Google

google 核心的三个思想

GFS : google的文件系统,将爬回来的大量网页,通过冗余的方式存放在多台服务器中;

Hadoop中的HDFS基本可以说是山寨google该算法的。

PageRang:将大量的数据分散到多个节点来进行迭代计算,然后再将迭代出来的结果进行汇总;

Hadoop中的计算框架MapReduce基本可以说是山寨其的。

BigTable : BigTable是Google设计的分布式数据存储系统,用来处理海量的数据的一种非关系型的数据库。

Bigtable的设计目的是快速且可靠地处理PB级别的数据,并且能够部署到上千台机器上。

HBase是一个分布式的、面向列的开源数据库,该技术来源于Google的BigTable.

三、Hadoop生态圈的核心成员



1、HDFS: Hadoop生态圈的基本组成部分是Hadoop分布式文件系统(HDFS :Hadoop Distributed File System)。

HDFS是一种数据分布式保存机制,数据被保存在计算机集群上。

数据写入一次,读取多次。HDFS为HBase等工具提供了基础。

2、MapReduce :Hadoop的主要执行框架是MapReduce,它是一个分布式、并行处理的编程模型。 MapReduce把任务分为 map(映射)阶段和reduce(化简)。开发人员使用存储在HDFS中数据(可实现快速存储),编写Hadoop的MapReduce任务。由于 MapReduce工作原理的特性, Hadoop能以并行的方式访问数据,从而实现快速访问数据。通俗的说法 如下:我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。

3、Hbase :HBase是一个分布式的、面向列的开源数据库;HBase是一个建立在HDFS之上,面向列的NoSQL数据库, 用于快速读/写大量数据。HBase使用Zookeeper进行管理,确保所有组件都正常运行。 HBase作为面向列的数据库运行在HDFS之上,HDFS缺乏随即读写操作,HBase正是为此而出现。HBase以Google BigTable为蓝本,以键值对的形式存储。 项目的目标就是快速在主机内数十亿行数据中定位所需的数据并访问它。

4、Pig :它是MapReduce编程的复杂性的抽象。Pig平台包括运行环境和用于分析Hadoop数据集的脚本语言(Pig Latin)。 其编译器将Pig Latin翻译成MapReduce程序序列。

5、Hive : Hive类似于SQL高级语言,用于运行存储在Hadoop上的查询语句,Hive让不熟悉MapReduce开发人员也能编写数据查询语句,然后这些语 句被翻译为Hadoop上面的MapReduce任务。像Pig一样,Hive作为一个抽象层工具,吸引了很多熟悉SQL而不是Java编程的数据分析师。

6、Zookeeper :用于Hadoop的分布式协调服务。Hadoop的许多组件依赖于Zookeeper, 它运行在计算机集群上面,用于管理Hadoop操作。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

7、Mahout :Mahout是一个机器学习和数据挖掘库,它提供的MapReduce包含很多实现,包括聚类算法、回归测试、统计建模。通过使用 Apache Hadoop 库,可以将Mahout有效地扩展到云中

四、Hadoop 内部进程结点:



1、Namenode : HDFS集群有两类节点,并以管理者-工作者模式运行,即一个NameNode(管理者)和多个DataNode(工作者)。

 HDFS的守护程序

 记录文件是如何分割成数据块的,以及这些数据块被存储到哪些节点上

 对内存和I/O进行集中管理

 是个单点,发生故障将使集群崩溃(hadoop1.x)

2、Secondary Namenode :主要是定时对NameNode进行数据snapshots进行备份,这样尽量降低NameNode崩溃之后,导致数据的丢失,其实所作的工作就是从nn获得fsimage和edits把二者重新合并然后发给nn,这样,既能减轻nn的负担又能保险地备份。

 监控HDFS状态的辅劣后台程序

 每个集群都有一个

 在NameNode进行通讯,定期保存HDFS元数据快照

 当NameNode故障可以作为备用(这个不能实现当NameNode故障时自动切换,必须得手工切换)

3、DataNode : 是文件系统的工作节点,根据客户端或是namenode的调度存储和检索数据,定期向namenode发送其所存储的块(block)的列表。集群中的每个服务器都运行一个DataNode后台程序, 这个后台程序负责把HDFS数据块读写到本地的文件系统。当需要通过客户端读/写某个数据时, 先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后,客户端直接与这个DataNode服务器上的后台程序进行通信,并且对相关的数据块进行读/写操作。

每台从朋务器都运行一个,负责把HDFS数据块读写到本地文件系统。

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

每个Hadoop集群只有一个JobTracker,一般运行在集群的Master节点上。

 用于处理作业(用户提交代码)的后台程序

 决定有哪些文件参不处理,然后切割task并分配节点

 监控task,重启失败的task(于不同的节点)

 每个集群只有唯一一个JobTracker,位于Master节点



5、TaskTracker : TaskTracker与负责存储数据的DataNode相结合,其处理结构上也遵循主/从架构。JobTracker位于主节点,统领 MapReduce工作;而TaskTrackers位于从节点,独立管理各自的task。每个TaskTracker负责独立执行具体的task,而 JobTracker负责分配task。

 位于slave节点上,与datanode结合(代码不数据一起的原则)

 管理各自节点上的task(由jobtracker分配)

 每个节点只有一个tasktracker,但一个tasktracker可以启动多个JVM,用于并行执行map或reduce任务

 于jobtracker交互

6、Master于Slave :

 Master:Namenode、Secondary Namenode、Jobtracker。浏览器(用于观看 管理界面),其它Hadoop工具

 Slave:Tasktracker、Datanode

 Master不是唯一的

五、Hadoop和Spark的异同

Hadoop实质上更多是一个分布式数据基础设施: 它将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,意味着不需要购买和维护昂贵的服务器硬件。同时,Hadoop还会索引和跟踪这些数据,让大数据处理和分析效率达到前所未有的高度。

Spark,则是那么一个专门用来对那些分布式存储的大数据进行处理的工具,它并不会进行分布式数据的存储。

Spark数据处理速度秒杀MapReduce。Spark的批处理速度比MapReduce快近10倍,内存中的数据分析速度则快近100倍。

Spark也不是非要依附在Hadoop身上才能生存。但毕竟它没有提供文件管理系统,所以,它必须和其他的分布式文件系统进行集成才能运作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  hadoop