1、 下面哪个不是Linux发行版本 (D)
A. Ubuntu
B. Centos
C. RedHat Enterprise Linux
D. Mac
6、web方式查看hdfs目录结构的地址是?(A)
A. http://主机名:50070
B. http://主机名:10020
C. hdfs://主机名:9000
D. hdfs://主机名:50070
16、linux下存放公钥信息的是下列哪个文件,放在(A)目录下?
A、id_rsa.pub .ssh
B、id_rsa.pub ssh
C、id_rsa .ssh
D、id_rsa ssh
11、下列可以实现定时任务调度的不包括哪个:(D)
A、Crontab。
B、Oozie。
C、Azkaban。
D、Hive。
7、hadoop配置文件(如:core-site.xml、hdfs-site.xml)在哪个目录下?(C)
A. ${HADOOP_HOME}/bin
B. ${HADOOP_HOME}/sbin
C. ${HADOOP_HOME}/etc/hadoop
5. Hadoop1.0默认的调度器策略是哪个。 (A )
A. 先进先出调度器 B. 计算能力调度器
C. 公平调度器 D. 优先级调度器
3. HDFS1.0 默认 Block Size大小是多少。 ( B )
A. 32MB B. 64MB
C. 128MB D. 256MB
20、HDFS2.7.*以后 默认 Block Size大小是多少。 (C)
A. 32MB B. 64MB
C. 128MB D. 256MB
18、HBase是()的开源实现 (A)
A、Bigtable
B、GFS
C、map/reduce
D、chubby
9 下列哪个不是nosql数据库?(D)
A. HBase
B. Redis
C. MongoDB
D. Oracle
18、Hadoop作者 ( C)
A、Martin Fowler B、Kent Beck
C、Doug cutting D、Grace Hopper
10. 以下哪一项属于非结构化数据。(C)
A. 企业ERP数据 B. 财务系统数据
C. 视频监控数据 D. 日志数据
6. Client 端上传文件的时候下列哪项正确? ( B )
A. 数据经过 NameNode 传递给 DataNode
B. Client 端将文件切分为 Block,依次上传
C. Client 只上传数据到一台 DataNode,然后由 NameNode 负责 Block 复制工作
D. 以上都不正确
1. Hadoop 支持数据的随机读写。(hbase支持,hadoop不支持) ( 错 )
2. NameNode 负责管理元数据信息metadata,client 端每次读写请求,它都会从磁盘中读取或会写入 metadata 信息并反馈给 client 端。(内存中读取) ( 错 )
3. MapReduce 的 input split 一定是一个 block。 (默认是) ( 错 )
4. MapReduce适于PB级别以上的海量数据在线处理。 (离线) ( 错 )
5. 链式MapReduce计算中,对任意一个MapReduce作业,Map和Reduce阶段可以有无限个Mapper,但Reducer只能有一个。 ( 对 )
6. MapReduce计算过程中,相同的key默认会被发送到同一个reduce task处理。( 对 )
7. HBase对于空(NULL)的列,不需要占用存储空间。 (没有则空不存储)( 对 )
8. HBase可以有列,可以没有列族(column family)。 (有列族) ( 错 )
1、大数据特点(4V)?
数据量大(Volume)volume
数据类型繁多(Variety)variety
处理速度快(Velocity)velocity
价值密度低(Value)。value
2、大数据计算模式有哪些?针对什么问题?代表产品?
批处理计算:针对大规模数据的批量处理。MapReduce、Spark等
流计算:针对流数据的实时计算。Storm、S4、Flume、Streams、Puma、DStream、Super Mario、银河流数据处理平台等
图计算:针对大规模图结构数据的处理。Pregel、GraphX、Giraph、PowerGraph、Hama、GoldenOrb等
查询分析计算:大规模数据的存储管理和查询分析。Dremel、Hive、Cassandra、Impala等
3、大数据的构成
大数据的构成:结构化数据、半结构化数据、非结构化数据
3、大数据与云计算、物联网的关系?
云计算为大数据提供技术基础,大数据为云计算提供用武之地
物联网为云计算提供应用空间,云计算技术为物联网提供海量数据存储能力
物联网是大数据的重要来源,大数据技术为物联网数据分析提供支撑
1、名词解释:HDFS,Map/Reduce,Yarn
分布式文件系统HDFS(Hadoop Distributed File System)是一个类似于GoogleGFS的开源的分布式文件系统。它提供了一个可扩展、高可靠、高可用的大规模数据分布式存储管理系统,基于物理上分布在各个数据存储节点的本地Linux系统的文件系统,为上层应用程序提供了一个逻辑上成为整体的大规模数据存储文件系统。与GFS类似,HDFS采用多副本(默认为3个副本)数据冗余存储机制,并提供了有效的数据出错检测和数据恢复机制,大大提高了数据存储的可靠性。
Map/Reduce:分布式计算模型,完成海量数据离线处理。
Yarn:负责整个集群资源的管理和调度。
4、hadoop和yarn启动后,会包含哪些java进程?
Jps
hadoop:
SecondaryNameNode
NameNode
DataNode
yarn:
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优缺点
优势:
-
解决了传统关系数据库在大数据处理上的瓶颈。适合大数据的批量处理。
-
充分利用集群的CPU计算资源、存储资源,实现并行计算。
-
Hive支持标准SQL语法,免去了编写MR程序的过程,减少了开发成本。
-
具有良好的扩展性,拓展功能方便。
劣势:
-
Hive的HQL表达能力有限:有些复杂运算用HQL不易表达。
-
Hive效率低:Hive自动生成MR作业,通常不够智能;HQL调优困难,粒度较粗;可控性差。
-
针对Hive运行效率低下的问题,促使人们去寻找一种更快,更具交互性的分析框架。 SparkSQL 的出现则有效的提高了Sql在Hadoop 上的分析运行效率。
(5)Hive和传统数据库的对比:Hive 和RDBMS拥有类似的查询语言和数据存储模型。
Hive 用HDFS存储数据,使用HQL语言,执行延迟高,数据处理规模大
4、Hive运行机制
-
用户通过用户接口连接Hive,发布Hive SQL
-
Hive解析查询并制定查询计划
-
Hive将查询转换成MapReduce作业
-
Hive在Hadoop上执行MapReduce作业
1、HBase概述
HBase是一个构建在HDFS之上的、分布式的、面向列的开源数据库 。
HBase是Google BigTable的开源实现(hbase.apache.org),它主要用于存储海量数据,提供准实时查询(百毫秒级),用于金融、电商、交通、电信等行业。
HBase在Hadoop生态中定位:
2、HBase特点
大:一个表可以有上百亿行,上百万列(一般关系型数据库记录上限5百万)
面向列:面向列族的存储和权限控制,列独立检索。
稀疏:对于为空(NULL)的列,并不占用存储空间,因此,表可以设计的非常稀疏。
数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,版本号就是单元格插入时的时间戳。
无模式:每一行都有一个可以排序的主键和任意多的列,列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。
数据类型单一:HBase中的数据都是字符串,没有类型。
3、与关系数据库对比
(1)数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串。
(2)数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系。
(3)存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。
(4)数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来
(5)数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留
(6)可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩
4、HBase数据模型
(1)Row Key:行的主键,标识一行数据,也称行键,用来检索记录的主键
(2)HBase表中数据访问的方式
-
通过单个Row Key访问
-
通过Row Key 的Range
-
全表扫描
(3)Row Key行键可以是任意字符串
-
最大长度64K,一般10~100B
-
保存为字节数组
(4)存储时,数据按照Row Key字典序排序
1,10,100,11,12……
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上的数据文件
验证zk启动是否成功,看有无QuorumPeerMain进程。
3、启动和关闭服务
启动:先后启动zookeeper、hdfs,再启动start-hbase.sh
启动后多2个进程HMaser、HRegionServer
关闭:先stop-hbase.sh再stop-dfs.sh
关系型数据库:
常见的有: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”模式很难适用于截然不同的业务场景
-
关系模型作为统一的数据模型既被用于数据分析,也被用于在线业务。但这两者一个强调高吞吐,一个强调低延时,已经演化出完全不同的架构。用同一套模型来抽象显然是不合适的
-
Hadoop就是针对数据分析
-
MongoDB、Redis等是针对在线业务,两者都抛弃了关系模型
(3)关系数据库的关键特性包括完善的事务机制和高效的查询机制。但是,关系数据库引以为傲的两个关键特性,到了Web2.0时代却成了鸡肋,主要表现在以下几个方面:
-
Web2.0网站系统通常不要求严格的数据库事务
-
Web2.0并不要求严格的读写实时性
-
Web2.0通常不包含大量复杂的SQL查询(去结构化,存储空间换取更好的查询性能)
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。
sqoop export --connect "jdbc:mysql://localhost:3306/weibo" --username root --password root --export-dir '/opt/hive/warehouse/comments_fans/*' --table comments_new --driver com.mysql.jdbc.Driver --input-fields-terminated-by '\t'
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等。
1、ECharts简介
ECharts是一款由百度前端技术部开发的,基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表,支持丰富的图表类型,现在是由 Apache 孵化器赞助的 Apache 开源基金会孵化的项目。
2、开发环境
ECharts图表是嵌入到网页中展现的,我们借助于JSP动态网页技术,将数据库中的数据通过Echarts展现在网页中。
由于Centos中的Eclipse运行较慢,开发工作在Window下进行,访问的数据库是Centos下的。
3、添加用户
默认情况下,Mysql只接受本地客户端的访问,Window下程序要访问Mysql,需要授权,我们添加一个guest用户,可以远程访问test数据库下的所有表。
grant
select
,insert,update,delete on
test
.* to guest@
"
%
"
identified by
"
guest
"
;
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等。流计算则需要及时处理数据,应达到如下要求:
-
高性能:处理大数据的基本要求,如每秒处理几十万条数据;
-
海量式:支持TB级甚至是PB级的数据规模;
-
实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别;
-
分布式:支持大数据的基本架构,必须能够平滑扩展;
-
易用性:能够快速进行开发和部署;
-
可靠性:能可靠地处理流数据;
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特性
-
高吞吐量、低延迟:Kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒;
-
可扩展性:Kafka集群具有良好的可扩展性;
-
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份,防止数据丢失;
-
容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败);
-
高并发:支持数千个客户端同时读写。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃;
-
顺序保证:在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。Kafka保证一个分区内的消息的有序性;
-
异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
(2)Kafka应用场景
-
日志收集:一个公司可以用Kafka收集各种日志,这些日志被Kafka收集以后,可以通过Kafka的统一接口服务开放给各种消费者,例如Hadoop、HBase、Solr等;
-
消息系统:可以对生产者和消费者实现解耦,并可以缓存消息;
-
用户活动跟踪:Kafka经常被用来记录Web用户或者APP用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到Kafka的主题(Topic)中,然后订阅者通过订阅这些主题来做实时的监控分析,或者装载到Hadoop、数据仓库中做离线分析和挖掘;
-
运营指标:Kafka也经常用来记录运营监控数据,包括收集各种分布式应用的数据,生产环节各种操作的集中反馈,比如报警和报告;
-
流式处理:Kafka实时采集的数据可以传递给流处理框架(比如Spark Streaming、Storm、Flink)进行实时处理。
(3)Kafka消息传递模式
Kafka采用消息发布、订阅模式,消息被持久化到一个主题(topic)中,消费者可以订阅一个或多个主题,消费者可以消费该主题中所有的数据,同一条数据可以被多个消费者消费,数据被消费后不会立马删除。在发布订阅消息系统中,消息的生产者称为“发布者”,消费者称为“订阅者”。
(4)相关概念
-
Broker:Kafka集群包含一个或多个服务器,这些服务器被称为“Broker”。
-
Topic:每条发布到Kafka集群的消息都有一个类别,这个类别被称为“Topic(主题)”。物理上不同Topic的消息分开存储,逻辑上一个Topic的消息虽然保存于一个或多个Broker上,但用户只需指定消息的Topic,即可生产或消费数据,而不必关心数据存于何处。
-
Partition:是物理上的概念,每个Topic包含一个或多个Partition。
-
Producer:负责发布消息到Kafka Broker。
-
Consumer:消息消费者,向Kafka Broker读取消息的客户端。
-
Consumer Group:每个Consumer属于一个特定的Consumer Group,可为每个Consumer指定Group Name,若不指定Group Name,则属于默认的Group。同一个Topic的一条消息只能被同一个Consumer Group内的一个Consumer消费,但多个Consumer Group可同时消费这一消息。
一个典型的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数据库的代码流程?
9、结合 本学期所学,叙述大数据分析处理的完整过程及每个过程采用的技术?