Hadoop 教程_ai自学教程

Hadoop 教程_ai自学教程Hadoop是Apache开源组织的一个分布式计算开源框架(http://hadoop.apache.org/),用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。Hadoop框架中最核心设计就是:HDFS和MapReduce,HDFS实现存储,而MapReduce实现原理分析处理,这两部分是hadoop的核心。数据在Hadoop中处理的流程可以简单的按照下图来理解:数据通过Haddop的集群处理后得到结果,它是一个高性能处理海量数据集的工具 。

 

Hadoop教程() Hadoop入门教程

 

 

1 Hadoop入门教程

HadoopApache开源组织的一个分布式计算开源框架(http://hadoop.apache.org/),用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。Hadoop框架中最核心设计就是:HDFSMapReduceHDFS实现存储,而MapReduce实现原理分析处理,这两部分是hadoop核心。数据在Hadoop中处理的流程可以简单的按照下图来理解:数据通过Haddop的集群处理后得到结果,它是一个高性能处理海量数据集的工具 

1.1 Hadoop家族

        Hadoop 教程_ai自学教程

        Hadoop 教程_ai自学教程

1、Apache Hadoop:Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。

 

2、Apache Hive:是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

 

3、Apache Pig:是一个基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫PigLatin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。

 

4、Apache HBase:是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。

 

5、Apache Sqoop:是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL,Oracle,Postgres等)中的数据导进到HadoopHDFS中,也可以将HDFS的数据导进到关系型数据库中。

 

6、Apache Zookeeper:是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。

 

7、Apache Mahout:是基于Hadoop的机器学习和数据挖掘的一个分布式框架。MahoutMapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。

           

8、Apache Cassandra:是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存简单格式数据,集GoogleBigTable的数据模型与AmazonDynamo的完全分布式的架构于一身

9、Apache Avro:是一个数据序列化系统,设计用于支持数据密集型,大批量数据交换的应用。Avro是新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制。

 

10、     Apache Ambari:是一种基于Web的工具,支持Hadoop集群的供应、管理和监控。

 

11、     Apache Chukwa:是一个开源的用于监控大型分布式系统的数据收集系统,它可以将各种各样类型的数据收集成适合Hadoop处理的文件保存在HDFS中供Hadoop进行各种MapReduce操作。

 

12、     Apache Hama:是一个基于HDFSBSPBulkSynchronousParallel)并行计算框架,Hama可用于包括图、矩阵和网络算法在内的大规模、大数据计算。

 

13、     Apache Flume:是一个分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。

 

14、     Apache Giraph:是一个可伸缩的分布式迭代图处理系统,基于Hadoop平台,灵感来自BSP(bulksynchronousparallel)GooglePregel

 

15、     Apache Oozie:是一个工作流引擎服务器,用于管理和协调运行在Hadoop平台上(HDFSPigMapReduce)的任务。

 

16、     Apache Crunch:是基于GoogleFlumeJava库编写的Java库,用于创建MapReduce程序。与HivePig类似,Crunch提供了用于实现如连接数据、执行聚合和排序记录等常见任务的模式库。

 

17、     Apache Whirr:是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。Whirr学支持AmazonEC2Rackspace的服务。

 

18、     Apache Bigtop:是一个对Hadoop及其周边生态进行打包,分发和测试的工具。

 

19、     Apache HCatalog:是基于Hadoop的数据表和存储管理,实现中央的元数据和模式管理,跨越HadoopRDBMS,利用PigHive提供关系视图。

 

20、     Cloudera Hue:是一个基于WEB的监控和管理系统,实现对HDFSMapReduce/YARN,HBase,Hive,Pigweb化操作和管理。

 

1.2 HDFS文件系统

HDFSHadoop Distributed File SystemHadoop分布式文件系统),它是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,适合那些有着超大数据集(largedata set)的应用程序。

HDFS的设计特点:

1、大数据文件,非常适合上T级别的大文件或者一堆大数据文件的存储。

2、文件分块存储,HDFS会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多。

3、流式数据访问,一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。

4、廉价硬件,HDFS可以应用在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。

5、硬件故障,HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。

 

HDFSmaster/slave构架:

一个HDFS集群是有一个Namenode和一定数目的Datanode组成。Namenode是一个中心服务器,负责管理文件系统的namespace和客户端对文件的访问。Datanode在集群中一般是一个节点一个,负责管理节点上它们附带的存储。在内部,一个文件其实分成一个或多个block,这些block存储在Datanode集合里。Namenode执行文件系统的namespace操作,例如打开、关闭、重命名文件和目录,同时决定block到具体Datanode节点的映射。DatanodeNamenode的指挥下进行block的创建、删除和复制。NamenodeDatanode都是设计成可以跑在普通的廉价的运行linux的机器上。

 

HDFS的关键元素:

1、Block:将一个文件进行分块,通常是64M

2、NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在Hadoop2.*开始支持activity-standy模式----如果主NameNode失效,启动备用主机运行NameNode

3、DataNode:分布在廉价的计算机上,用于存储Block块文件。

 

Hadoop 教程_ai自学教程

HDFS架构图

 

4、Namenode全权管理数据块的复制,它周期性地从集群中的每个Datanode接收心跳信号和块状态报告(Blockreport)。接收到心跳信号意味着该Datanode节点工作正常。块状态报告包含了一个该Datanode上所有数据块的列表。

Hadoop 教程_ai自学教程

5、参考资料

HDFS Java API:http://hadoop.apache.org/core/docs/current/api/

HDFS源代码:http://hadoop.apache.org/core/version_control.html

 

1.3 MapReduce文件系统

MapReduce是一种编程模型,用于大规模数据集(大于1TB)的并行运算。MapReduce将分成两个部分"Map(映射)""Reduce(归约)"

当你向MapReduce框架提交一个计算作业时,它会首先把计算作业拆分成若干个Map任务,然后分配到不同的节点上去执行,每一个Map任务处理输入数据中的一部分,当Map任务完成后,它会生成一些中间文件,这些中间文件将会作为Reduce任务的输入数据。Reduce任务的主要目标就是把前面若干个Map的输出汇总到一起并输出。

MapReduce流程图

        Hadoop 教程_ai自学教程

MapReduce流程图

步骤1:首先对输入数据源进行切片

步骤2master调度worker执行map任务

步骤3worker读取输入源片段

步骤4worker执行map任务,将任务输出保存在本地

步骤5master调度worker执行reduce任务,reduce worker读取map任务的输出文件

步骤6:执行reduce任务,将任务输出保存到HDFS

 

1.4 学习Linux推荐书籍:

1. Hadoop权威指南

2. Hadoop实战

3. Hadoop技术内幕:深入解析Hadoop CommonHDFS架构设计与实现原理》

4. Hadoop技术内幕:深入解析MapReduce架构设计与实现原理》

5. Hadoop技术内幕:深入解析YARN架构设计与实现原理》


                --以上为《Hadoop入门教程》,如有不当之处请指出,我后续逐步完善更正,大家共同提高。谢谢大家对我的关注。

                                                                                                                                                                                      ——厚积薄发(yuanxw)


架构君码字不易,如需转载,请注明出处:https://javajgs.com/archives/209534
0

发表评论