首页
学习
活动
专区
工具
TVP
发布

初学者看大数据生态圈

先从Hadoop说起。

经常看到有大咖在语录中提及:有了Spark,就永远不要Hadoop了,真有大咖这么说的,不信百度能看见。

仔细想下,有点道理:如果只是作为业务层面的开发者,对于大数据技术而言,确实只学Spark就可以了,但是如果是系统架构师的话,hadoop还是要学的,因为作为大数据的系统架构师,没办法回避hadoop。

Hadoop的三个概念组件,

spark在这里主要替代的是MapReduce,

YARN和HDFS还没有发现其他东西能替代。

YARN以初学者的理解,就是NodeManager,负责管理分布式文件系统各个节点的。

HDFS-

Hadoop Distributed File System 的架构图挺好看的,给像我这样的小白们再留念一下

说白了,玩大数据是离不开hadoop的hdfs的,只是hadoop管的挺好,不用系统开发的人操心分布式文件系统的事了。

说Hadoop,就有必要提下Hive这个东西,Hive是一个数据仓库软件不是数据仓库,也就是说它不负责数据存储,只是提供一种机制去映射HDFS上的数据,并且可以通过比较通俗易懂的类SQL语言进行一些数据操作,关于Hive与Hadoop的关系,有副好图

Spark的Spark SQL也可以取代Hive SQL

好了,分割线---------------------

接下来说Data Serialization数据序列化,其实没啥可说的,作为初学者,只是认为:如果HDFS是数据库的话,数据序列化就是Hibernate的Entity,只是这个Entity更适合用于网络传输。

几种数据序列化的框架需要了解下,要不出门被人骗:

Avro ..... 百度吧,不说了

Apache Thrift.... 这个牛掰,貌似用的最多,百度吧,不说了

Protocol Buffers....Google开发的,牛

SequenceFile....百度

好了,分割线---------------------

接下来说下Columnar Storage列式存储,这个主要是对应行式存储说的,行式存储就是我们最常见的关系型数据库,数据记录是一条一条的。

列式存储和行式存储有啥区别呢:

列式存储的keyspace概念,相当于关系型数据库的schema;column family概念相当于关系型数据的table

column family里的数据的格式是这样的:

column family里的详细数据就像这样:

column family每行数据的列可以是不同的,名字不同、个数也不同,至于这样存储的好处,相信DBA们一眼就可以看出来,分库、扩展,都方便很多,而且数据更容易压缩,对于数据的载入和查询,效率会更高。

说这么多,一个大数据系统,要列式存储干嘛啊?

大数据架构一直流行Lambda架构,Lambda架构把大数据系统分成三层,批处理层、服务层和速度层,分这么多层干嘛,因为大数据的查询速度慢啊,高延迟,所以Lambda架构在批处理层做查询的预处理,就是先在HDFS查出一个批处理视图,然后把批处理视图存储到更快的更方便查询的介质上,以便更快的响应查询,这个更快的更方便查询的介质,就是列式存储的文件格式了。

至于Lambda架构,也有kappa架构与之对应,孰优孰劣,下次再谈吧。

好了,分割线---------------------

接下来说下NoSQL, NoSQL 不是No SQL!的意思,是Not Only SQL的意思,NoSQL数据库可谓已经百花齐放了。

《大数据系统构建》这本书作者是Lambda架构的提出者,他在该书上说,“在很多方面,选择使用NoSQL数据库,就像在程序中,在HashMap、SortedMap、LinkedList或者Vector之间选择使用数据结构一样。你事先要知道自己想做什么,然后恰当的进行选择”。

这样就可以了,不必把自己局限在选择哪一种数据库上,用的时候,直接用就可以了,因为每种NoSQL数据库确实是为了解决某一方面的问题而存在的。

现在的NoSQL数据库大概可分为三类:列式存储的、面向文档的和图形化的。

列式存储的NoSQL数据库主要面向大数据,包括Cassandra、HBase等。

面向文档的NoSQL数据库包括:MongoDB、CouchDB等

图形化NoSQL数据库主要是描述关系的,包括Neo4J、GraphDB等。

至于各种NoSQL数据库的对比,下次再谈吧。

好了,分割线---------------------

还有最后一个要介绍的:Distributed SQL Query Engine 分布式SQL查询引擎,分布式SQL查询引擎的大部分是为了取代MapReduce而存在的,有的支持更多,比如支持NoSQL数据库的查询,甚至支持JDBC/ODBC接口,包括:

Impala

Presto

Apache Drill 等

以上就是一个初学者看到的大数据生态圈,更深入的,以后我们一起探索吧。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180621G03RQN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券