内容来源:2017年5月13日,周末去哪儿架构师李锡铭在“Java开发者大会 | Java之美【上海站】”进行《大数据平台快速解决方案中》演讲分享。IT大咖说做为独家视频合做方,经主办方和讲者审阅受权发布。html
阅读字数:1891 | 4分钟阅读node
大数据(big data),指没法在必定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是须要新处理模式才能具备更强的决策力、洞察发现力和流程优化能力的海量、高增加率和多样化的信息资产。周末去哪儿架构师李锡铭根据本身的成功经验,为咱们分享大数据平台快速解决方案。web
嘉宾演讲视频和PPT地址:t.cn/R9an7Rr算法
当时咱们肯定要作大数据的时候,有两种选型。第一种选型是用用原生的、开源的大数据技术,须要本身搭建;第二种是ODPS。sql
后来咱们选择了利用原生大数据,本身搭建一个大数据平台。由于咱们已经有了必定的小积累,而且也想作一个大数据方面的技术沉淀。数据库
在移动互联网时代,用户全部的行为、浏览、记录和收藏等全部的数据,咱们都会把它拿下来分析,前段时间阶段性沉淀的东西有多少,是对以前的一个总结。这个数据还能帮助咱们进行深度挖掘,以后如何对不一样用户分类,作一个精准化的营销定位。编程
每一个公司都会对这些数据进行报表级的展示。咱们最开始的数据实现方式是把全部用户的行为数据放到传统的关系型数据库中,利用纯Java应用程序去读这张表。当计算某个指标的时候,还会关联若干张子表。这张主表大概有几千万,其它子表也是百万级甚至千万级的。若是单纯用Java去算的话,还要额外处理多线程。多线程
因此咱们用传统的Java纯程序+关系型数据库去处理报表的时候,在存储和计算的性能上会出现问题,以致于报表需求愈来愈慢。架构
在这样的大背景下,咱们改为了使用大数据去处理这种场景。框架
Hadoop是如今全部大数据计算存储的一个底层概念,后面全部衍生的大数据产品都是在Hadoop的基础上进行衍生的。
这张图是目前大数据平台的架构。
原生的Hadoop应该包含了Hdfs(文件存储)、Yarn(资源调度)和Mapreduce(算法)。
Spark是相似于Mapreduce的一个计算框架,它在不少场景中的性能会比原生的Mapreduce好不少,尤为是迭代计算的时候,会有好几个数量级的提高。
Sqoop是一个数据的迁移工具。
Hive是对底层Hdfs系统的文件抽象出一个相似Mysql的关系型数据库,但大前提是它是在Hadoop这个大的语义下的关系型数据库。
Oozie是一个任务编排和调度的框架。
Hue是大数据的管理后台。
Zookeeper是分布式协调工具。
基础数据:Mysql,File。基础数据层是游离于大数据以外的概念,它是传统的数据来源。
大数据存储:Hdfs、Hive。大数据存储是最基础的文件存储,在这基础上抽象出一个大数据的关系型数据库。
大数据计算:Mapreduce、Spark、Sqoop。Mapreduce是原生的,Spark是新生的,Sqoop是数据转移的工具。
大数据协调与调度:Yarn、Zookeeper、Oozie。Yarn是原生的,Zookeeper是一个分布式保证文件原子性的工具,Oozie是调度工具。
大数据展示:Hue。Curd的展示层。
最开始说过,咱们遇到的问题是,Mysql的表存不下,计算也有问题。在这个场景下要把数据,从Mysql转到大数据,并利用大数据进行计算,最后作一个展示。
它的流程是,首先经过Sqoop把Mysql的数据一次性或是增量的同步到一张Hive表里,用Hive Sql写好查询后,本质上Hive Sql会转化成Mapreduce任务再去执行,最后数据就展示出来了。
不少时候后台的服务Control层会有入口和出口,咱们须要把入口和出口的参数都记下来,方便之后排错或作统计方面的应用。
在应用程序里,把这些消息定时写到消息队列中,用Spark定时读消息队列,并把这些读取到的消息按Spark的方式作一个编程。这个任务最终会被丢到Hadoop的底层计算里,而后用Yarn去调度,计算出结果,把这个结果写入Hive,这就完成了一次流式计算。
这里写了一个Hive Sql,与传统Mysql的写法几乎同样。Hive Sql写好之后点执行。它的过程是把Sql首先交给Hive去跑,Hive用本身的Sql解析引擎把这个任务翻译成Mapreduce,Mapreduce再用Yarn跑在Hadoop上,最终把结果跑出来。
HadoopHdfs是基础的存储层。
HadoopHdfs其实只包含了两种类型,一个是Namenode,一个是Datanode。Namenode是一个管理的节点,而datanode只负责数据的存储和冗余。
Hadoop原生的计算框架是Mapreduce,而spark是一个新兴的计算框架,它更快更全面。
资源管理器的架构内包含rescource manager和node manager。Rescource manager是管理节点,node manager是work节点。
把任务丢给rescource manager,它去把任务分发给每一个节点,作一些状态的变换,最后把结果经过rescource manager汇总之后,处理完毕交给客户端。
hive的架构并非很复杂,上层是一些用户的API、web页面和命令行。它的核心是执行引擎,把sql翻译成大数据平台能够接受的任务。底层基于存储,它能够存在hdfs上。
主要用于在hadoop与传统的数据库间进行数据的传递。
大数据任务编排调度。
若是想要学习一些大数据相关的东西,我推荐能够先掌握一些基础,而后找一个场景套进技术里,进行快速实践。在快速实践的过程当中会发现不少问题须要解决,不少知识须要补充,因此要在实践中前行,在错误中补充。
个人分享到此结束,谢谢你们!