大数据生态

本文最后更新于2018年1月18日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

=Start=

缘由:

虽然之前因为大量日志安全分析、处理的原因,已经实际用过Hadoop MapReduce、Storm、Hive、Presto等大数据工具,但毕竟不是专门做大数据相关工作的,而且现在大数据的发展速度也快,所以也经常对一些名词是云里雾里的——不甚明白,因此一直想找机会大致系统的了解一下,也不希望多么精深,只希望不落后于这个时代就行。

正文:

参考解答:
理论基础:
  • 《Google File System》:论述了怎样借助普通机器有效的存储海量的大数据;(HDFS是对应的开源实现)
  • 《Google MapReduce》:论述了怎样快速计算海量的数据;(Hadoop MapReduce是其对应的开源实现)
  • 《Google BigTable》:论述了怎样实现海量数据的快速查询;(HBase是其对应的开源实现)
要解决的核心问题:
  • 存储,海量的数据怎样有效的存储?主要包括HDFS;
  • 计算,海量的数据怎样快速计算?主要包括MapReduce、Storm、Spark、Flink等;
  • 查询,海量数据怎样快速查询?主要为NoSQL和OLAP,NoSQL主要包括HBase、 Cassandra等,其中OLAP包括Kylin、Impla等,其中NoSQL主要解决随机查询,OLAP技术主要解决关联查询;
  • 挖掘,海量数据怎样挖掘出隐藏的知识?也就是当前火热的机器学习和深度学习等技术,包括TensorFlow、Caffe、Mahout等;
一图流:

数据存储、资源管理调度、离线批处理、数据仓库、实时流处理、键值查询、数据挖掘、一些功能组件(ZooKeeper、Kafka、……)

参考链接:

=END=

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/3743.html

《大数据生态》上有34条评论

  1. 大数据(big data):基础概念
    https://zhuanlan.zhihu.com/p/33619503

    4. “大数据(big data)“的定义——6个”V”

    我们通过6个维度来定义什么是"大数据",这个维度的英文单词都是由字母"V"开头,所以也可以简记为6个“V”。分别是:Volume(规模)、Velocity(速度)、Variety(多样)、Veracity(质量)、Valence(连接)、Value(价值)

    Volume(规模):指的是每天产生的海量数据
    Velocity(速度):指的是数据产生的速度越来越快
    Variety(多样):指的是数据格式的多样性,例如文本、语音、图片等
    Veracity(质量):指的是数据的质量差别可以非常大
    Valence(连接):指的是大数据之间如何产生联系
    Value(价值):数据处理可以带来不同寻常的洞见进而产生价值

  2. 浅谈大数据平台基建的逻辑
    http://gigix.thoughtworkers.org/2018/3/16/infrastructure-of-big-data/

    接入层(Landing):以和源系统相同的结构暂存原始数据。有时被称为“贴源层”或ODS。
    整合层(Integration):持久存储整合后的企业数据,针对企业信息实体和业务事件建模,代表组织的“唯一真相来源”。有时被称为“数据仓库”。
    表现层(Presentation):为满足最终用户的需求提供可消费的数据,针对商业智能和查询性能建模。有时被称为“数据集市”。
    语义层(Semantic):提供数据的呈现形式和访问控制。例如某种报表工具。
    终端用户应用(End-user applications):使用语义层的工具,将表现层数据最终呈现给用户,包括仪表板、报表、图表等多种形式。
    元数据(Metadata):记录各层数据项的定义(Definitions)、血缘(Genealogy)、处理过程(Processing)。

  3. 技术资源推荐(数据仓库篇)
    http://www.mdjs.info/2018/03/21/data-warehouse/data-warehouse-resources/

    1. 0x00 前言
    2. 0x01 书籍推荐
      2.1. 一、数据仓库工具箱(第3版):维度建模权威指南
      2.2. 二、数据仓库(原书第4版)
      2.3. 三、数据挖掘:概念与技术(原书第3版)
      2.4. 四、大数据之路:阿里巴巴大数据实践
      2.5. 五、大数据日知录
    3. 0xFF 总结

  4. 常用的几种大数据架构剖析
    https://insights.thoughtworks.cn/common-big-data-infrastructure/

    总的来说,目前围绕Hadoop体系的大数据架构大概有以下几种:

    传统大数据架构
    流式架构
    Lambda架构(Lambda的数据通道分为两条分支:实时流和离线。)
    Kappa架构(将实时和流部分进行了合并,将数据通道以消息队列进行替代。)
    Unifield架构(将机器学习和数据处理揉为一体,从核心上来说,Unifield依旧以Lambda为主,不过对其进行了改造,在流处理层新增了机器学习层。)

  5. 模式识别、机器学习傻傻分不清?给我三分钟!
    https://mp.weixin.qq.com/s/rzhrjG0B40-Ml9vkuiTpMw

    AI元老——模式识别
    那什么是模式识别?它指的是,对表征事物或现象的各种形式的信息进行处理和分析,从而达到对事物或现象进行描述、辨认、分类和解释的目的。

    AI大众情人——机器学习
    不同于模式识别中人类主动去描述某些特征给机器,机器学习可以这样理解:机器从已知的经验数据(样本)中,通过某种特定的方法(算法),自己去寻找提炼(训练/学习)出一些规律(模型);提炼出的规律就可以用来判断一些未知的事情(预测)。

    https://www.zhihu.com/question/38106452/answer/211218782
    http://blog.csdn.net/feichizhongwu888/article/details/52727958
    https://www.cnblogs.com/muchen/p/5434359.html#_label0

  6. 自底向上——知识图谱构建技术初探
    https://www.anquanke.com/post/id/149122

    “The world is not made of strings , but is made of things.” ——辛格博士,from Google.

    知识图谱,是结构化的语义知识库,用于迅速描述物理世界中的概念及其相互关系,通过将数据粒度从document级别降到data级别,聚合大量知识,从而实现知识的快速响应和推理。

    1-定义
    2-数据类型和存储方式
    3-知识图谱的架构
    3.1-逻辑架构
    3.2-技术架构
    4-构建技术
    4.1-信息抽取
    4.1.1-实体抽取
    4.1.2-关系抽取
    4.1.3-属性抽取
    4.2-知识融合
    4.2.1-实体链接
    4.2.2-知识合并
    4.3-知识加工
    4.3.1-本体构建
    4.3.2-知识推理
    4.3.3-质量评估
    4.4-知识更新
    5-知识图谱的应用
    智能搜索——也是知识图谱最成熟的一个场景,自动给出搜索结果和相关人物;
    不一致性验证(类似交叉验证)——关系推理;
    异常分析(运算量大,一般离线);

  7. HIVE中get_json_object与json_tuple使用
    https://blog.csdn.net/sinat_29508201/article/details/50215351

    Hive JSON数据处理的一点探索
    https://www.cnblogs.com/yurunmiao/p/4728285.html

    Hive get_json_object用法
    https://sjq597.github.io/2015/11/05/Hive-get-json-object%E7%94%A8%E6%B3%95/

    # 取内容为json字符串格式的 content 列的 status 字段的值
    select get_json_object(content,'$.status') from test limit 1;

    Hive 中的复合数据结构简介以及一些函数的用法说明
    https://my.oschina.net/leejun2005/blog/120463

  8. 从面试官的角度谈谈大数据面试
    https://mp.weixin.qq.com/s/xX5lMAiqaA4-g63honeFbA

    01 技术能力
    这个是硬指标,不过关的基本是可以一票否决的,当然技术能力的标准是根据工作年限,面试职位和薪资要求共同来决定的。面试官要根据实际情况有自己的判断。
    那技术能力如何考察?我提几个方面
    基础能力
    java 的 jvm、多线程、类加载等
    scala 伴生对象,偏函数,柯里化等
    还有shell和python的就不举例了
    HBase读写流程
    Yarn任务提交流程等等
    底层原理
    Hbase是如何存数据的,为什么读得快
    spark为什么就算不在内存跑也比mr快
    zookeeper数据怎么保证一致性
    说说选举机制
    等等
    源码
    有没有读过源码?
    详细说下你从源码中获取到了什么信息,有什么帮助
    架构设计能力
    如何技术选型,考虑哪些因素?
    设计一个同时满足实时和离线分析需求的平台
    为什么这么设计?
    另外
    以上问题如果回答得不太好,可以再给个机会让他说下自己最熟悉的技术,不限制从哪些方面讲。

    02 解决问题能力
    如何排查hbase集群cpu过高问题
    如何优化spark任务
    ......

    03 方案设计能力
    说说数据仓库设计建模过程
    说说数据质量监控系统怎么设计
    ......

    04 想法
    这是一道开放题
    对数据治理有什么想法
    对职业生涯的规划
    ......

    05 还可以再问些偏向管理的问题
    如何调动组员的技术学习积极性
    如何高效地跨部门协作
    ……

    06 唠嗑
    上面的问题问完觉得感觉可以的话可以,可以唠唠嗑,问些其他问题。
    为何离职?
    觉得自己是什么样的性格等等
    当然这些都不太重要了主要就是考察下你的语言表达能力和三观是不是正的。

  9. 给SQL用户提供的一份简单但实用的Hive SQL备忘录(Simple Hive ‘Cheat Sheet’ for SQL Users)
    https://zh.hortonworks.com/blog/hive-cheat-sheet-for-sql-users/

    多表联合查询(Selecting from multiple tables)
    # MySQL语法
    SELECT pet.name, comment FROM pet, event WHERE pet.name = event.name;
    # Hive SQL语法
    SELECT pet.name, comment FROM pet JOIN event ON (pet.name = event.name);

    描述表的格式
    # MySQL语法
    DESCRIBE table;
    # Hive SQL语法
    DESCRIBE (FORMATTED|EXTENDED) table;

    删除数据库
    # MySQL语法
    DROP DATABASE db_name;
    # Hive SQL语法
    DROP DATABASE db_name (CASCADE);

  10. 大数据平台CDH集群离线搭建
    http://www.open-open.com/lib/view/open1453201603261.html
    https://segmentfault.com/a/1190000004331498

    以Apache Hadoop为主导的大数据技术的出现,使得中小型公司对于大数据的存储与处理也拥有了武器。目前Hadoop有不少发行版:华为发行版 收费、Intel发行版 收费、Cloudera发行版(Cloudera’s Distribution Including Apache Hadoop,简称 CDH)免费、Hortonworks发行版(Hortonworks Data Platform,简称 HDP)免费 等,所有这些发行版均是基于Apache Hadoop社区版衍生出来的。

    对于国内而言,绝大多数选择CDH版本,主要理由如下:
    (1)CDH对Hadoop版本的划分非常清晰,只有两个系列的版本(现在已经更新到CDH5.20了,基于hadoop2.x),分别是cdh3和cdh4,分别对应第一代Hadoop(Hadoop 1.0)和第二代Hadoop(Hadoop 2.0),相比而言,Apache版本则混乱得多;
    (2)CDH文档清晰,很多采用Apache版本的用户都会阅读cdh提供的文档,包括安装文档、升级文档等。

  11. Google后Hadoop时代的新“三驾马车”——Caffeine、Pregel、Dremel
    https://www.csdn.net/article/2012-08-20/2808870
    https://www.wired.com/2012/08/googles-dremel-makes-big-data-look-small/

    Hadoop的火爆要得益于Google在2003年底和2004年公布的两篇研究论文,其中一份描述了GFS(Google File System),GFS是一个可扩展的大型数据密集型应用的分布式文件系统,该文件系统可在廉价的硬件上运行,并具有可靠的容错能力,该文件系统可为用户提供极高的计算性能,而同时具备最小的硬件投资和运营成本。

    另外一篇则描述了MapReduce,MapReduce是一种处理大型及超大型数据集并生成相关执行的编程模型。其主要思想是从函数式编程语言里借来的,同时也包含了从矢量编程语言里借来的特性。基于MapReduce编写的程序是在成千上万的普通PC机上被并行分布式自动执行的。8年后,Hadoop已经被广泛使用在网络上,并涉及数据分析和各类数学运算任务。但Google却提出更好的技术。

    在2009年,网络巨头开始使用新的技术取代GFS和MapReduce。Mike Olson表示“这些技术代表未来的趋势。如果你想知道大规模、高性能的数据处理基础设施的未来趋势如何,我建议你看看Google即将推出的研究论文”。

    自Hadoop兴起以来,Google已经发布了三篇研究论文,主要阐述了基础设施如何支持庞大网络操作。其中一份详细描述了Caffeine,Caffeine主要为Google网络搜索引擎提供支持。
    在本质上Caffeine丢弃MapReduce转而将索引放置在由Google开发的分布式数据库BigTable上。作为Google继GFS和MapReduce两项创新后的又一项创新,其在设计用来针对海量数据处理情形下的管理结构型数据方面具有巨大的优势。这种海量数据可以定义为在云计算平台中数千台普通服务器上PB级的数据。

    另一篇介绍了Pregel,Pregel主要绘制大量网上信息之间关系的“图形数据库”。而最吸引人的一篇论文要属被称之为Dremel的工具。

  12. 知识图谱发展的难点&构建行业知识图谱的重要性
    https://paper.tuisec.win/detail/1e9aa1c785fbae7
    http://www.woshipm.com/it/1716953.html

    知识图谱又称为科学知识图谱,在图书情报界称为知识域可视化,或知识领域映射地图,用来显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及载体,挖掘、分析、构建、绘制和显示知识及他们互相之间的关系。

    一、概述
    尽管人工智能依靠机器学习和深度学习取得了快速进展,但这些都是弱人工智能,对于机器的训练,需要人类的监督以及大量的数据来喂养,更有甚者需要人手动对数据进行标记,对于强人工智能而言,这是不可取的。要实现真正的类人智能,机器需要掌握大量的常识性知识,以人的思维模式和知识结构来进行语言理解、视觉场景解析和决策分析。

    二、什么是知识图谱
    百度百科定义:知识图谱又称为科学知识图谱,在图书情报界称为知识域可视化,或知识领域映射地图,用来显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及载体,挖掘、分析、构建、绘制和显示知识及他们互相之间的关系。

    三、为什么需要知识图谱
    四、知识图谱的诞生
    五、知识图谱的原理
    六、知识图谱的发展方向
    七、行业知识图谱的重要性

  13. 大数据发展史|大数据
    https://mp.weixin.qq.com/s/g-1OWKEL0IoqCX1oqCpSXQ

    一、大数据技术产生史
    首先看一下我们要介绍的大数据技术栈包含什么:
    Hadoop; MapReduce; NoSQL; Spark; Flink; Hive....
    这个都属于大数据的技术栈,初看起来,杂乱无章。对于初学者更甚,无从下手,更不知道哪些是重点,哪些是辅助技术。
    所以,我们先把这些技术的产生搞清楚,以及他们能应用什么场景。这样你就做到心里有数,剩下的就是各个击破,自己慢慢学习。

    # 起源于Google
    大家都知道最早搜索引擎是Google.其功能是提供互联网用户的信息的检索功能。那搜索引擎具体都干了哪些事呢?
    其实很简单的两件事:
    一是数据采集,也就是网页的爬取;
    二是数据搜索,也就是索引的构建;

    数据采集离不开存储,索引的构建也需要大量计算,所以存储容器和计算能力贯穿搜索引擎的整个更迭过程。
    在2004年前后,Google发表了三篇重要的论文,俗称“三驾马车”:
    GFS
    MapReduce
    BigTable

    在互联网早期,互联网产品用户规模都不是很大,很少的人会关注分布式解决方案,都在单体机器上寻找解决方案,也就是在硬件上下功夫;
    而Google在当时的互联网界,不管是用户规模还是所产生数据量都是TOP级别的。所以,对分布式和集群等方式,解决存储方式研究较早,同时也采用横向拓展的思路,去研发系统。

    # Hadoop的产生
    最早关注 Google 大数据论文的是一个程序员,也不陌生,Lucene项目的创始人 Doug Cutting。他看到论文后,颇为激动,程序员,动手能力当然很强,很快就依据论文的原理实现了类似 GFS 和 MapReduce的功能框架。注意是类似哦。
    到了2006年,DC 开发的类似MapReduce功能的大数据技术,被独立出来,单独开发运维。这个也就是不就后被命名为 Hadoop 的产品。 该体系里面包含,大家熟知的分布式文件系统 HDFS 以及大数据计算引擎 MapReduce。

    # Yahoo 优化改编
    当 Hadoop 发布之后,另一个当时的搜素引擎巨头 Yahoo 很快就使用了起来;
    到了2007年,国内的百度也开始使用了 Hadoop 进行大数据存储与计算了。
    又过了一年,2008年,Hadoop 正式成为 Apache 的顶级项目,自此,Hadoop 彻底火了起来,也被更多的人熟知。
    当然任何系统都不可能是完美的,也不可能是通用的,并非适用于每个公司。 Yahho 使用了 MapReduce 进行大数据计算时,觉得开发太繁琐,于是他们自己便开发了一个新的系统--Pig。
    Pig是一个基于 Hadoop 类 SQL 语句的脚本语言。经过编译后,直接生成 MapReduce 程序,在 Hadoop系统上运行。所以 Yahho 也是在Hadoop 基础上进行了 编程上的优化使用。

    # Facebook 的数据分析 Hive
    Yahho 的 Pig 是一种类似于 SQL 语句的脚本语言,相比于直接编写 MapReduce 简单许多。但是使用者还是要学习这种新的脚本语言。
    又一家巨头公司出现了 Facebook 为了数据分析也开发一种新的分析工具,叫做 Hive 的东西,hHive 能直接使用SQL语句进行大数据计算,这样,只要是具有数据库关系型语言的开发人员就能直接使用大数据平台。大大的降低了使用的门槛,又将大数据技术推进了一步。
    至此,大数据主要的技术栈基本形成。包括 HDFS、MapReduce、Pig、Hive.

    # 责任单一 Yarn
    此时,MapReduce 一个资源调度框架,又是一个执行引擎。为了责任单一化,将这两种功能进行了分离,Yarn 项目启动了。
    2012年, Yarn 成为了独立的项目,开始运营,被各大数据厂商的产品支持,成为了主流的资源管理调度系统。

    # 效率还是效率 Spark
    同年,UC 伯克利 AMP 实验室的一位博士,在使用 MapReduce 进行大数据实验计算时,发现性能非常差,不能满足其计算需求。
    为了改进这种效率低下的工作方式,于是开发出了一个性能优越的替代产品,叫做 Spark 。由于Spark 性能卓著,一经推出,就受到了业界的认可,开始全面替代 MapReduce。

    # 批处理计算和流式计算
    大数据计算根据分析数据的方式不同,有两个类别。一种叫做批处理计算,比如 MapReduce、Spark 这种,针对的是某个时间段的数据进行计算(比如“天”“小时”的单位)。
    这种计算由于数据量大,需要花费几十分钟甚至更长。同时这种计算的数据是非在线实时获取的数据,也就是历史积累的数据,也就是离线数据,这种计算又被称为“离线计算”。
    离线计算针对的是历史数据,相对的就有针对的实时数据进行计算,也就是系统接收到数据就进行计算,这种计算叫做“流式计算”。
    由于处理的数据是实时在线产生的,又被称为“实时计算”。

    # 流式计算技术 Storm、Flink、 Spark Streaming
    怎么理解流式计算呢?很简单的,把批处理计算的时间单元缩小到数据产生的间隔就是了。“流式计算”具有代表性的框架,比如:Storm、Flink、 Spark Streaming。
    特别说一点,Flink 就牛了一些,既支持流式计算又支持批处理计算。

    # 非关系型数据库
    在2011年 左右 NoSQL 非常火爆,其中 HBase 是从Hadoop中分拆出去的,也就是底层还是HFDS 技术。所以 NoSQL 系统在大数据环境下,提供海量数据的存储和访问功能,也算是大数据技术栈一员。

    # 数据分析,数据挖掘,机器学习
    有了大数据这个底层的技术基础,更广的应用也就能实现了。大数据平台,继承了数据分析和数据挖掘技术,以及在大数据基础上,更高级的机器学习技术。
    数据分析主要是数据专员的工作,一般不需要开发能力,会使用简单的 SQL 基本上够用了。一些公司的运营人员,也要求具有数据分析的能力。数据分析主要是利用上面提到的 Hive、Spark SQL 等 数据库脚本语言;
    有了大数据的存储和计算能力,就能进行数据挖掘和机器学习。当然也有成熟的框架,比如Mahout、Google 的 TersorFlow等框架。

    最后,有了基础的存储功能,大数据批处理,流失处理计算能力,之上的大数据分析,以及更高级的挖掘和机器学习。至此一个大数据平台就构成了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注