大数据基础期末复习

1. 大数据概念、大数据的性质、大数据技术概述、大数据应用趋势与应用实例

大数据5V,结构化非结构化半结构化数据,大数据处理过程图1-5,大数据的技术特征。

 答:Volume(大体量):即可从数百TB到数十数百PB、甚至EB规模。

Variety(多样性):即大数据包括各种格式和形态的数据。

Velocity(时效性):即很多大数据需要在一定的时间限度下得到及时处理。

Veracity(准确性):即处理的结果要保证一定的准确性。

Value(大价值):即大数据包含很多深度的价值,大数据分析挖掘和利用带来巨大的商业价值。

2. 科学研究第一范式、第二范式、第三范式、第四范式。

第一范式:经验范式,以观察和实验为依据的研究。

第二范式:以建模和归纳为基础的理论学科和分析范式,又称为理论范式。

第三范式:以模拟复杂现象为基础的计算科学范式,又称为模拟范式。

第四范式:以数据考察为基础,联合理论、实验和模拟一体的数据密集计算的范式,数据被捕获或者由模拟器生成,利用软件处理,信息和知识存储在计算机中,科学家使用数据管理和统计学方法分析数据。

3. 分布式系统的CAP理论。

CAP一致性:所有节点在同一时间具有相同的数据。

可用性:保证每个请求的成功或失败都有相应。

分区容错性:系统中任意信息的丢失或失败不影响系统的继续运行。

CAP定理:一个分布式系统不可能同时满足一致性、可用性、和分区容错性,最多只能同时满足两个系统需求。在考虑满足系统需求时,要根据实际需要来选择关注点,进而采用相应的策略。

CAP选择:1.放弃分区容错性。2.放弃可用性。3.放弃一致性。

4. MapReduce 分布编程模型

函数式语言的概念及特点,Map及Reduce过程的含义及功能,Hadoop分布式平台特点。

函数式语言的概念和特点:函数式语言是一种典型的程序设计语言。特点是把问题求解过程表示成块结构,对调用块的调用者来说,每个块都有输入数据和经过加工处理后的输出数据。

Map及Reduce过程的含义及功能:Map(映射)Reduce(化简)。Map函数应用于集合中的所有成员,然后返回一个基于这个处理的结果集。Reduce函数是从两个或更多个Map结果中,通过多个线程、进程或者独立系统并执行处理的结果集进行分类和归纳。一个Map函数用来把一组键值对映象成一组新的键值对,Reduce函数用来对同一个键的值进行合并。

Hadoop分布式平台特点:方便,健壮,可横向扩展,简单。

  1. 大数据流式计算。

流式计算的概念:流式数据是指产生的护具不是批量的传输过来的,而是像水一样流过来的,流式数据的处理也是连续处理,而不是批量处理。

流式数据的特征:实时性,易失性,突发性,无序性,无限性,准确性

  1. 大数据流式计算与批量计算的比较

 对于先存储后计算,实时性要求不高,但对数据的准确性和全面性更为重要的应用场景,批量计算模式更为合适;对于无须存储,可以直接进行数据计算,实时性要求很严格,但数据的精确度要求稍微宽松的应用场景,更适于流式计算。

6. 大数据搜索技术。

搜索引擎由搜索器,索引器,检索器和用户接口四个部分组成。

搜索器的功能是在互联网中漫游,发现和搜集信息;

索引器的功能是理解搜索器所搜索的信息,从中抽取索引项,用于表示文档以及生产文档的索引表;

检索器的功能是根据用户的查询在索引库中快速检出文档,进行文档与查询的相关度评价,对将要输出的结果进行排序,并实现某种用户相关性反馈机制;

用户接口的作用是输入用户查询,显示查询结果,提供用户相关性反馈机制。

搜索引擎的分类:全文,目录,元,垂直,集合式,门户;

搜索引擎的工作过程:爬行,抓取存储,预处理,排名。

搜索引擎评价指标:查全率,查准率,响应时间,覆盖范围,用户方便性。

7. 大数据预处理技术。

数据采集、数据清洗的基本方法,不符合要求数据类别。

数据抽取方法:同构同质—DW数据库服务器和原业务系统之间建立直接的链接关系后,利用结构化查询语言访问。同构异质—通过ODBC的方式建立数据库链接。文件型—利用数据库工具导入。增量更新—将业务发生的时间作为增量标志。

数据清洗的基本方法:1.定义和确定错误的类型。2.搜寻并识别错误的实例。3.纠正所发现的错误。

不符合要求数据类别:1.不完整的数据。2.异常的数据。3.重复的数据。

8. 大数据分析。

大数据分析概述:数据分析是指用准确适宜的分析方法和工具来分析经过处理的数据,提取具有价值的信息,进而形成有效的结论并通过可视化技术展现出来的过程。

基本数据分析方法:统计方法、指标对比分析法、分组分析法、综合评价分析法、指数分析法、平衡分析法、平滑和滤波、基线与峰值。

时间序列分析方法:将同一指标的一系列数值,按时间先后顺序排列,就形成时间数列。通过时间数列的编制和分析,可以找出动态变化规律,为预测未来的发展趋势提供依据。

可视化分析方法:直观地展示数据,呈现大数据的特点。

  1. 数据科学与数据思维。

数据科学定义:数据科学是指导数据分析与处理的科学、系统的理论与方法,数据科学通过系统性地研究数据的组织和使用,可以促进发现、改进关键决策过程。

主要研究内容与方法:研究内容包括基础理论研究、数据技术及其应用研究及数据科学的学科体系研究。数据科学学科建立,需要对知识结构、课程设置、专业设置等进行学科体系建设,探讨数据科学、自然科学和社会科学之间的关系等。

10. 大数据可视化

数据可视化概念:指将大型数据集中的数据以图形图像形式表示,运用计算机图形学和图像处理技术,将数据转换为图形或图像在屏幕上显示出来,并利用数据分析和开发工具发现其中未知信息的交互处理的理论、方法和技术。

数据可视化应用范围:医学、油气勘探、气象预报、工程。

 

2. 启动Hadoop系统,当使用bin/start-all.sh命令启动时,请给出集群各进程启动顺序。

答:启动顺序:namenode –> datanode -> secondarynamenode -> resourcemanager -> nodemanager 

3. 简述HBase的主要技术特点。

答:(1)列式存储

(2)表数据是稀疏的多维映射表

(3)读写的严格一致性

(4)提供很高的数据读写速度

(5)良好的线性可扩展性

(6)提供海量数据

(7)数据会自动分片

(8)对于数据故障,hbase是有自动的失效检测和恢复能力。

(9)提供了方便的与HDFS和MAPREDUCE集成的能力。

4. Hive数据仓库中,创建了以下外部表,请给出对应的HQL查询语句

CREATEEXTERNAL TABLE sogou_ext (

ts   STRING,   uid   STRING,    keyword  STRING, 

rank INT,       order INT,      url   STRING, 

year INT,       month INT,       day  INT,    hourINT

)

COMMENT 'Thisis the sogou search data of extend data'

ROW FORMATDELIMITED

FIELDSTERMINATED BY '\t'

STORED ASTEXTFILE

LOCATION'/sogou_ext/20160508';

(1)给出独立uid总数的HQL语句

答:select count(distinct UID) from sogou_ext;

(2)对于keyword,给出其频度最高的20个词的HQL语句

答:select keyword from sogou_ext group by keyword order by orderdesc limit 20;

1. 100万个字符串,其中有些是相同的(重复),需要把重复的全部去掉,保留没有重复的字符串。请结合MapReduce编程模型给出设计思路或核心代码。

P228

Public static class  ProjectionMapextends Mapper<LongWritable,Text,Text,NullWritable>

{

Private int clo;

Project void setup(Context context) throws IOException,InterruptedException{

    Col=context.getConfiguration().getInt(“col”,0);

 

}

Public void map(LongWritable offset,Text line,Context context){

     RelationA record=new   RelationA (line.toString());

     Context.write(newText(record.getCol(col)),NullWritable.get());

}

}

REDUCE端实现代码:

Public static class ProjectionRedice extendsReducer<Text,NullWritable,Text,NullWritable>

Public void reduce(Text key,Iterable<NullWritable> value,Contextcontext)throws IOException,InterruptedException{

Context.write(key,NullWritable.get());

}

2. 倒排索引设计。

有一个文档库,包含有大量的文档,现需要使用MapReduce编程技术对文档内容建立一个倒排索引库。要求Reduce最后输出键值对为<单词, 文件名#偏移量>,并且前后输出的相同的key所对应的文件名是字典序的。如

word1  doc1#200

word1   doc2#10

word2   doc2#10

假设在map阶段已经获取了当前split分片的文件名是 String filename。请按要求给出设计思路或核心代码。

Map(){

String filename=fileSplit.getPath().getName();

String temp=new String();

String line=value.toString().toLowerCase();

StringTokenizer iter=new StringTokenizer(line);

For(;itr.hasMoreTokens();){

Temp=iter.nextToken();

If(!stopwordscontains(temp)){

   Text word=new Text();

   Word.set(temp+”#”+fileName);

   Context.write(word,new IntWritable(1));

}

}

}

Reducer{

   Private IntWritable result=newIntWritable();

   Public void reduce(Text,key,Iterable<IntWritable> values,Context context) throws

IOException,InterruptedException{

     Int sum=0;

     For(InWritable val:values){

         Sum+=val.get();

     }

 

     Result.set(sum);

     Context.write(key,result);

  }

}

3. 请在下面程序的下划线中补充完整程序(共8处)。

public class WordCount {

   publicstatic class TokenizerMapper extends

      Mapper<    Object       ,  Text    ,    Text       ,     IntWritable      > {

      private final static IntWritable one = newIntWritable(1);

      private Text word = new Text();

      public void map(LongWritable key, Text value,Context context){

          StringTokenizeritr = new StringTokenizer(value.toString());

          while (itr.hasMoreTokens()) {

             word.set(itr.nextToken());

             context.write(word, one);

          }

      }

  }

 public static class IntSumReducer extends

            Reducer<      Text      ,      IntWritable       , Text, IntWritable> {

       private IntWritable result = newIntWritable();

       public void reduce(   Texy      key, Iterable<     IntWritable      > values, Context context) {

            int sum = 0;

            for (IntWritable val : values) {

                 sum += val.get();

            }

            result.set(sum);

            context.write(key, result);

       }

  }

 public static void main(String[] args) throws Exception {

    略……

  }

}

1. 谈谈对Hadoop系统的组成及其基本工作原理的理解。

1.MapReduce并行计算框架

MapReduce并行计算框架是一个并行化程序执行系统。它提供了一个包含Map和Reduce两阶段的并行处理模型和过程,提供一个并行化编程模型和接口,让程序员可以方便快速地编写出大数据并行处理程序。MapReduce以键值对数据输入方式来处理数据,并能自动完成数据的划分和调度管理。在程序执行时,MapReduce并行计算框架将负责调度和分配计算资源,划分和输入输出数据,调度程序的执行,监控程序的执行状态,并负责程序执行时各计算节点的同步以及中间结果的收集整理。MapReduce框架提供了一组完整的供程序员开发MapReduce应用程序的编程接口。

2.分布式文件系统HDFS

HDFS(Hadoop Distributed File System)是一个类似于GoogleGFS的开源的分布式文件系统。它提供了一个可扩展、高可靠、高可用的大规模数据分布式存储管理系统,基于物理上分布在各个数据存储节点的本地Linux系统的文件系统,为上层应用程序提供了一个逻辑上成为整体的大规模数据存储文件系统。与GFS类似,HDFS采用多副本(默认为3个副本)数据冗余存储机制,并提供了有效的数据出错检测和数据恢复机制,大大提高了数据存储的可靠性。

3.分布式数据库管理系统HBase

为了克服HDFS难以管理结构化/半结构化海量数据的缺点,Hadoop提供了一个大规模分布式数据库管理和查询系统HBase。HBase是一个建立在HDFS之上的分布式数据库,它是一个分布式可扩展的NoSQL数据库,提供了对结构化、半结构化甚至非结构化大数据的实时读写和随机访问能力。HBase提供了一个基于行、列和时间戳的三维数据管理模型,HBase中每张表的记录数(行数)可以多达几十亿条甚至更多,每条记录可以拥有多达上百万的字段

4.公共服务模块Common

Common是一套为整个Hadoop系统提供底层支撑服务和常用工具的类库和API编程接口,这些底层服务包括Hadoop抽象文件系统FileSystem、远程过程调用RPC、系统配置工具Configuration以及序列化机制。在0.20及以前的版本中,Common包含HDFS、MapReduce和其他公共的项目内容;从0.21版本开始,HDFS和MapReduce被分离为独立的子项目,其余部分内容构成Hadoop Common。

5.数据序列化系统Avro

Avro是一个数据序列化系统,用于将数据结构或数据对象转换成便于数据存储和网络传输的格式。Avro提供了丰富的数据结构类型,快速可压缩的二进制数据格式,存储持久性数据的文件集,远程调用RPC和简单动态语言集成等功能。

6.分布式协调服务框架Zookeeper

Zookeeper是一个分布式协调服务框架,主要用于解决分布式环境中的一致性问题。Zookeeper主要用于提供分布式应用中经常需要的系统可靠性维护、数据状态同步、统一命名服务、分布式应用配置项管理等功能。Zookeeper可用来在分布式环境下维护系统运行管理中的一些数据量不大的重要状态数据,并提供监测数据状态变化的机制,以此配合其他Hadoop子系统(如HBase、Hama等)或者用户开发的应用系统,解决分布式环境下系统可靠性管理和数据状态维护等问题。

7.分布式数据仓库处理工具Hive

Hive是一个建立在Hadoop之上的数据仓库,用于管理存储于HDFS或HBase中的结构化/半结构化数据。它最早由Facebook开发并用于处理并分析大量的用户及日志数据,2008年Facebook将其贡献给Apache成为Hadoop开源项目。为了便于熟悉SQL的传统数据库使用者使用Hadoop系统进行数据查询分析,Hive允许直接用类似SQL的HiveQL查询语言作为编程接口编写数据查询分析程序,并提供数据仓库所需要的数据抽取转换、存储管理和查询分析功能,而HiveQL语句在底层实现时被转换为相应的MapReduce程序加以执行。

8.数据流处理工具Pig

Pig是一个用来处理大规模数据集的平台,由Yahoo!贡献给Apache成为开源项目。它简化了使用Hadoop进行数据分析处理的难度,提供一个面向领域的高层抽象语言Pig Latin,通过该语言,程序员可以将复杂的数据分析任务实现为Pig操作上的数据流脚本,这些脚本最终执行时将被系统自动转换为MapReduce任务链,在Hadoop上加以执行。Yahoo!有大量的MapReduce作业是通过Pig实现的。 

 

9.键值对数据库系统Cassandra

Cassandra是一套分布式的K-V型的数据库系统,最初由Facebook开发,用于存储邮箱等比较简单的格式化数据,后Facebook将Cassandra贡献出来成为Hadoop开源项目。Cassandra以Amazon专有的完全分布式Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型,提供了一套高度可扩展、最终一致、分布式的结构化键值存储系统。它结合了Dynamo的分布技术和Google的Bigtable数据模型,更好地满足了海量数据存储的需求。同时,Cassandra变更垂直扩展为水平扩展,相比其他典型的键值数据存储模型,Cassandra提供了更为丰富的功能。

10.日志数据处理系统Chukwa

Chukwa是一个由Yahoo!贡献的开源的数据收集系统,主要用于日志的收集和数据的监控,并与MapReduce协同处理数据。Chukwa是一个基于Hadoop的大规模集群监控系统,继承了Hadoop系统的可靠性,具有良好的适应性和扩展性。它使用HDFS来存储数据,使用MapReduce来处理数据,同时还提供灵活强大的辅助工具用以分析、显示、监视数据结果。

11.科学计算基础工具库Hama

Hama是一个基于BSP并行计算模型(Bulk Synchronous Parallel,大同步并行模型)的计算框架,主要提供一套支撑框架和工具,支持大规模科学计算或者具有复杂数据关联性的图计算。Hama类似Google公司开发的Pregel,Google利用Pregel来实现图遍历(BFS)、最短路径(SSSP)、PageRank等计算。Hama可以与Hadoop的HDSF进行完美的整合,利用HDFS对需要运行的任务和数据进行持久化存储。由于BSP在并行化计算模型上的灵活性,Hama框架可在大规模科学计算和图计算方面得到较多应用,完成矩阵计算、排序计算、PageRank、BFS等不同的大数据计算和处理任务。

12.数据分析挖掘工具库Mahout

Mahout来源于Apache Lucene子项目,其主要目标是创建并提供经典的机器学习和数据挖掘并行化算法类库,以便减轻需要使用这些算法进行数据分析挖掘的程序员的编程负担,不需要自己再去实现这些算法。Mahout现在已经包含了聚类、分类、推荐引擎、频繁项集挖掘等广泛使用的机器学习和数据挖掘算法。此外,它还提供了包含数据输入输出工具,以及与其他数据存储管理系统进行数据集成的工具和构架。

13.关系数据交换工具Sqoop

Sqoop是SQL-to-Hadoop的缩写,是一个在关系数据库与Hadoop平台间进行快速批量数据交换的工具。它可以将一个关系数据库中的数据批量导入Hadoop的HDFS、HBase、Hive中,也可以反过来将Hadoop平台中的数据导入关系数据库中。Sqoop充分利用了Hadoop MapReduce的并行化优点,整个数据交换过程基于MapReduce实现并行化的快速处理。

14.日志数据收集工具Flume

Flume是由Cloudera开发维护的一个分布式、高可靠、高可用、适合复杂环境下大规模日志数据采集的系统。它将数据从产生、传输、处理、输出的过程抽象为数据流,并允许在数据源中定义数据发送方,从而支持收集基于各种不同传输协议的数据,并提供对日志数据进行简单的数据过滤、格式转换等处理能力。输出时,Flume可支持将日志数据写往用户定制的输出目标。

 

猜你喜欢

转载自blog.csdn.net/qq_37050329/article/details/85704641