`
huangyongxing310
  • 浏览: 490541 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Hadoop应用基础知识

 
阅读更多
hadoop
(1)Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。
(2)Hadoop就是一个分布式计算的解决方案.


Hadoop的框架最核心的设计就是:HDFS和MapReduce。

Hadoop解决哪些问题?
海量数据需要及时分析和处理
海量数据需要深入分析和挖掘
数据需要长期保存


海量数据存储的问题:
磁盘IO称为一种瓶颈,而非CPU资源
网络带宽是一种稀缺资源
硬件故障成为影响稳定的一大因素


Hadoop 相关技术
Hbase
Nosql数据库,Key-Value存储
最大化利用内存


HDFS
hadoop distribute file system(分布式文件系统)
最大化利用磁盘


MapReduce
编程模型,主要用来做数据分析
最大化利用CPU



MapReduce 线性,可伸缩性编程
程序员需要编写 map函数 和 reduce函数。每个函数定义从一个键值对集合到另一个键值对集合的映射。


Mapper任务的执行过程详解
每个Mapper任务是一个java进程,它会读取HDFS中的文件,解析成很多的键值对,经过我们覆盖的map方法处理后,转换为很多的键值对再输出。

把Mapper任务的运行过程分为六个阶段。
1.第一阶段是把输入文件按照一定的标准分片(InputSplit),每个输入片的大小是固定的。默认情况下,输入片(InputSplit)的大小与数据块(Block)的大小是相同的。
如果数据块(Block)的大小是默认值64MB,输入文件有两个,一个是32MB,一个是72MB。那么小的文件是一个输入片,大文件会分为两个数据块,那么是两个输入片。
一共产生三个输入片。每一个输入片由一个Mapper进程处理。这里的三个输入片,会有三个Mapper进程处理。
2.第二阶段是对输入片中的记录按照一定的规则解析成键值对。有个默认规则是把每一行文本内容解析成键值对。“键”是每一行的起始位置(单位是字节),“值”是本行的文本内容。
3.第三阶段是调用Mapper类中的map方法。第二阶段中解析出来的每一个键值对,调用一次map方法。如果有1000个键值对,就会调用1000次map方法。
每一次调用map方法会输出零个或者多个键值对。
4.第四阶段是按照一定的规则对第三阶段输出的键值对进行分区。比较是基于键进行的。比如我们的键表示省份(如北京、上海、山东等),那么就可以按照不同省份进行分区,
同一个省份的键值对划分到一个区中。默认是只有一个区。分区的数量就是Reducer任务运行的数量。默认只有一个Reducer任务。
5.第五阶段是对每个分区中的键值对进行排序。首先,按照键进行排序,对于键相同的键值对,按照值进行排序。比如三个键值对<2,2>、<1,3>、<2,1>,键和值分别是整数。
那么排序后的结果是<1,3>、<2,1>、<2,2>。如果有第六阶段,那么进入第六阶段;如果没有,直接输出到本地的linux文件中。(Map过程中也按照Key执行了排序操作,例子中有说明)
6.第五阶段是对每个分区中的键值对进行排序。首先,按照键进行排序,对于键相同的键值对,按照值进行排序。比如三个键值对<2,2>、<1,3>、<2,1>,键和值分别是整数。
那么排序后的结果是<1,3>、<2,1>、<2,2>。如果有第六阶段,那么进入第六阶段;如果没有,直接输出到本地的linux文件中。



Reducer任务的执行过程详解
每个Reducer任务是一个java进程。Reducer任务接收Mapper任务的输出,归约处理后写入到HDFS中,可以分为如下图所示的几个阶段。
1.第一阶段是Reducer任务会主动从Mapper任务复制其输出的键值对。Mapper任务可能会有很多,因此Reducer会复制多个Mapper的输出。
2.第二阶段是把复制到Reducer本地数据,全部进行合并,即把分散的数据合并成一个大的数据。再对合并后的数据排序。
3.第三阶段是对排序后的键值对调用reduce方法。键相等的键值对调用一次reduce方法,每次调用会产生零个或者多个键值对。最后把这些输出的键值对写入到HDFS文件中。

在整个MapReduce程序的开发过程中,我们最大的工作量是覆盖map函数和覆盖reduce函数。


以Hadoop文件作为输出文件,因此需要用到文件系统,于是需要引入hadoop-hdfs包;我们需要向Map-Reduce集群提交任务,需要用到Map-Reduce的客户端,
于是需要导入hadoop-mapreduce-client-jobclient包;另外,在处理数据的时候会用到一些hadoop的数据类型例如IntWritable和Text等,
因此需要导入hadoop-common包。



例子:
https://blog.csdn.net/miniykyk/article/details/52929905



org.apache.hadoop.mapreduce.Job类
这个类的目的就是跟据文件的切片大小创建多个MAP任务和reduce任务,并启动这些任务进行计算最终输出结果


YARN模块
YARN是一个通用的资源协同和任务调度框架,是为了解决Hadoop1.x中MapReduce里NameNode负载太大和其他问题而创建的一个框架。
YARN是个通用框架,不止可以运行MapReduce,还可以运行Spark、Storm等其他计算框架。
YARN是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度,它的引入为集群在利用率、资源统一管理和数据共享等方面带来了巨大好处。


hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

hive就类似是建立在hadoop基础上的MYSQL(结构化的数据),提供数据的管理和查询、统计,一般用于大数据分析,不识用于实时查询应用场景

Hive—Hive是一个构建在MapReduce框架之上的类sql查询引擎,
它可以将hiveQL语句转换为一系列运行在集群中的mapReduce任务。



HIVE和HBASE区别

Apache Hive是一个构建在Hadoop基础设施之上的数据仓库。通过Hive可以使用HQL语言查询存放在HDFS上的数据。HQL是一种类SQL语言,这种语言最终被转化为Map/Reduce.
虽然Hive提供了SQL查询功能,但是Hive不能够进行交互查询--因为它只能够在Haoop上批量的执行Hadoop。

    Apache HBase是一种Key/Value系统,它运行在HDFS之上。和Hive不一样,Hbase的能够在它的数据库上实时运行,而不是运行MapReduce任务。

应用场景
    Hive适合用来对一段时间内的数据进行分析查询,例如,用来计算趋势或者网站的日志。Hive不应该用来进行实时的查询。因为它需要很长时间才可以返回结果。
    Hbase非常适合用来进行大数据的实时查询。Facebook用Hbase进行消息和实时的分析。它也可以用来统计Facebook的连接数。


Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架构。
Apache Hive: 是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
Apache Pig: 是一个基于Hadoop的大规模数据分析工具,它提供的SQL-LIKE语言叫Pig Latin,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。
Apache HBase: 是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
Apache Sqoop: 是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。
Apache Zookeeper: 是一个为分布式应用所设计的分布的、开源的协调服务,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度,提供高性能的分布式服务
Apache Mahout:是基于Hadoop的机器学习和数据挖掘的一个分布式框架。Mahout用MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。
Apache Cassandra:是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身
Apache Avro: 是一个数据序列化系统,设计用于支持数据密集型,大批量数据交换的应用。Avro是新的数据序列化格式与传输工具,将逐步取代Hadoop原有的IPC机制
Apache Ambari: 是一种基于Web的工具,支持Hadoop集群的供应、管理和监控。
Apache Chukwa: 是一个开源的用于监控大型分布式系统的数据收集系统,它可以将各种各样类型的数据收集成适合 Hadoop 处理的文件保存在 HDFS 中供 Hadoop 进行各种 MapReduce 操作。
Apache Hama: 是一个基于HDFS的BSP(Bulk Synchronous Parallel)并行计算框架, Hama可用于包括图、矩阵和网络算法在内的大规模、大数据计算。
Apache Flume: 是一个分布的、可靠的、高可用的海量日志聚合的系统,可用于日志数据收集,日志数据处理,日志数据传输。
Apache Giraph: 是一个可伸缩的分布式迭代图处理系统, 基于Hadoop平台,灵感来自 BSP (bulk synchronous parallel) 和 Google 的 Pregel。
Apache Oozie: 是一个工作流引擎服务器, 用于管理和协调运行在Hadoop平台上(HDFS、Pig和MapReduce)的任务。
Apache Crunch: 是基于Google的FlumeJava库编写的Java库,用于创建MapReduce程序。与Hive,Pig类似,Crunch提供了用于实现如连接数据、执行聚合和排序记录等常见任务的模式库
Apache Whirr: 是一套运行于云服务的类库(包括Hadoop),可提供高度的互补性。Whirr学支持Amazon EC2和Rackspace的服务。
Apache Bigtop: 是一个对Hadoop及其周边生态进行打包,分发和测试的工具。
Apache HCatalog: 是基于Hadoop的数据表和存储管理,实现中央的元数据和模式管理,跨越Hadoop和RDBMS,利用Pig和Hive提供关系视图。
Cloudera Hue: 是一个基于WEB的监控和管理系统,实现对HDFS,MapReduce/YARN, HBase, Hive, Pig的web化操作和管理。


Apache Pig(通过另种语言写程序,不用再写MapReduce,Pig Latin写好后运行自动帮你生产相关代码并运行)



图计算:

















分享到:
评论

相关推荐

    Hadoop应用开发与案例实战(慕课版)-课件PPT.rar

    《Hadoop应用开发与案例实战(慕课版)》是一门深入探讨大数据处理技术的课程,主要聚焦在Hadoop平台上进行应用开发的实践操作。这门课通过丰富的PPT课件,旨在帮助学习者理解Hadoop的核心概念,掌握其开发技巧,并...

    hadoop基础知识

    【Hadoop基础知识】 Hadoop是大数据处理领域的重要框架,它主要由两个核心组件构成:Hadoop Distributed File System(HDFS)和MapReduce。HDFS是一个分布式文件系统,它设计为在低成本硬件上运行,具有高容错性,...

    Hadoop应用及相关

    这个压缩包文件“Hadoop应用及相关”显然包含了关于Hadoop的核心信息,包括安装教程和可能的PPT资源,这将对学习和理解Hadoop生态系统提供极大的帮助。下面我们将深入探讨Hadoop及其主要组件MapReduce。 Hadoop是...

    hadoop大数据基础学习

    掌握了这些基础知识之后,将进一步深入学习Hadoop的高级特性,探索如何利用Hadoop解决实际业务中的大数据问题。希望这些内容能够帮助大家更好地理解和掌握Hadoop,为大数据处理打下坚实的基础。

    Hadoop基础Hadoop应用场景课件.ppt

    hadoop平台构建与应用

    hadoop应用开发技术详解代码

    1. **Hadoop基础知识**(第3章): - Hadoop架构:包括分布式文件系统HDFS(Hadoop Distributed File System)和MapReduce计算框架。 - Hadoop安装与配置:涵盖单机模式、伪分布式模式和完全分布式模式的安装步骤...

    hadoop应用开发技术详解

    ### Hadoop应用开发技术详解 在当今大数据时代,Hadoop作为一种主流的大数据处理框架,其应用开发技术成为了众多企业和开发者关注的焦点。本文将围绕“Hadoop应用开发技术详解”这一主题,深入探讨Hadoop的基本概念...

    Hadoop应用开发技术详解

    理解MapReduce的工作原理和编程模型是开发Hadoop应用的基础。 4. Hadoop生态环境:除了HDFS和MapReduce,Hadoop生态系统还包括Pig、Hive、HBase、Spark等工具。Pig和Hive提供SQL-like接口简化大数据查询,HBase是一...

    深入云计算:Hadoop应用开发实战详解 源代码

    本篇文章将基于"深入云计算:Hadoop应用开发实战详解 源代码"这一主题,深入探讨Hadoop在云计算环境中的应用与开发实践。 Hadoop是Apache基金会开发的一个分布式计算系统,主要由Hadoop Distributed File System ...

    hadoop大数据平台技术与应用 --课后习题参考答案.pdf

    根据给定文件的内容部分,我们可以提炼出以下几个知识点: 1. 大数据业务处理基本流程与关键技术 ...在实际的Hadoop学习和应用中,这些知识点是非常重要的基础,有助于理解和操作Hadoop集群以及处理大数据问题。

    Hadoop大数据开发基础-PPT课件.rar

    《Hadoop大数据开发基础》是一门深入浅出的教程,主要涵盖了Hadoop生态系统的基础知识以及MapReduce编程模型的高级应用。本课程旨在帮助初学者快速掌握大数据处理的核心技能,为今后的数据分析和挖掘打下坚实基础。 ...

    hadoop基础知识学习与总结

    【Hadoop基础知识学习与总结】 Hadoop是一个由Apache基金会开发的开源分布式系统基础架构,它的设计目标是处理和存储海量数据。Hadoop这个名字源于创始人Doug Cutting的孩子为一只棕黄色大象玩具所取的名字,象征着...

    hadoop基础入门

    **1.4 国内外Hadoop应用案例** Hadoop在不同行业中的应用非常广泛,例如: - **数据服务平台**:企业可以利用Hadoop构建自己的数据服务基础平台,实现对大量数据的有效管理和分析。 - **用户画像构建**:通过对...

    hadoop中文基础教程

    本教程将带你深入了解Hadoop的基础知识,让你在处理大规模数据时游刃有余。 一、Hadoop概述 Hadoop的核心设计理念是“分布式存储”和“分布式计算”,它允许在普通硬件上运行,实现数据的高可用性和容错性。Hadoop...

    Hadoop大数据开发基础_教案.rar

    总之,《Hadoop大数据开发基础》教程是一个全面且深入的学习资源,覆盖了从Hadoop基础知识到项目实施的各个方面,对于希望进入大数据领域的学习者来说是一份宝贵的教材。通过这个教程,读者可以逐步掌握Hadoop技术,...

    hadoop应用案例

    在使用C语言开发Hadoop应用时,需要注意以下几点: 1. 安装依赖:确保安装了所有必要的Hadoop C库和编译工具。 2. 并行编程:理解和掌握并行编程的概念,如数据分区、任务调度和并发控制。 3. 错误处理:由于...

    学习hadoop--java零基础学习hadoop手册

    ### Hadoop与Java基础知识学习手册 #### 一、Hadoop简介及Java基础知识 **标题**:“学习hadoop--java零基础学习hadoop手册” **描述**:“学习hadoop--java零基础学习hadoop手册” 本手册旨在为完全没有Java基础...

Global site tag (gtag.js) - Google Analytics