您的位置:首页 > 大数据 > 云计算

大数据与云计算基础知识(二)

2017-05-18 09:18 190 查看
一、Scala语言

1.将Java脚本化的语言,基于JVM虚拟机,面向函数的对象语言。类似于Java的编译直接执行过程,有Scala解释器。

2.Scala也可被称为REPL。概念:读取=>求职=>打印=>循环。

3.声明中:val是常量声明,var是变量声明。推荐使用常量。

4.数据类型与赋值方式和Java存在联系,算术与操作符,函数调用,类,对象,集合,xml处理等等。

5.Scaladoc是文档标注,可以了解类与指令。

二、Avro语言

1.独立于编程语言的数据序列化系统,可解决Writable类型不足的问题。

2.Avro与Apache Thrift和Google的Protocol Buffers是同类产品。

3.Avro用语言无关模式定义,代码生成可选,用JSON来写模式,采取二进制格式。

4.数据类型和模式与其它语言(C、C++、JAVA、Phthon)兼容。

5.用DatumWriter和Encoder对数据序列化处理。

6.Avro的作用即对其他语言做解析重定义,运行MR程序。

三、R语言

1.用于数据处理和统计分析的脚本语言。前身是S语言(统计学)。面向对象语言和函数式编程语言。

2.两种模式:交互模式和批处理模式。常用交互模式。

3.运算符是<-,C表示连接,角标从1开始,“+”是提示符。

4.用hist弹出直方图,或其他图修饰、编辑等。

5.R语言的核心是向量,由三源数据构成。

6.矩阵、列表、数据框、类是其衍生操作的主要成分。

7.优势是大量的函数、良好的可编程性能、强大的绘图功能。

四、Pig语言

1.描述数据流的语言,全称为Pig Latin。有本地环境与分布式环境,可将语言转换为MR任务执行,Hive是将数据库作为MR任务。

2.Pig的外壳(shell)环境是Grunt。Pig Latin的编辑器是PigPen,提供Pig开发环境的Eclipse插件。

3.Pig与SQL不同,Pig是数据流编程,SQL是声明式编程。

4.类似于RDBMS中查询规则器对数据的操作:处理批量、流式操作。

5.Pig脚本的两种运行:exec和run。

6.四种函数:计算函数、过滤函数、加载函数、存储函数。

五、Hive

1.基于类似SQL的语言,完成对HDFS数据的查询分析。支持各种命令,解析编译简单,查询结果即时。

2.表操作:create database;数据库操作:create table 表名。

3.数据操作:查询(普通查询、带条件、限制、表连接)。

4.函数:普通函数UDF,聚合函数UDAF,自定义扩展。

5.存储:文本格式,SequenceFile切分压缩,RCFile列式存储。

6.分区:以目录存储,数据库名:db/表名/字段名等。

7.索引:将替换部分字段为包名类名,查询快,但增加了存储负担。

8.数据库仓库工具,将SQL语句=>MapReduce任务。(HQL)语言。

9.Hive组件:CLI JDBC/ODBC Thrift Server WEBGUI metastore Driver

服务端:Driver,Metastore,Thrift服务;

客户端:CLI,WEBGUI,Thrift客户端

10.Driver:Compllier,Optimizer,Executor,编译解析,优化执行。

11.Metastore:元数据服务,数据存储管理,类数据库存储。

12.Thrift服务:可扩展跨语言开发,接口调用。

13.CLI:命令行接口,command line interface。

14.Thrift客户端,即JDBC/ODBC,接口调用。

15.WEBGUI:网页访问,hwi组件。

六、Impala

1.交互式查询引擎,基于MPP的SQL查询系统,类似于Hive。

2.区别:借鉴分布式数据库MPP,不再依赖MR。

3.shell工具,Impalad引擎(Planner,Coordinator,Exec Engine)。

4.StateStore位置,Catalog Service操作追踪。

5.主要组件:Impalad,StateStore,Catalog。

6.Hive适合长时间批处理,Impala适合实时交互式查询。

7.Impala用拉式获取结果,减少磁盘写入,降低开销,加快效率。

8.应用:查询结果集不大,短查询,不容错,可与Hive配合。

七、Flume

1.分布式、可靠、可用、大量收集数据及日志。聚合、简单、基于流技术。

2.stream计算(流计算),storm流。(数据流模型)

3.web server=>Agent(source,channel,sink) =>Hbase。

4.优点:存储数据到中央数据库;可启用缓存,保证流平衡;提供文本式路由;支持事务机制。

5.跳跃:链式操作 sink=>source=>channel=>sink=>source。循环

6.HDFS上传的缺点:一次上传一个,不满足文件高速生成场景(实时性);操作文件固定,不可追加,实时更新。

7.类似的如Facebook的Scribe,Apache的KafKa和Flume。

8.架构(水槽):Agent节点《flume event,flume agent》(扇入,扇出)。

Source:从数据生成器接收数据,转移给一个或多个channel。

Channel:缓存作用,保存到sink消费为止,过度桥梁。

Sink:存储数据到HDFS或者Hbase,分发至目的地。

9.interceptor:拦截器,在source与channel之间。

10.channel选择器:在多channel下选择相应channel(可复用)。

11.sink processor:沉槽处理器,从sink组中选择一个调用。

12.Collector:聚合Agent的信息,统一递交至中央数据库。

13.Creater:生成器,与web server连接,传递至Agent。

八、KafKa

1.解决离线和在线应用,日志收集处理,订阅广播,类似于Flume。

2.显式分布式的系统,producer,broker,cousumer可以有多个。

3.类似于缓存,即活跃的数据和离线处理之间的缓存。

4.特征:磁盘存取代价为0,高吞吐率,显式分布式,支持并行加载。

5.producer=>topic(message)<=consumer(广播message模式)

九、ChuKwa

1.开源,用于监控分布式系统的数据收集系统。

2.工具集=>展示、监控,分析已收集数据。

十、Oozie

1.工作流调度引擎,属于web应用程序,起源于雅虎,是有向无环图。称之为训象者。

2.组件:Oozie client和Oozie server。Server运行于Tomcat容器中。

3.执行多关联MR任务时,可写入workflow,xml,Oozie托管任务流。

4.用来配置多个MR工作流,各种程序夹杂在一起间隙执行(如Java,shell,Hive等)。

5.作用:把多个任务组成一个工作流,自动完成任务调用,受一个调度器控制。解决在内部MR任务有依赖关系,执行效率慢的问题。

6.特点:弹性大,容错高,高性能,多处理,可扩展,支持自定义。

7.原理:通过HPDL定义(xml流程定义语言),进行回调通知任务结束,再操作。

8.工作流:控制流节点(定义开始结束并控制路径),操作节点(工作流触发计算、处理任务执行)。

9.核心:工作流(定义任务的拓扑和执行逻辑),协调器(负责工作流的依赖和触发)。

十一、Sqoop

1.主要用于数据库与HDFS之间的数据传导,是一款开源工具。用于框架下的导入和导出操作。

2.inport工具运行MR任务,并行使用4个map任务加速执行过程。

3.导出格式:文本(默认),SequenceFile(Java),Avro(多种)。

4.codegen工具:简单生成代码,不执行完整导入。

5.利用JDBC可方便Sqoop对于数据库的访问,利于MR作业执行。

6.SequenceFile指序列化文件,过程中需要序列化与反序列化。

7.需要处理数据、分隔符处理、表名列名处理等等。利于Hadoop数据分析处理。

十二、Storm

1.开源实时分布式计算系统,实时流处理引擎。Master-Slave结构。

2.特点:容错性,水平扩展,易于安装和维护。

3.Topology任务,控制节点,Nimbus 节点,工作节点Supervisor。

4.Topology=>Nimbus=>task/Supervisor=>ZooKeeper=>Supervisor=>Worker。

5.每个流由ID定义,用于构建数据源和接收器(sink)的拓扑结构。

6.流起源于喷嘴Spout,计算处理器成为螺栓Bolt,实现业务逻辑处理。

7.Bolt是处理数据的核心,进行很多数据处理工作。

8.Storm提供流分组,用来控制之间元组处理的负载分发策略。

9.应用:信息流处理,连续计算,分布式RPC,ETL处理,在线机器学习。

十三、NOSQL概要

NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。NoSQL数据库的四大分类。

键值(Key-Value)存储数据库

这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。 举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.

列存储数据库

这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.

文档型数据库

文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb。国内也有文档型数据库SequoiaDB,已经开源。

图形(Graph)数据库

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J, InfoGrid, Infinite Graph。

NoSQL数据库在以下的这几种情况下比较适用:1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  云计算 大数据