当前位置: 首页 > news >正文

如何从0到1搭建大数据平台

大数据时代这个词被提出已有10年了吧,越来越多的企业已经完成了大数据平台的搭建。随着移动互联网和物联网的爆发,大数据价值在越来越多的场景中被挖掘,随着大家都在使用欧冠大数据,大数据平台的搭建门槛也越来越低。借助开源的力量,任何有基础研发能力的组织完全可以搭建自己的大数据平台。但是对于没有了解过大数据平台、数据仓库、数据挖掘概念的同学可能还是无法顺利完成搭建,因为你去百度查的时候会发现太多的东西,和架构,你不知道如何去选择。今天给大家分享下大数据平台是怎么玩的。

架构总览

通常大数据平台的架构如上,从外部采集数据到数据处理,数据显现,应用等模块。

数据采集

用户访问我们的产品会产生大量的行为日志,因此我们需要特定的日志采集系统来采集并输送这些日志。Flume是目前常用的开源选择,Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方的能力。

对于非实时使用的数据,可以通过Flume直接落文件到集群的HDFS上。而对于要实时使用的数据来说,则可以采用Flume+Kafka,数据直接进入消息队列,经过Kafka将数据传递给实时计算引擎进行处理。

业务数据库的数据量相比访问日志来说小很多。对于非实时的数据,一般定时导入到HDFS/Hive中。一个常用的工具是Sqoop,Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 :MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。而对于实时的数据库同步,可以采用Canal作为中间件,处理数据库日志(如binlog),将其计算后实时同步到大数据平台的数据存储中。

数据存储

无论上层采用何种的大规模数据计算引擎,底层的数据存储系统基本还是以HDFS为主。HDFS(Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础。具备高容错性、高可靠、高吞吐等特点。

HDFS存储的是一个个的文本,而我们在做分析统计时,结构化会方便需要。因此,在HDFS的基础上,会使用Hive来将数据文件映射为结构化的表结构,以便后续对数据进行类SQL的查询和管理。

数据处理

数据处理就是我们常说的ETL。在这部分,我们需要三样东西:计算引擎、调度系统、元数据管理。

对于大规模的非实时数据计算来讲,目前一样采用Hive和spark引擎。Hive是基于MapReduce的架构,稳定可靠,但是计算速度较慢;Spark则是基于内存型的计算,一般认为比MapReduce的速度快很多,但是其对内存性能的要求较高,且存在内存溢出的风险。Spark同时兼容hive数据源。
从稳定的角度考虑,一般建议以Hive作为日常ETL的主要计算引擎,特别是对于一些实时要求不高的数据。Spark等其他引擎根据场景搭配使用。

实时计算引擎方面,目前大体经过了三代,依次是:storm、spark streaming、Flink。Flink已被阿里收购,大厂一直在推,社区活跃度很好,国内也有很多资源。

调度系统上,建议采用轻量级的Azkaban,Azkaban是由Linkedin开源的一个批量工作流任务调度器。https://azkaban.github.io/

一般需要自己开发一套元数据管理系统,用来规划数据仓库和ETL流程中的元数据。元数据分为业务元数据和技术元数据。

  • 业务元数据,主要用于支撑数据服务平台Web UI上面的各种业务条件选项,比如,常用的有如下一些:移动设备机型、品牌、运营商、网络、价格范围、设备物理特性、应用名称等。这些元数据,有些来自于基础数据部门提供的标准库,比如品牌、价格范围等,可以从对应的数据表中同步或直接读取;而有些具有时间含义的元数据,需要每天通过ETL处理生成,比如应用信息。为支撑应用计算使用,被存储在MySQL数据库中;而对于填充页面上对应的条件选择的数据,则使用Redis存储,每天/月会根据MySQL中的数据进行加工处理,生成易于快速查询的键值对类数据,存储到Redis中。

  • 技术元数据,主要包括数据仓库中的模型说明、血缘关系、变更记录、需求来源、模型字段信息等,详细的可以查看数据分析师应该了解的数据仓库(3)

数据流转

通过上面一张图了解数据采集,数据处理,到数据展现的数据流转。通常我们在实际工作中,从数据源到分析报告或系统应用的过程中,主要包括数据采集同步、数据仓库存储、ETL、统计分析、写入上层应用数据库进行指标展示。这是最基础的一条线,现在还有基于数据仓库进行的数据分析挖掘工作,会基于机器学习和深度学习对已有模型数据进一步挖掘分析,形成更深层的数据应用产品。

数据应用

俗话说的好,“酒香也怕巷子深”。数据应用前面我们做了那么多工作为了什么,对于企业来说,我们做的每一件事情都需要体现出价值,而此时的数据应用就是大数据的价值体现。数据应用包括辅助经营分析的一些报表指标,商城上基于用户画像的个性化推送,还有各种数据分析报告等等。

好的数据应用一定要借助可视化显现,比如很多传统企业买的帆软。开源界推荐一款可视化工具Superset,可视化种类很多,支持数据源也不少,使用方便。最近数砖收购的redash,也为了自己能一统大数据处理平台。可以看出可视化对于企业数据价值体现是很重要的。

RECOMMEND

推荐阅读

《企业级大数据平台构建:架构与实现》

这是一部教你如何从0到1架构与实现一个企业级大数据平台的著作,是作者在大数据和系统架构领域工作超过20000小时的经验总结。

作者从横向视角出发,手把手教你如何拉通Hadoop体系技术栈,以此搭建一个真实可用、安全可靠的大数据平台。通过阅读本书,大家一定能找到灵感和思路来应对实际工作中面对的问题。

本书在逻辑上分为三大部分:

背景篇(第1~2章):简单阐述了企业级大数据平台的重要性,并指出了作为一个企业级大数据平台应当具备的能力。接着抛砖引玉介绍了通过Hadoop生态体系去构建一个企业级大数据平台可以使用的技术栈的核心概念,如HDFS、HBase、Spark等。

方法篇(第3~6章):详细讲解了集群服务、安全网关、服务授权、Kerberos认证、单点登录和集群用户整合等各个方面的背景知识与配置整合步骤。

扩展篇(第7~8章):介绍了如何用编写Restful服务的形式进一步扩展平台功能的一些思路,以便提高平台的易用性和可用性。

点击链接了解详情并购买

更多精彩回顾

书讯 |华章计算机拍了拍你,并送来了8月书单(下)

书讯 | 华章计算机拍了拍你,并送来了8月书单(上)

上新 | 三个男人一台戏,为云原生应用和OpenShift写了一本书
书单 | 《天才引导的历程》| 西安交通大学送给准大一新生的礼物

干货 | 机器人干活,我坐一边喝茶——聊聊最近爆火的RPA

收藏 | 揭秘阿里巴巴的客群画像

点击阅读原文购买

相关文章:

  • 策略产品经理实践:主观评估的方法论
  • 一条SQL引发的“血案”:与SQL优化相关的4个案例
  • AI移动端算法优化之盒子滤波
  • 研究股票?我们偷偷告诉你一个算法
  • 用Spark进行实时流计算的那些技巧
  • 数字人民币要来了!试点全面展开,一文看懂央行数字货币背后逻辑
  • 模型独立学习:多任务学习与迁移学习
  • 看完这篇还不了解 Nginx,那我就哭了!
  • 流量红利已经耗尽?这几本书带你玩转电商各路技巧
  • 乘风破浪的迁移学习!四字成语讲明白这个大热研究方向
  • 详解阿里巴巴1688日常业务中的榜单算法
  • 干货请收好:终于有人把用户画像的流程、方法讲明白了
  • 【第18期】​未来的计算世界里,将会是“万物皆流”?
  • 又双叒叕到了薅羊毛时刻!花160元买400元的书
  • ​TypeScript都不会用,也敢说会前端?
  • python3.6+scrapy+mysql 爬虫实战
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • angular2开源库收集
  • gitlab-ci配置详解(一)
  • JS专题之继承
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • mysql外键的使用
  • Netty+SpringBoot+FastDFS+Html5实现聊天App(六)
  • Octave 入门
  • Odoo domain写法及运用
  • Vue.js源码(2):初探List Rendering
  • vue自定义指令实现v-tap插件
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 入口文件开始,分析Vue源码实现
  • 我的业余项目总结
  • 我这样减少了26.5M Java内存!
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 转载:[译] 内容加速黑科技趣谈
  • hi-nginx-1.3.4编译安装
  • MyCAT水平分库
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • 交换综合实验一
  • ​2020 年大前端技术趋势解读
  • ​ArcGIS Pro 如何批量删除字段
  • ​人工智能书单(数学基础篇)
  • #13 yum、编译安装与sed命令的使用
  • #define、const、typedef的差别
  • #控制台大学课堂点名问题_课堂随机点名
  • (03)光刻——半导体电路的绘制
  • (9)STL算法之逆转旋转
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (C++)八皇后问题
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (八)c52学习之旅-中断实验
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (一) springboot详细介绍
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default