当前位置:
首页
文章
后端
详情

书籍1 实战大数据(Hadoop+spark+Flink)1

这本书有8个章节,从基础逐渐展开,但是书籍总共也只有236页,还包含了Hadoop、spark和Flink三个知识点。所以感觉讲得可能不太会很深入。
这里毕竟是书籍的阅读部分,所以不管实用性强不强,书上说的这里都大概提一下。
首先是第一章节:

大数据技术概述

1. 什么是大数据?

简单说就是海量、高增长率和多样化的信息资产。

2. 大数据平台架构是什么?

这里讲得是一般企业的大数据平台的一个组成
一般都是5层,数据获取、数据储存、资源的调度管理、数据分析、数据服务与可视化
数据获取:数据总体上可以分为结构化和非结构化;结构化数据就可以简单理解为行数据,非结构化数据就是视频啊,图片之类的。
来源不同,格式不同,那么获取的技术肯定也是不同的。一般用户的点击数据就直接使用浏览器探针;网页数据用爬虫;MySQL数据库的binlog日志用canal组件;服务器日志就用flume组件;数据获取后为了方便应用,都存入kafka消息中间件。
数据存储
数据存储是大数据的基础,但是发展却没有CPU和内存快,这就导致了硬盘储存的速度不够,所以大数据平台的很多调优都是集中在磁盘I/O的调优。这里举个例子,一个1TB的硬盘,传输速度是100M/s,那么需要2.5小时才可以传输完。但是如果将硬盘分散到100个小硬盘里面储存,并行读取数据就可以在2分钟读完。这就涉及到了Hadoop的分布式文件系统HDFS和分布式列式数据库HBase,后面会提及。
数据处理
大数据处理按执行时间的跨度分为离线处理和实时处理。
离线处理就是批处理,时间跨度基本上是几分钟到数个小时之间。比如广电计算收视率计算。早期的离线处理用的是MapReduce,缺陷就是编程复杂,速度慢。后来出现了Spark内存计算框架和Flink实时计算框架,就将其取代了。这两个框架在离线和实时处理上都有所应用。离线上用得是spark core和Flink Dataset。
实时处理就是流处理,处理时长就在几秒以内,应用的非常广泛当前比较流行的是Spark Streaming和Flink datastreaming。后面会细说。
交互式分析 (数据处理2)
这个更像是交互式查询而不是分析。在完成离线或实时分析之后,需要根据不同的条件进行多维分析查询。像实时报表分析、实时大屏等等。
传统的数据库查询,用的多是MySQL、Oracle等,但是随着数据量的增加,这俩已经不够了。交互式查询也采用了分布式技术。
机器学习和数据挖掘(数据分析3)
大数据开发有时也是会需要用到机器学习库的,spark中的spark ml可以直接调用,也可以用它做数据挖掘。
资源管理
本质就是资源的统一管理和分配。大数据场景下需要用到很多的框架,他们在使用时会出现干扰,这个时候就得有yarn这种通用的资源管理系统。

3. 大数据工程师的技能树

主流开发语言是Java,Python主要就是用在业务数据的挖掘和分析上。
大数据平台构建也是一个重要能力,大数据平台一般指Hadoop集群,至少得会掌握Zookeeper分布式协调服务、HDFS分布式储存系统、YARN资源管理系统。
大数据的采集:数据一般有两种,一是数据库,二是日志数据。前者使用Sqoop、canal来完成,后者使用flume来完成。
大数据的储存与交换:HDFS在这方面其实优势不大,需要HBase来帮助,也经常需要Kafka消息队列来进行实时的消息中转服务。
大数据的离线和实时计算:离线计算需要掌握的技术有Hive、Spark Core、Spark SQL、Flink DataSet;实时计算需要掌握的技术有Spark Streaming和Flink DataStream。

4. 大数据项目需求分析与设计

4.1 需求项目分析

大数据的项目需求以数据为中心,大体会分为以下几个阶段:场景、概念、细节和界面的需求分析。
以新闻大数据实时分析案例来看,具体需求如下:

  • 采集新闻网站用户的浏览信息
  • 统计排名前十的新闻话题
  • 分析每天哪些时段的浏览新闻量最高
  • 分析每日新闻总量
    上面的四个阶段其实写得有点复杂,实际操作时我们需要知道,场景就是要我们明白系统的组织形式和大概功能是什么;概念就是利于用户的日志信息来分析相应的需求结果;细节分析就是具体怎么做;界面分析就是最后的展示环节了。
    我们的整个系统会包含数据的采集、存储、过滤清洗、统计分析和可视化

4.2 系统架构设计

一般情况下完整的大数据平台架构包含数据获取、数据存储、资源管理、数据处理、交互式分析、机器学习与数据挖掘和数据服务与可视化。但具体的分析还得看需求,比如这里明显就是不需要机器学习部分的,大体架构如下:
我将其分为5层:

  • 采集层:数据来源一般有2个。对于日志文件使用Flume,对于关系型数据库用Sqoop。
  • 存储层:需要用到Kafka的消息队列、MySQL、HBase和HDFS。
  • 计算层:这里要用到Flink(实时计算)、Spark(内存计算)、MapReduce(离线计算)和Hive(数据仓库)这里需要yarn来进行资源调度。
    以上这几步还要用zookeeper来进行分布式协调服务,到后面服务层就需要统一一下访问的接口(Java/Scala API)
  • 服务层:查询服务接口(HTTP+JSON),处理流程,查询缓存(Redis)
  • 应用层:HUE、达芬奇、H5+Echarts(可视化)
    以上步骤所使用的开发工具是IDEA Maven

4.3离线和实时计算数据流程设计

离线:用Flume采集日志服务器中的数据,然后写入HBase数据库,接着通过Hive和HBase集成对数据进行离线分析,并通过Sqoop通过离线结果导入MySQL数据库,最后应用层读取MySQL数据实现大屏展示。
实时:同样也是Flume采集日志数据,然后写入Kafka消息队列,接着使用spark streaming或Flink DataStream来对数据进行实时分析,分析结果放入MySQL,然后大屏展示。

以上就是书籍1的第一章大数据技术概述

免责申明:本站发布的内容(图片、视频和文字)以转载和分享为主,文章观点不代表本站立场,如涉及侵权请联系站长邮箱:xbc-online@qq.com进行反馈,一经查实,将立刻删除涉嫌侵权内容。

同类热门文章

深入了解C++中的new操作符:使用具体实例学习

C++中的new操作符是动态分配内存的主要手段之一。在程序运行时,我们可能需要动态地创建和销毁对象,而new就是为此提供了便利。但是,使用new也常常会引发一些问题,如内存泄漏、空指针等等。因此,本文将通过具体的示例,深入介绍C++中的new操作符,帮助读者更好地掌握其使用。


深入了解C++中的new操作符:使用具体实例学习

怎么用Java反射获取包下所有类? 详细代码实例操作

Java的反射机制就是在运行状态下,对于任何一个类,它能知道这个类的所有属性和方法;对于任何一个对象,都能调用这个对象的任意一个方法。本篇文章将通过具体的代码示例,展示如何通过Java反射来获取包下的所有类。


怎么用Java反射获取包下所有类? 详细代码实例操作

员工线上学习考试系统

有点播,直播,在线支付,三级分销等功能,可以对学员学习情况的监督监控,有源码,可二次开发。支持外网和局域网私有化部署,经过测试源码完整可用!1、视频点播:视频播放,图文资料,课件下载,章节试学,限时免

员工线上学习考试系统

了解Java中的volati关键字的作用 以及具体使用方法

本篇文章将和大家分享一下Java当中的volatile关键字,下面将为各位小伙伴讲述volatile关键字的作用以及它的具体使用方法。


了解Java中的volati关键字的作用 以及具体使用方法

Java Map 所有的值转为String类型

可以使用 Java 8 中的 Map.replaceAll() 方法将所有的值转为 String 类型: 上面的代码会将 map 中所有的值都转为 String 类型。 HashMap 是 Java

Java Map 所有的值转为String类型