离线大数据_【大数据】大数据 hadoop 离线分布式系统入门 - CSDN
  • 1.使用eclipse导入javaweb项目 test-aura具体导入方法使用下面的连接https://blog.csdn.net/jenrey/article/details/804575912.修改数据埋点收集的数据发送Nginx的位置注意修改后需要重新部署到Tomcat中3....

    1.使用eclipse导入javaweb项目 test-aura

    具体导入方法使用下面的连接

    https://blog.csdn.net/jenrey/article/details/80457591

    2.修改数据埋点收集的数据发送Nginx的位置


    注意修改后需要重新部署到Tomcat中

    3.点击页面在Nginx端产生数据

    http://localhost:8080/test-aura/

    随意点点

    [hadoop@hadoop04 ~]$ su

    [root@hadoop04 ~]# cd /var/log/nginx

    [root@hadoop04 nginx]# tail -F access.log 


    4.编写JavaSDK代码

    用来写后台的两种数据埋点

    5.编写连接Nginx的代码

    然后测试代码hbase-test


    上述做完就是:数据通过编写数据埋点 -》Nginx服务器上面了 

    6.使用flume把Nginx的数据存入HDFS

    现在我们要做的就是通过Flume读取Nginx上面的数据存到HDFS

    source:exec

    channel:memory

    sink:hdfssink

    # Name the components on this agent
    a1.sources = r1
    a1.sinks = k1
    a1.channels = c1
    
    # Describe/configure the source
    a1.sources.r1.type = exec
    a1.sources.r1.command = tail -F /var/log/nginx/access.log
    
    
    
    # Use a channel which buffers events in memory
    a1.channels.c1.type = memory
    
    
    # Describe the sink
    a1.sinks.k1.type = hdfs
    a1.sinks.k1.hdfs.path = hdfs://hadoop1:9000/flume/%Y%m%d
    a1.sinks.k1.hdfs.useLocalTimeStamp = true    #设置上面的年月日,一定要设置这个参数
    a1.sinks.k1.hdfs.fileType = DataStream
    a1.sinks.k1.hdfs.rollInterval = 0
    a1.sinks.k1.hdfs.rollSize = 10240
    a1.sinks.k1.hdfs.rollCount = 0
    
    
    
    # Bind the source and sink to the channel
    a1.sources.r1.channels = c1
    a1.sinks.k1.channel = c1
    

    [hadoop@hadoop04 ~]$ flume-ng agent --conf conf --conf-file file2hdfs.properties --name a1 -Dflume.hadoop.logger=INFO,console    

    注意权限需要在root用户下才能访问Nginx的目录


    随意点几下这样在HDFS中就有数据了


    7.MR解析数据


    直接从网上下载解析纯真IP地址的java代码就是别人封装好的就行。然后直接创建对象调用方法就可以了。

    解析浏览器信息就用别人写好的代码直接解析就行了。

    本文已经下载好了。就是在hbase-test下面org.gh.ip这个包下面






    展开全文
  • 本次介绍数据管理的知识,分为三个部分: 数据源 数据管理 数据仓库 1. 数据源 ...典型的数据分析系统, 要分析的数据种类其实是比较丰富的。...业务系统产生的数据是不可忽视的,比如电商网站,大量的订单数据看似...

    本次介绍数据管理的知识,分为三个部分:

    • 数据源
    • 数据管理
    • 数据仓库

    1. 数据源

    典型的数据分析系统, 要分析的数据种类其实是比较丰富的。 依据来源可
    大体分为以下几个部分:
    数据源

    • 业务系统

    业务系统产生的数据是不可忽视的,比如电商网站,大量的订单数据看似杂乱章,实则蕴含潜在的商业价值,可以从中分析进而进行商业推广,产品推荐等。
    另一角度来看,业务系统数据获取成本低、方式容易, 属于公司内部范畴。 业务系统的数据一般保存在关系型数据库当中。 获取形式有:

    • 接口调用:直接获取业务系统数据库的数据,但是要注意不能影响业务系统数据库的性能,比如大量获取数据增大数据库读数据压力。

    • 数据库 dump:非高峰时段,或者在数据库从库上 dump 出全部数据。 一般企业中会定时进行数据库的备份、 导出工作,那么就可以共享使用这些数据。
      比如 MySQL 数据库,使用 mysqldump 工具就可以进行数据库的导出mysqldump -uroot -pPassword [database name] [dump file]mysqldump 命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。

      • 爬虫数据
      • 在进行网站数据分析的时候,除了内部数据之外,还有一部分数据是我们不能够忽视的。那就是所谓的外部数据。 当然这是相对公司网站来说的。拥有了外部数据可以更好的帮助我们进行数据分析。
        爬虫( Web crawler),是指一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。
        电子商务行业最初的爬虫需求来源于比价。这是某些电商网站的核心业务。大家如果买商品的时候,是一个价格敏感型用户的话,很可能会使用比价功能。毫无悬念, 会使用爬虫技术来爬取所有相关电商的价格。当然,这并不意味着大家喜欢被爬取。于是需要通过技术手段来做反爬虫。

    2. 数据管理

    数据文件管理

    随着技术和业务的发展壮大, 企业中产生的数据种类越来越多, 数据量也越来越大。 如何对数据进行有效的组织、存储、管理、检索、维护,将会显得越来越重要。 在企业内部很多时候还涉及数据的跨部门存储与调用。 因此,进行数据的管理就显得特别重要, 也越来越受到企业的重视。
    文件管理的真谛在于方便保存和迅速提取,所有的数据文件将通过某种属性(比如业务、时间) 分类被很好地组织起来,放在最能方便找到的地方。 解决这个问题目前最理想的方法就是分类管理

    从每一个文件夹的建立,我们都要按照数据文件的属性,分为大大小小、多
    个层级的文件夹,建立合理的文件保存架构。此外所有的文件、文件夹,都要规
    范化地命名,并放入最合适的文件夹中。

    企业中一般会是用文件管理服务器进行文件管理会有一下好处
    1. 定时集中对文件进行备份;
    2. 可以统一制定文件安全访问权限策略;
    3. 可以统一进行文件服务器防病毒管理。

    常见文件服务有以下几种:

    • FTP 文件服务
      FTP 是一个文件传输的协议, 采用 Client/Server 架构。用户可以通过各种不同的 FTP 客户端程序,借助 FTP 协议,来连接 FTP 服务器,以上传或者下载文件。 它使用两个连接与客户端通信:
      命令连接:用于传输文件管理类命令, 在客户端连接后会始终在线;
      数据连接:用于传输文件数据,此连接会按序创建。
      Linux 中常用的 FTP 客户端软件有 lftp, ftp, lftpget, wget, curl 等。
      Windows 中可以使用浏览器,资源管理器或 Filezilla 等软件。

    • NFS 文件服务
      NFS 是 Network File System 的缩写,即网络文件系统。 它允许网络中的计算机之间通过 TCP/IP 网络共享资源。 NFS 的基本原则是“ 容许不同的客户端及服务端通过一组 RPC 分享相同的文件系统” ,它是独立于操作系统,容许不同硬件及操作系统的系统共同进行文件的分享。
      NFS 在文件传送或信息传送过程中依赖于 RPC 协议。 RPC,远程过程调(Remote Procedure Call) 是能使客户端执行其他系统中程序的一种机制。 NFS本身是没有提供信息传输的协议和功能的,但 NFS 却能让我们通过网络进行资料的分享, 原因就在与 RPC,可以说 NFS 本身就是使用 RPC 的一个程序。可以这么理解 RPC 和 NFS 的关系: NFS 是一个文件系统,而 RPC 是负责信息的传输。

    • Samba 文件服务
      SMB( Server Messages Block,信息服务块) 是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
      Samba 是一组软件包,在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件。 Linux 操作系统提供了 Samba 服务, Samba 服务为两种不同的操作系统架起
      了一座桥梁,使 Linux 系统和 Windows 系统之间能够实现互相通信, **这使得
      Windows/Linux/Unix 间可以自由的进行文件共享。**

    文件管理规范

    为了更快速,更准确,更规范的进行数据文件管理, 企业一般都会去制定相应的管理规范。 从而使各方都按照这个规范去进行文件的存储、读取。 规范着重于文件命名规则, 以及一些校验性文件的描述。
    例子: FTP 服务进行跨部门文件共享的相关规范。 以数据库数据文件导出至ftp 文件服务器共享为例,目录下会存在以下 3 种格式文件。 仅供参考。

    • 接口新增数据文件
      正常数据:文件类型标示源系统数据库类型简写.源系统数据库.表名称数据日
      期_重传序号.lzo
      如正常数据为:
      增量( 上次导出之后的新数据) :
      i_s.Peking.orders_20130711_000.lzo
      全量( 表中所有的数据) :
      a_s.Peking.orders_20130711_000.lzo

    • 接口控制校验文件
      正常数据:增全量标示源系统数据库类型简写.源系统数据库.表名称数据日期
      _重传序号.md5
      如正常数据为:
      增量:
      i_s.peking.orders_20130711_000.md5
      全量:
      a_s.peking.orders_20130711_000.md5
      控制校验文件的存在意义在于**标识数据的完整性校验,预防上传丢失导致其
      他使用者获取不完整数据。**

    • 接口表结构文件
      正常数据:增全量标示源系统数据库类型简写.源系统数据库.表名称数据日期
      _重传序号.xml
      如正常数据为:
      增量:
      i_s.peking.orders_20130711_000.xml
      全量:
      a_s.peking.orders_20130711_000.xml

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <table type="hbase" database="credit" code="cds_courier_active">
    <field type="string" code="pin"/>
    <field type="string" code="d_seq_no"/>
    <field type="string" code="d_cust_id"/>
    <field type="string" code="d_mobile"/>
    <field type="string" code="d_active_stcd"/>
    <field type="string" code="d_active_result"/>
    <field type="string" code="d_credit_amt"/>
    <field type="string" code="d_active_tm"/>
    <field type="string" code="d_seq_no_interface"/>
    <field type="string" code="d_apply_channel"/>
    <field type="string" code="d_apply_type"/>
    <field type="string" code="d_oder_id"/>
    <field type="string" code="d_name"/>
    <field type="string" code="d_approve_times"/>
    <field type="string" code="d_product_type"/>
    </table>

    表结构文件存在意义在于:便于数据的使用人员快速的了解本批次数据的大致内容,也方便后续回头对数据进行检测时作为依照。

    数据质量检测

    数据质量是保证数据应用的基础,它的评估标准主要包括四个方面: 完整性、一致性、 准确性、 及时性。评估数据是否达到预期设定的质量要求,就可以通过这四个方面来进行判断。

    • 完整性指的是数据信息是否存在缺失的状况,数据缺失的情况可能是整个数
      据记录缺失,也可能是数据中某个字段信息的记录缺失。不完整数据的价值就会
      大大降低,也是数据质量最为基础的一项评估标准。

    • 一致性是指数据是否遵循了统一的规范,数据集合是否保持了统一的格式。数据质量的一致性主要体现在数据记录的规范和数据是否符合逻辑。规范指的是,一项数据存在它特定的格式,例如手机号码一定是 11 位的数字, IP 地址一定是由 4 个 0 到 255 间的数字加上.组成的。逻辑指的是,多项数据间存在着固定的逻辑关系,例如 PV 一定是大于等于 UV 的,跳出率一定是在 0 到 1 之间的。准确性是指数据记录的信息是否存在异常或错误。 存在准确性问题的数据不仅仅只是规则上不一致。最为常见的数据准确性错误如乱码。其次,异常的大或者小的数据也是不符合条件的数据。数据质量的准确性可能存在于个别记录,也可能存在于整个数据集,例如数量级记录错误。这类错误则可以使用最大值和最小值的统计量去审核。
      一般数据都符合正态分布的规律,如果一些占比少的数据存在问题,则可以
      通过比较其他数量少的数据比例,来做出判断。

    • 及时性是指数据从产生到可以查看的时间间隔,也叫数据的延时时长。及时性对于数据分析本身要求并不高,但如果数据分析周期加上数据建立的时间过长,就可能导致分析得出的结论失去了借鉴意义。

    3. 数据仓库

    数据仓库的概念

    数据仓库,英文名称为 Data Warehouse,可简写为 DW 或 DWH。 数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持( DecisionSupport)。 它出于分析性报告和决策支持目的而创建。数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。

    数据仓库的主要特征

    数据仓库是面向主题的( Subject-Oriented )、 集成的( Integrated)、 非易失的( Non-Volatile)和时变的( Time-Variant )数据集合,用以支持管理决策 。

    • 面向主题
      而数据仓库则是面向主题的。 主题是一个抽象的概念,是较高层次上企业信息系统中的数据综合、归类并进行分析利用的抽象。 在逻辑意义上,它是对应企业中某一宏观分析领域所涉及的分析对象。
      操作型处理(传统数据) 对数据的划分并不适用于决策分析。而基于主题组织的数据则不同,它们被划分为各自独立的领域,每个领域有各自的逻辑内涵但互不叉,在抽象层次上对数据进行完整、一致和准确的描述。一些主题相关的数据通常分在多个操作型系统中。

    • 集成性
      通过对分散、独立、异构的数据库数据进行抽取、清理、转换和汇总便得到了数据仓库的数据,这样保证了数据仓库内的数据关于整个企业的一致性。数据仓库中的综合数据不能从原有的数据库系统直接得到。因此在数据进入数据仓库之前,必然要经过统一与综合,这一步是数据仓库建设中最关键、最复杂的一步,所要完成的工作有:
      ( 1)要统一源数据中所有矛盾之处,如字段的同名异义、异名同义、单位不统一、字长不一致,等等。
      ( 2)进行数据综合和计算。数据仓库中的数据综合工作可以在从原有数据库抽取数据时生成,但许多是在数据仓库内部生成的,即进入数据仓库以后进行综合生成的。
      下图说明一个保险公司综合数据的简单处理过程,其中数据仓库中与“保险”主题有关的数据来自于多个不同的操作型系统。这些系统内部数据的命名可能不同,数据格式也可能不同。把不同来源的数据存储到数据仓库之前,需要去除这些不一致。
      这里写图片描述

    • 非易失性(不可更新性)
      操作型数据库主要服务于日常的业务操作,使得数据库需要不断地对数据实时新,以便迅速获得当前最新数据,不至于影响正常的业务运作。在数据仓库中只要保存过去的业务数据,不需要每一笔业务都实时更新数据仓库,而是根据商业需要每隔一段时间把一批较新的数据导入数据仓库。
      数据仓库中一般有大量的查询操作,但修改和删除操作很少。因此, 数据经加工和集成进入数据仓库后是极少更新的,通常只需要定期的加载和更新。

    • 时变性
      数据仓库包含各种粒度的历史数据。数据仓库中的数据可能与某个特定日期、星期、月份、季度或者年份有关。 数据仓库的目的是通过分析企业过去一段时间业务的经营状况,挖掘其中隐藏的模式。 虽然数据仓库的用户不能修改数据,但并不是说数据仓库的数据是永远不变的。分析的结果只能反映过去的情况,当业务变化后,挖掘出的模式会失去时效性。因此数据仓库的数据需要更新,以适应决策的需要。从这个角度讲,数据仓库建设是一个项目,更是一个过程 。数据仓库的数据随时间的变化表现在以下几个方面。
      ( 1)数据仓库的数据时限一般要远远长于操作型数据的数据时限。
      ( 2)操作型系统存储的是当前数据,而数据仓库中的数据是历史数据。
      ( 3)数据仓库中的数据是按照时间顺序追加的,它们都带有时间属性。

    数据仓库与数据库的区别

    数据库与数据仓库的区别实际讲的是 OLTP 与 OLAP 的区别。

    • 操作型处理,叫联机事务处理 OLTP( On-Line Transaction Processing,),也可以称面向交易的处理系统,它是针对具体业务在数据库联机的日常操作,通常对少数记录进行查询、修改。用户较为关心操作的响应时间、数据的安全性、完整性和并发支持的用户数等问题。传统的数据库系统作为数据管理的主要手段,主要用于操作型处理。

    • 分析型处理,叫联机分析处理 OLAP( On-Line Analytical Processing)一般针对某些主题的历史数据进行分析,支持管理决策。首先要明白,数据仓库的出现并不是要取代数据库。

    数据库与数据仓库的区别
    - 数据库是面向事务的设计,数据仓库是面向主题设计的

    • 数据库一般存储业务数据,数据仓库存储的一般是历史数据

    • 数据库是为捕获数据而设计,数据仓库是为分析数据而设计。数据仓库,是在数据库已经大量存在的情况下,为了进一步挖掘数据资源、为了决策需要而产生的,它决不是所谓的“大型数据库“。

    数据仓库分层架构

    按照数据流入流出的过程, 数据仓库架构可分为三层——源数据、 数据仓库、数据应用。
    数据仓库分层架构

    数据仓库的数据来源于不同的源数据,并提供多样的数据应用,数据自下而上流入数据仓库后向上层开放应用,而数据仓库只是中间集成化数据管理的一个平台。

    • 源数据层( ODS):此层数据无任何更改,直接沿用外围系统数据结构和数据,
      不对外开放; 为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。
    • 数据仓库层( DW): 也称为细节层, DW 层的数据应该是一致的、准确的、干
      净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。
    • 数据应用层( DA 或 APP):前端应用直接读取的数据源;根据报表、专题分析需求而计算生成的数据。

    数据仓库从各数据源获取数据及在数据仓库内的数据转换和流动都可以认为是 ETL(抽取 Extra, 转化 Transfer, 装载 Load) 的过程, ETL 是数据仓库的流水线,也可以认为是数据仓库的血液,它维系着数据仓库中数据的新陈代谢,而数据仓库日常的管理和维护工作的大部分精力就是保持 ETL 的正常和稳定。

    为什么要对数据仓库分层?

    用空间换时间,通过大量的预处理来提升应用系统的用户体验(效率),因此数据仓库会存在大量冗余的数据;不分层的话,如果源业务系统的业务规则发生变化将会影响整个数据清洗过程,工作量巨大。

    通过数据分层管理可以简化数据清洗的过程,因为把原来一步的工作分到了多个步骤去完成,相当于把一个复杂的工作拆成了多个简单的工作,把一个大的黑盒变成了一个白盒,每一层的处理逻辑都相对简单和容易理解,这样我们比较容易保证每一个步骤的正确性,当数据发生错误的时候,往往我们只需要局部调整某个步骤即可。

    数据仓库元数据管理

    元数据( Meta Date), 主要记录数据仓库中模型的定义、各层级间的映射关系、监控数据仓库的数据状态及 ETL 的任务运行状态。一般会通过元数据资料库 Metadata Repository)来统一地存储和管理元数据,其主要目的是使数据仓库的设计、部署、操作和管理能达成协同和一致。

    元数据是数据仓库管理系统的重要组成部分,元数据管理是企业级数据仓库中的关键组件,贯穿数据仓库构建的整个过程,直接影响着数据仓库的构建、使用和维护。

    • 元数据定义了源数据系统到数据仓库的映射、数据转换的规则、数据仓库的逻辑结构、数据更新的规则、数据导入历史记录以及装载周期等相关内容。数据抽取和转换的专家以及数据仓库管理员正是通过元数据高效地构建数据仓库。

    • 用户在使用数据仓库时,通过元数据访问数据,明确数据项的含义以及定制报表。

    • 数据仓库的规模及其复杂性离不开正确的元数据管理,包括增加或移除外部数据源,改变数据清洗方法,控制出错的查询以及安排备份等。
      元数据管理

    元数据可分为技术元数据和业务元数据。

    • 技术元数据为开发和管理数据仓库的 IT 人员使用,它描述了与数据仓库开发、管理和维护相关的数据,包括数据源信息、数据转换描述、数据仓库模型、数据清洗与更新规则、数据映射和访问权限等。

    • 业务元数据为管理层和业务分析人员服务,从业务角度描述数据,包括商务术语、数据仓库中有什么数据、数据的位置和数据的可用性等,帮助业务人员更好地理解数据仓库中哪些数据是可用的以及如何使用。

    由上可见,元数据不仅定义了数据仓库中数据的模式、来源、抽取和转换规则等,而且是整个数据仓库系统运行的基础,元数据把数据仓库系统中各个松散的组件联系起来,组成了一个有机的整体。


    数据仓库的数据信息及数据管理的分层,特征,就是这些。本博客会持续更新大数据相关的信息,感兴趣的同学欢迎关注。

    展开全文
  • 1.离线处理:按天进行数据处理,每天凌晨等数据采集和同步的数据到位后,相关的数据处理任务会被按照预先谁的ETL(抽取、转换、加载)逻辑以及ETL任务之间的拓扑关系一次调用。最终数据会被写入离线数据仓库中。离线...

    第一章 概述

    数据分为以下几类:
    1.结构化数据 :数据库中的数据
    2.半结构化数据:日志文件、XML/JSON
    3.非结构化数据:图像、声音

    数据储存处理
    1.离线处理:按天进行数据处理,每天凌晨等数据采集和同步的数据到位后,相关的数据处理任务会被按照预先谁的ETL(抽取、转换、加载)逻辑以及ETL任务之间的拓扑关系一次调用。最终数据会被写入离线数据仓库中。离线数据仓库通常是按照某一种建模思想(维度建模)精心组织的。
    离线数据通常放在一个Staging Area(暂存区)。
    Google三篇论文:hdfs/mapreduce/hbase
    2.实时处理:以秒为单位。依赖Storm/类 Storm 的流处理框架和 Spark 生态的 Spark Streaming
    3.近线数据:以小时、15分钟为单位
    在这里插入图片描述
    数据采集传输–处理–储存
    离线批处理:Sqoop作为采集和传输工具、Hive作为离线数据处理平台、HDFS、Hbase作为数据存储。
    MapReduce HDFS 基础上实现了任务的分发、跟踪和执行等工作,并收
    集结果,两者相互作用,共同完成了 Hadoop 分布式集群的主要任务

    实时采集和传输:Flume 和Kafka作为采集和传输工具、Storm、Spark、Flink作为处理平台

    在这里插入图片描述
    离线数据平台通常和 Hadoop Hive 、数据仓库、 ETL 、维度建模、 数据公共层等联系在一起。
    离线数据平台的另一个关键技术是数据的建模,目前采用最为广泛也最为大家认同的是维度建模技术。

    数据仓库技术
    OLTP:是 Online Transaction ~rocessing ,顾名思义, OLTP 数据库主要用来进行事务处理,比如新增一个订单、修改一个订单、查询一个订单和作废一个订单等 OLTP 数据库最核心的需求是单条记录的高效快速处理,索引技术、分库分表等最根本的诉求就是解决此问题。问题是太慢了

    OLAP:本身能够处理和统计大量的数据。一般只需要处理数据查询请求,数据都是批量导入的,因此通过列存储、列压缩、位图索引等技术可以大大加快相应请求速度。
    在这里插入图片描述
    Hadoop数据仓库
    在hadoop出现之前,商业性的数据仓库产品占据主导。现在,基于hadoop的数据仓库以及是互联网公司的标配。hadoop内在的技术基因决定了其非常容易扩展,成本低廉。
    面临的最大挑战是数据查询延迟(几分钟,甚至几个小时),Hive SQL 是高延迟的,不但翻译成的 MapReduce 任务执行延迟高,任务 提交和处理过程中也会消耗时间 因此,即使 ive 处理的数据集非常小(比如 MB ),在执行时 会出现延迟现象

    第二章

    HDFS:分布式文件系统,hadoop核心子项目。
    优势:1.处理超大文件 2.高容错性和高可靠性3.运行于廉价的机器集群4.流式的访问数据
    劣势:1.不合适低延迟数据访问2.无法高效储存大量小文件3.不支持多用户写入和随机文件修改

    MapReduce:分布式计算模型 hadoop核心子项目。
    优势:1.MapReduce易于编程2.良好的拓展性(加电脑)3.高容错性(任务转移到别的电脑)
    劣势:1.高延迟2.静态,无法处理动态3.

    HDFS MapReduce 基本架构
    分工明确,HDFS负责分布式储存,MapReduce负责分布式计算

    HDFS 采用了主从( Master/Slave )的结构模型,一个HDFS 集群是由一个 NameNode 和若干个 DataNode 组成的。NameNode 执行文件系统的命名空间操作,比如打开、关闭、重命名文件或目录等,它也 负责数据块到具体 DataNode 的映射 DataNode 责处理文件系统客户端的文件读写请求,并在 NameNode 的统一调度下进行数据块的创建、删除和复制工作
    在这里插入图片描述
    NameNode 是所有 HDFS 元数据的管理者用户数据不会经过 NameNode

    MapReduce也是采用 Master/Slave 的主从架构。有4个部分。Client、JobTracker、TaskTracker、Task
    在这里插入图片描述
    ( 1 ) Client
    每个 Job 都会在用户端通过 Client 类将应用程序以及配置参数 Configuration 打包成 JAR 文件存储在 HDFS 中,并把路径提交到 JobTracker Master 务,然后由 Master 创建每一个 Task (即 MapTask ReduceTask )将它们分发到各个 TaskTracker 服务中去执行
    ( 2 ) JobTracker
    Job Tracker 负责资源监控和作业调度 JobTracker 监控所有 TaskTracker Job 的健康 状况,一旦发现失败,就将相应的任务转移到其他节点;同时,JobTracker会跟踪任务的执行进度、资源使用量等会信息,并将这些信息告诉任务调速器,而调速器在资源出现空闲时,会选择合适的任务使用这些资源。在hadoop中,任务调速器是一个可插拔的模块,用户可以根据自己的需要设计相应的调速器。
    ( 3) TaskTracker
    TaskTracker 会周期性地通过 Heartbeat 将本节点上资源的使用情况和任务的运行进度汇报给 JobTracker 同时接收 JobTracker 发送过来的命令并执行相应的操作(如启动新任务、杀死任务等)
    TaskTracker 使用 slot 来衡量划分本节点上的资源量, slot 代表单位的计算资源( CPU、内存等) 。一 τask 获取到一个 slot 后才有机会运行,而 Hadoop调度器的作用就是将各个 TaskTracker 上的空闲 slot 分配给 Task 使用, slot 分为 Map slot Reduce slot 两种,分别供 MapTask/Reduce Task 使用 TaskTracker 通过 slot 数目(可配置参数) 限定 Task 的并发度
    (4)Task
    Task 分为 Map Task Reduce Task 两种,均由 TaskTracker 启动 HDFS 以固定大小 block 为基本单位存储数据,而对于 MapReduce 而言,其处理单位是split

    从上面的描述可以看出, HDFS 、MapReduce 共同组成了 HDFS 体系结构的核心 。HDFS 在集群上实现了分布式文件系统, MapReduce 在集群上实现了分布式计算和任务处理。 HDFS MapReduce 任务处理过程中提供了对文件操作和存储等的支持,而 Map Reduce 在HDFS 础上实现了任务的分发、跟踪和执行等工作,并收集结果,两者相互作用,完成了hadoop分布式集群的主要任务。

    MapReduce内部事件原理实践

    Map逻辑和Reduce逻辑和输入文件,丢给hadoop,hadoop将会自动完成所有分布式计算任务。
    编写好的MapReduce程序是一个Job,Job——>jabTracker(检查、输入分片)——>让job排队——>作业调度器调度作业——>创建一个运行的Job对象——>jobTracker跟踪

    完成后,客户端会查到Job完成的通知,如果Job中途失败,MapReduce也会有相应的机制处理。如果不是程序本身有BUG,MapReduce错误处理机制都能保证提交的Job正常完成。

    MapReduce内部执行原理详解
    在这里插入图片描述
    在这里插入图片描述
    1.输入分片
    如果输入文件都是小于HDFS的快大小(Block),那么一个文件就是一个分片
    如果输入文件大于Block,那么就切块,最大不超过Block的大小。
    (PS:过多的小文件会创建过多的map任务,合并小文件时MapReduce优化的一个关键点)

    2.Map阶段
    在Map阶段,各个Map任务会接受到所分配到的split,并调用Map函数,逐行执行并输出键值对。

    3.Combiner阶段
    Combiner阶段是可选的,它其实也是一种Reduce操作,但是她是一个本地化的Reduce操作,是Map运算的本地后续操作,主要是在Map计算出中间文件钱做一个简单的合并重复健值的操作。这一操作有风险:如果做平均值计算使用Conbiner,最终的Reduce计算结果就会出错。

    4.Shuffle阶段
    Map任务的输出必须经过一个名叫做Shuffle的阶段才交给Reduce处理,Shuffle阶段是MapReduce的核心。

    1)Map阶段Shuddle
    通常计算的是海量数据,开设缓冲区,设置阈值(80%),满了以后就写入磁盘(分割)。写入磁盘前会根据Reduce数目分区。每次分割产生一个分割文件,在Map任务结束前,对分割文件合并。最终生成的文件放在TaskTracker能访问的本地目录内。等待Reduce Task去获取。

    2)Reduce阶段Shuddle
    第一步:获取Map 输出
    第二步:Merge:把各个Map合并
    第三步:Reduce Task的输入

    5.Redece阶段
    经过Shuffle阶段,Reduce任务的输入终于准备完毕,相关的数据以及被合并和汇总

    第三章 Hive原理实践

    持续更新

    展开全文
  • 阿里搜索离线大数据平台架构 首先我们来看一张离线数据处理系统(Offline System)的是一部图,以此来思考什么是搜索离线? 什么是离线?在阿里搜索工程体系中我们把搜索引擎、在线算分、SearchPlanner等ms...
  •  搜索离线数据处理是一个典型的海量数据批次/实时计算结合的场景,阿里搜索中台团队立足内部技术结合开源大数据存储和计算系统,针对自身业务和技术特点构建了搜索离线平台,提供复杂业务场景下单日批次处理千亿级...
  • 搜索离线大数据平台架构解读》,感想如下: 首先在阅读的之前,看到题目是,我不明白TPS是什么意思,于是我先百度了TPS的定义,TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务...
  • 搜索离线大数据平台架构解读 文章网址:https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247488245&idx=1&sn=1c70a32f11da7916cb402933fb65dd9f&chksm=e9292ffade5ea6ec7c6233f09d3...
  • 大数据相关体系梳理:今天小伙伴突然问我大数据都学习了些神马?就有了如下的对话,我也决定为她好好解答一下疑问。so,我们今天主要是以离线数据处理的技术为主。 在这里我还是要推荐下我自己建的大数据学习交流...
  • 项目 在实习中用到的大数据知识,特别是平台方面。我聊到了自己在福州实习的时候用到的 flume + kafka 内容。 Java 基础数据结构: HashMap 和 HashTable 的区别:看过源代码所以聊了源代码里面的实现。 还有 ...
  • 大数据项目离线流程

    2018-12-04 20:27:59
    大数据离线流程 1、数据来源 获取方式: 在页面预埋一段js程序,为页面上想要监听的标签绑定事件,只要用户点击或移动到标签,即可触发请求到nginx服务器,从而在nginx服务器上形成不断增长的日志文件。 本次项目中...
  • 大数据离线项目案例

    2020-01-07 11:30:03
    离线项目总共包括以下部分: 1.数据的预处理阶段 2.数据的入库操作阶段 3.数据的分析阶段 4.数据保存到数据库阶段 5.数据的查询显示阶段 给出数据格式表和数据示例,请先阅读数据说明,再做相应题目。 原始数据: ...
  • 阿里妹导读:搜索离线数据处理是一个典型的海量数据批次/实时计算结合的场景,阿里搜索中台团队立足内部技术结合开源大数据存储和计算系统,针对自身业务和技术特点构建了搜索离线平...
  • 1.到github 中下载 ckmcluster 源码。 2.在widows机器上安装maven.3.2.7,和jdk 1.7_x64 ,scala2.10.4,sbt0.13.12 并 且都配置好环境变量。...M2_HOME=C:\maven3.2.1\apache-maven-3.2.1
  • 大数据整体有一定的了解。 1.OLTP(Online Transaction processing)和OLAP (Online Analytical Processing) 从命名上就可以看出轻微的区别,一个是事物型,一个是分析型。2. 2.数据建模,最近刚好在做这方面的...
  • 何谓离线?...商品搜索的业务特性(海量数据、复杂业务)决定了离线系统从诞生伊始就是一个大数据系统,它有以下一些特点: 1. 任务模型上区分全量和增量 1)全量是指将搜索业务数据全部重新处...
  • 什么是搜索离线? 何谓离线?...商品搜索的业务特性(海量数据、复杂业务)决定了离线系统从诞生伊始就是一个大数据系统,它有以下一些特点: 1. 任务模型上区分全量和增量 1)全量是指将搜索业务...
  • 在使用淘宝时发现搜索框很神奇,它可以将将我们想要的商品全部查询出来,但是我们并感觉不到数据库查询的过程,速度很快。通过阅读这篇文章让我知道了搜索框背后包含着很多技术,对我以后的学习...离线系统是一个大...
1 2 3 4 5 ... 20
收藏数 31,096
精华内容 12,438
关键字:

离线大数据