赞
踩
1、大数据特点(4V)?
数据量大(Volume)volume
数据类型繁多(Variety)variety
处理速度快(Velocity)velocity
价值密度低(Value)。value
2、大数据计算模式有哪些?
批处理计算
流计算
查询分析计算
3、大数据的构成
大数据的构成:结构化数据、半结构化数据、非结构化数据
3、大数据与云计算、物联网的关系?
云计算为大数据提供技术基础,大数据为云计算提供用武之地
物联网为云计算提供应用空间,云计算技术为物联网提供海量数据存储能力
物联网是大数据的重要来源,大数据技术为物联网数据分析提供支撑
1、名词解释:HDFS,Map/Reduce,Yarn
分布式文件系统HDFS(Hadoop Distributed File System)是一个类似于GoogleGFS的开源的分布式文件系统。它提供了一个可扩展、高可靠、高可用的大规模数据分布式存储管理系统,基于物理上分布在各个数据存储节点的本地Linux系统的文件系统,为上层应用程序提供了一个逻辑上成为整体的大规模数据存储文件系统。与GFS类似,HDFS采用多副本(默认为3个副本)数据冗余存储机制,并提供了有效的数据出错检测和数据恢复机制,大大提高了数据存储的可靠性。
Map/Reduce:分布式计算模型,完成海量数据离线处理。
Yarn:负责整个集群资源的管理和调度。
4、hadoop和yarn启动后,会包含哪些java进程?
SecondaryNameNode
NameNode
DataNode
Jps
NodeManager
ResourceManager
6、简述Hadoop安装步骤?
解压并安装安装包,配置JDK环境,设置环境变量,修改关键文件,关闭防火墙,设置免密登录,web方式查看hdfs目录结构检查是否可用
3、Hadoop特性(优势)
(1)高可靠性:采用多副本冗余存储的方式,即使一个副本发生故障,其他副本还可以对外提供服务。
(2)高效性:采用分布式存储和分布式处理两大核心技术,高效地处理PB级别的数据。
(3)高可扩展性:高效稳定地运行在廉价的计算机集群上,可以扩展到数以千计的节点。
(4)高容错性:采用冗余存储方式,自动将失败的任务重新分配。
(5)成本低:采用廉价的计算机集群,成本低,普通用户也可以用pc搭建Hadoop运行环境。
(6)成熟的生态圈:拥有成熟的生态圈,囊括了大数据处理的方方面面。
2、HDFS特点
(1)数据冗余,硬件容错
(2)适合存储大文件,一次写入,多次读取,顺序读写,不适合多用户并发写相同文件。
(3)适合批量读写,吞吐量高;不适合交互式应用,低延迟很难满足。
3、HDFS数据管理策略
为了保证数据的容错性和可靠性,HDFS提供如下管理策略:
(1)每个数据块3个副本,分布在两个机架内的三个节点上。
(2)心跳检测:DataNode定期向NameNode发送“心跳”信息,汇报自己的“健康“状态。
(3)SecondaryNameNode定期同步元数据的映像文件(FsImage)和修改日志(Editlog),当名称节点出错时,就可以根据SecondaryNameNode中的FsImage和Editlog数据进行恢复。
1、数据仓库
(1)数据仓库是面向主题的、集成的、稳定的,随时间变化的数据集合,用于支持经营管理中决策制定过程。
(2)数据仓库系统的构成:数据仓库(DW)、仓库管理和分析工具。
2、Hive概述
(1)由Facebook开源,用于解决海量结构化日志的数据统计问题。现为Apache顶级开源项目(http://hive.apache.org)。
(2)是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。底层支持多种执行引擎(MR/Tez/Spark);
(3)Hive产生背景:MapReduce门槛高,开发难度大,周期长;传统RDBMS人员的需要。
(4)Hive优缺点
优势:
劣势:
(5)Hive和传统数据库的对比:Hive 和RDBMS拥有类似的查询语言和数据存储模型。
Hive 用HDFS存储数据,使用HQL语言,执行延迟高,数据处理规模大
4、Hive运行机制
1、HBase概述
HBase是一个构建在HDFS之上的、分布式的、面向列的开源数据库 。
HBase是Google BigTable的开源实现(hbase.apache.org),它主要用于存储海量数据,提供准实时查询(百毫秒级),用于金融、电商、交通、电信等行业。
HBase在Hadoop生态中定位:
2、HBase特点
大:一个表可以有上百亿行,上百万列(一般关系型数据库记录上限5百万)
面向列:面向列族的存储和权限控制,列独立检索。
稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。
无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。
数据类型单一:HBase中的数据都是字符串,没有类型。
6、HBase读写流程
读流程
(1)客户端向zk中发送请求
(2)从zk中拿到metadata的存储节点
(3)去存储metadata的节点获取对应region的所在位置
(4)访问对应的region获取数据
(5)先去memstore中查询数据,如果有结果,直接返回
(6)如果没有查询到结果,去blockcache查找数据,如果找到,直接返回
(7)如果没有找到,去storefile中查找数据,并将查询到的结果缓存会blockcache中,方便下一次查询
(8)将结果返回给客户端
注意:blockcache是缓存,有大小限制,会有淘汰机制,默认将最早的数据淘汰
写流程
(1)client向zk发送请求
(2)从zk中拿到metadata的存储节点
(3)去存储matadata的节点获取对应region所在的位置
(4)访问对应的region写数据
(5)首先会向wal(Write-Ahead-Log)中写数据,写成功之后才会存储到memstore
(6)当memstore中的数据量达到阈值之后,进行溢写,溢写成storefile
(7)store file是一个个的小文件,会进行合并(minor,major)
(8)store file是对hfile的封装,hfile是实际存储再hdfs上的数据文件
关系型数据库:
常见的有:Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL、浪潮K-DB 等
非关系型数据库:
常见的有:NoSql、Cloudant、MongoDB、redis、HBase
NoSQL类型:键值数据库、列族数据库、文档数据库和图形数据库
NoSQL数据库的特点:灵活的可扩展性、灵活的数据类型、与云计算紧密耦合
2、兴起原因
(1)关系数据库已经无法满足Web2.0的需求。主要表现在以下几个方面:
(2)“One size fits all”模式很难适用于截然不同的业务场景
(3)关系数据库的关键特性包括完善的事务机制和高效的查询机制。但是,关系数据库引以为傲的两个关键特性,到了Web2.0时代却成了鸡肋,主要表现在以下几个方面:
NoSQL数据库与关系数据库比较:
(1)关系数据库
优势:以完善的关系代数理论作为基础,有严格的标准,支持事务ACID四性,借助索引机制可以实现高效的查询,技术成熟,有专业公司的技术支持
劣势:可扩展性较差,无法较好支持海量数据存储,数据模型过于死板、无法较好支持Web2.0应用,事务机制影响了系统的整体性能等。
(2)NoSQL数据库
优势:可以支持超大规模数据存储,灵活的数据模型可以很好地支持Web2.0应用,具有强大的横向扩展能力等
劣势:缺乏数学理论基础,复杂查询性能不高,大都不能实现事务强一致性,很难实现数据完整性,技术尚不成熟,缺乏专业团队的技术支持,维护较困难等。
(3)关系数据库和NoSQL数据库各有优缺点,彼此无法取代
•关系数据库应用场景:电信、银行等领域的关键业务系统,需要保证强事务一致性
•NoSQL数据库应用场景:互联网企业、传统企业的非关键业务(比如数据分析)
(4)采用混合架构
案例:亚马逊公司就使用不同类型的数据库来支撑它的电子商务应用
•对于“购物篮”这种临时性数据,采用键值存储会更加高效
•当前的产品和订单信息则适合存放在关系数据库中
•大量的历史订单信息则适合保存在类似MongoDB的文档数据库中
从NoSQL到NewSQL
NewSQL 提供了与 NoSQL 相同的可扩展性,而且仍基于关系模型,还保留了极其成熟的 SQL 作为查询语言,保证了ACID事务特性。
简单来讲,NewSQL 就是在传统关系型数据库上集成了 NoSQL 强大的可扩展性。
传统的SQL架构设计基因中是没有分布式的,而 NewSQL 生于云时代,天生就是分布式架构。
Sqoop概述
Sqoop=Sql+Hadoop,是一个基于Hadoop与RDBMS间的数据传输工具,是Apache顶级项目。
sqoop架构
Sqoop通过Map任务来传输数据,不需要Reducer。
2、任务调度系统
(1)为什么需要任务调度系统
一个完整的数据分析系统通常都是由大量任务单元组成,shell脚本程序,java程序,mapreduce程序、hive脚本等。各任务单元之间存在时间先后及前后依赖关系,为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行。
(2)常见任务调度系统
简单的任务调度:直接使用linux的crontab来定义,用法见实验。
复杂的任务调度:开发调度平台或使用现成的开源调度系统,如Azkaban、Oozie等。
1、可视化概述
数据可视化是指将大型数据集中的数据以图形图像形式表示,并利用数据分析和开发工具发现其中未知信息的处理过程 。
数据可视化技术的基本思想是将数据库中每一个数据项作为单个图元素表示,大量的数据集构成数据图像,同时将数据的各个属性值以多维数据的形式表示,可以从不同的维度观察数据,从而对数据进行更深入的观察和分析
2、可视化工具
入门级工具:Excel
信息图表工具:Google Chart API、D3、Visual.ly、Tableau、大数据魔镜等。
地图工具:Google Fusion Tables、Modest Maps、Leaflet等。
时间线工具:Timetoast、Xtimeline等。
高级分析工具:R、Weka、Gephi等。
8、Eclipse下开发web项目的步骤有哪些?
下载tomcat解压并集成到eclipse中;
建立web project,编写页面;
部署工程,启动服务器,在浏览器中观察页面效果
3、典型案例
(1)全球黑客活动
(2)互联网地图
(3)编程语言之间的影响力关系图
(4)百度迁徙
(5)世界国家健康与财富之间的关系
(6)3D可视化互联网地图APP
1、Spark概述
(1)Spark简介
Spark最初由美国加州伯克利大学(UCBerkeley)的AMP实验室于2009年开发,是基于内存计算的大数据并行计算框架,可用于构建大型的、低延迟的数据分析应用程序。
2013年Spark加入Apache孵化器项目后发展迅猛,如今已成为Apache软件基金会最重要的分布式计算系统开源项目之一。
Spark在2014年打破了Hadoop保持的基准排序纪录:
Spark/206个节点/23分钟/110TB数据;
Hadoop/2000个节点/72分钟/110TB数据;
Spark用十分之一的计算资源,获得了比Hadoop快3倍的速度。
(2)Spark特点
运行速度快:使用DAG执行引擎以支持循环数据流与内存计算;
容易使用:支持使用Scala、Java、Python和R语言进行编程,可以通过Spark Shell进行交互式编程 ;
通用性:Spark提供了完整而强大的技术栈,包括SQL查询、流式计算、机器学习和图算法组件;
运行模式多样:可运行于独立的集群模式中,可运行于Hadoop中,也可运行于Amazon EC2等云环境中,并且可以访问HDFS、Cassandra、HBase、Hive等多种数据源 。
(3)Scala简介
Scala是Spark的主要编程语言,Spark还支持Java、Python、R作为编程语言。
Scala是一门现代的多范式编程语言,运行于Java平台(JVM,Java 虚拟机),并兼容现有的Java程序;
Scala语法简洁,提供优雅的API,具备强大的并发性,支持函数式编程,运行速度快,可以更好地支持分布式系统,且能融合到Hadoop生态圈中;提供了REPL(Read-Eval-Print Loop,交互式解释器),提高程序开发效率。
(4)Spark与Map/Reduce对比
Spark的计算模式也属于MapReduce,但不局限于Map和Reduce操作,还提供了多种数据集操作类型,编程模型比Hadoop MapReduce更灵活;
Spark提供了内存计算,可将中间结果放到内存中,对于迭代运算效率更高;
Spark基于DAG(有向无环图)的任务调度执行机制,要优于Hadoop MapReduce的迭代执行机制;
2、Spark生态系统
Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成了一套完整的生态系统;
主要包含Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX 等组件;
既能够提供内存计算框架,也支持SQL即时查询、实时流式计算、机器学习和图计算等;
可以部署在资源管理器YARN之上,提供一站式的大数据解决方案;
3、Spark执行流程
(1)基本概念
RDD:是Resillient Distributed Dataset(弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型;
DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系;
Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task;
Application:用户编写的Spark应用程序;
Task:运行在Executor上的工作单元 ;
Job:一个Job包含多个RDD及作用于相应RDD上的各种操作;
Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表了一组关联的、相互之间没有Shuffle依赖关系的任务组成的任务集;
(2)执行流程
step1:首先为应用构建起基本的运行环境,即由Driver创建一个SparkContext,进行资源的申请、任务的分配和监控
step2:资源管理器为Executor分配资源,并启动Executor进程
step3:SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;Executor向SparkContext申请Task,Task Scheduler将Task发放给Executor运行,并提供应用程序代码
step4:Task在Executor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源
5、Spark部署和应用方式
Spark部署模式主要有四种:Local模式(单机模式)、Standalone模式(使用Spark自带的简单集群管理器)、YARN模式(使用YARN作为集群管理器)和Mesos模式(使用Mesos作为集群管理器)。
不同的计算框架统一运行在YARN中,可以带来如下好处:
(1)计算资源按需伸缩
(2)不用负载应用混搭,集群利用率高
(3)共享底层存储,避免数据跨集群迁移
2、流计算应用
流计算是针对流数据的实时计算,可以应用在多种场景中,如Web服务、机器翻译、广告投放、自然语言处理、气候模拟预测等。
如百度、淘宝等大型网站中,每天都会产生大量流数据,包括用户的搜索内容、用户的浏览记录等数据。采用流计算进行实时数据分析,可以了解每个时刻的流量变化情况,甚至可以分析用户的实时浏览轨迹,从而进行实时个性化内容推荐。
但是,并不是每个应用场景都需要用到流计算的。流计算适合于需要处理持续到达的流数据、对数据处理有较高实时性要求的场景。
批量计算允许用充裕的时间处理静态数据,如Hadoop、Hive等。流计算则需要及时处理数据,应达到如下要求:
3、常用流计算框架
现今常用的流计算框架有三个:Storm、Spark Streaming和Flink,它们都是开源的分布式系统,具有低延迟、可扩展和容错性诸多优点,允许你在运行数据流代码时,将任务分配到一系列具有容错能力的计算机上并行运行,都提供了简单的API来简化底层实现的复杂程度。
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
Flume 运行的核心是Agent。Flume以Agent为最小的独立运行单位,一个Agent就是一个JVM(Java Virtual Machine),它是一个完整的数据采集工具,包含三个核心组件,分别是数据源(Source)、数据通道(Channel)和数据槽(Sink)。通过这些组件,“事件”可以从一个地方流向另一个地方。
Kafka是由LinkedIn公司开发的一种高吞吐量的分布式消息订阅分发系统,用户通过Kafka系统可以发布大量的消息,也能实时订阅和消费消息。
(1)Kafka特性
(2)Kafka应用场景
(3)Kafka消息传递模式
Kafka采用消息发布、订阅模式,消息被持久化到一个主题(topic)中,消费者可以订阅一个或多个主题,消费者可以消费该主题中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布订阅消息系统中,消息的生产者称为“发布者”,消费者称为“订阅者”。
(4)相关概念
一个典型的Kafka集群中包含若干Producer、若干Broker、若干Consumer以及一个Zookeeper集群。Kafka通过Zookeeper管理集群配置。Producer使用push模式将消息发布到Broker,Consumer使用pull模式从Broker订阅并消费消息。
4、Kettle简介
Kettle 是纯 java 开发,开源的 ETL工具,用于数据库间的数据迁移 。可以在 Linux、Windows、Unix 中运行。有图形界面,也有命令脚本还可以二次开发。作为一个端对端的数据集成平台,可以对多种数据源进行抽取(Extraction)、加载(Loading)、数据落湖(Data Lake Injection)、对数据进行各种清洗(Cleasing)、转换(Transformation)、混合(Blending),并支持多维联机分析处理(OLAP)和数据挖掘(Data mining)
7、Java访问mysql数据库的代码流程?
在eclipse下新建java工程,将mysql驱动jar包拷贝到工程下,并右击-buildpath-add to buildpath
执行代码
9、结合 本学期所学,叙述大数据分析处理的完整过程及每个过程采用的技术?
首先网络爬虫获取数据,将数据上传至hdfs,通过数据预处理后导入hive表并进行数据清洗,将清洗后的结果导如hdfs,再用sqoop将处理后的数据导入mysql,通过echarts数据可视化展示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。