【大数据技术原理与应用】复习

在这里插入图片描述

一、填空(10X2)

请添加图片描述
请添加图片描述

在这里插入图片描述

请添加图片描述请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述
请添加图片描述请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述

请添加图片描述
请添加图片描述

请添加图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、问答(3)

1、第二名称节点的作用

  1. 完成EditLog与FsImage的合并
    第二名称节点将名称节点中的文件拉到本地,然后加载到内存,对二者进行合并操作,即在内存条里一条一条执行EditLog里的操作,使得FsImage保持最新。合并结束后将EditLog new和FsImage new发送给名称节点。以防止EditLog过大,导致名称节点失败恢复时消耗过多时间。
  2. 作为名称节点的“检查点”
    周期性的备份名称节点中的元数据信息,但并不能直接替代主NameNode起到热备份的作用。如果主NameNode发生故障,HDFS需要通过其他手段(例如使用HA,High Availability)来实现主备份切换,以确保系统的连续性。

2、给一个文件怎么存储、设置、存储原理

  1. 切分为块

在这里插入图片描述
2、设置
在这里插入图片描述
3、存取策略
在这里插入图片描述
ect/fe8e80727d714b5a8faac3e9b87993d3.png)

3、MapReduce工作流程(P132、7-2)

工作流程概述
在这里插入图片描述
MapReduce各个执行阶段

在这里插入图片描述
在这里插入图片描述

三、分析题(2X10)

1、Scala代码(spark实验四核心代码)

package org.zkpk.lab
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf,SparkContext}
class ScalaWordCount {}
object ScalaWordCount{
  def main(args: Array[String]): Unit = {
    val list = List("hello hi hi spark",
    "hello spark hello hi sparksql",
    "hello hi hi sparkstreaming",
    "hello hi sparkgraphx")
    val sparkConf = new SparkConf().setAppName("word-count").setMaster("local[*]")
    val sc = new SparkContext(sparkConf)
    val lines : RDD[String] = sc.parallelize(list)
    val words : RDD[String] = lines.flatMap((line:String) =>{line.split(" ")})
    val wordAndOne : RDD[(String, Int)] =
      words.map((word : String) => {(word, 1)})
    val wordAndNum : RDD[(String, Int)] =
      wordAndOne.reduceByKey((count1 : Int, count2 : Int) => {count1+count2})
    val ret = wordAndNum.sortBy(kv => kv._2,false)
    println(ret.collect().mkString(","))
    ret.saveAsTextFile(args(0))
    sc.stop()
  }
}

思考题

  1. 本实验中RDD对象lines的flatMap方法是按照什么来切分RDD中的字符串元素的?

  2. 试解释下面语句的意思?

3.本实验中这句语句中的args(0)在运行配置参数arguments时是什么?

2、修改代码(第五章ppt代码)

在这里插入图片描述

四、应用题(40)

1、HDFS常用命令(实验二)

命令基本格式:

hadoop fs -cmd < args >

1.ls

hadoop fs -ls /

列出hdfs文件系统根目录下的目录和文件

hadoop fs -ls -R /

列出hdfs文件系统所有的目录和文件

2.put
将本地文件上传到HDFS

hadoop fs -put < local file > < hdfs file >
hdfs file的父目录一定要存在,否则命令不会执行
hadoop fs -put < local file or dir >…< hdfs dir >
hdfs dir 一定要存在,否则命令不会执行
hadoop fs -put - < hdsf file>
从键盘读取输入到hdfs file中,按Ctrl+D结束输入,hdfs file不能存在,否则命令不会执行

2.1.moveFromLocal

hadoop fs -moveFromLocal < local src > … < hdfs dst >

与put相类似,命令执行后源文件 local src 被删除,也可以从从键盘读取输入到hdfs file中

2.2.copyFromLocal

hadoop fs -copyFromLocal < local src > … < hdfs dst >

与put相类似,也可以从从键盘读取输入到hdfs file中

3.get
将HDFS中的文件复制到本地

hadoop fs -get < hdfs file > < local file or dir>

local file不能和 hdfs file名字不能相同,否则会提示文件已存在,没有重名的文件会复制到本地

hadoop fs -get < hdfs file or dir > … < local dir >

拷贝多个文件或目录到本地时,本地要为文件夹路径 注意:如果用户不是root, local 路径要为用户文件夹下的路径,否则会出现权限问题,

3.1.copyToLocal

hadoop fs -copyToLocal < local src > … < hdfs dst >

与get相类似

4.rm

hadoop fs -rm < hdfs file > …

hadoop fs -rm -r < hdfs dir>…

每次可以删除多个文件或目录

5.mkdir

hadoop fs -mkdir < hdfs path>

只能一级一级的建目录,父目录不存在的话使用这个命令会报错

hadoop fs -mkdir -p < hdfs path>

所创建的目录如果父目录不存在就创建该父目录

6.getmerge

hadoop fs -getmerge < hdfs dir > < local file >

将hdfs指定目录下所有文件排序后合并到local指定的文件中,文件不存在时会自动创建,文件存在时会覆盖里面的内容

hadoop fs -getmerge -nl < hdfs dir > < local file >

加上nl后,合并到local file中的hdfs文件之间会空出一行

7.cp

hadoop fs -cp < hdfs file > < hdfs file >

目标文件不能存在,否则命令不能执行,相当于给文件重命名并保存,源文件还存在 hadoop fs -cp < hdfs file or dir

… < hdfs dir >

目标文件夹要存在,否则命令不能执行

8.mv

hadoop fs -mv < hdfs file > < hdfs file >

目标文件不能存在,否则命令不能执行,相当于给文件重命名并保存,源文件不存在

hadoop fs -mv < hdfs file or dir >… < hdfs dir >

源路径有多个时,目标路径必须为目录,且必须存在。 注意:跨文件系统的移动(local到hdfs或者反过来)都是不允许的

9.count

hadoop fs -count < hdfs path >

统计hdfs对应路径下的目录个数,文件个数,文件总计大小 显示为目录个数,文件个数,文件总计大小,输入路径

10.du

hadoop fs -du < hdfs path>

显示hdfs对应路径下每个文件夹和文件的大小

hadoop fs -du -s < hdfs path>

显示hdfs对应路径下所有文件的大小

hadoop fs -du - h < hdfs path>

显示hdfs对应路径下每个文件夹和文件的大小,文件的大小用方便阅读的形式表示,例如用64M代替67108864

11.text

hadoop fs -text < hdfs file>

将文本文件或某些格式的非文本文件通过文本格式输出

12.setrep

hadoop fs -setrep -R 3 < hdfs path >

改变一个文件在hdfs中的副本个数,上述命令中数字3为所设置的副本个数,-R选项可以对一个人目录下的所有目录+文件递归执行改变副本个数的操作

13.stat

hdoop fs -stat [format] < hdfs path >

返回对应路径的状态信息
[format]可选参数有:%b(文件大小),%o(Block大小),%n(文件名),%r(副本个数),%y(最后一次修改日期和时间)
可以这样书写hadoop fs -stat %b%o%n < hdfs path >,不过不建议,这样每个字符输出的结果不是太容易分清楚

14.tail

hadoop fs -tail < hdfs file >

在标准输出中显示文件末尾的1KB数据

15.archive

hadoop archive -archiveName name.har -p < hdfs parent dir > < src >* <
hdfs dst >

命令中参数name:压缩文件名,自己任意取;
< hdfs parent dir > :压缩文件所在的父目录;
< src >:要压缩的文件名;
< hdfs dst >:压缩文件存放路径
示例:hadoop archive -archiveName hadoop.har -p /user 1.txt 2.txt /des
示例中将hdfs中/user目录下的文件1.txt,2.txt压缩成一个名叫hadoop.har的文件存放在hdfs中/des目录下,如果1.txt,2.txt不写就是将/user目录下所有的目录和文件压缩成一个名叫hadoop.har的文件存放在hdfs中/des目录下
显示jar的内容可以用如下命令:

hadoop fs -ls /des/hadoop.jar

显示jar压缩的是那些文件可以用如下命令

hadoop fs -ls -R har:///des/hadoop.jar

注意:jar文件不能进行二次压缩。如果想给.jar加文件,只能找到原来的文件,重新创建一个。jar文件中原来文件的数据并没有变化,jar文件真正的作用是减少NameNode和DataNode过多的空间浪费。

16.balancer

hdfs balancer

如果管理员发现某些DataNode保存数据过多,某些DataNode保存数据相对较少,可以使用上述命令手动启动内部的均衡过程

17.dfsadmin

hdfs dfsadmin -help

管理员可以通过dfsadmin管理HDFS,用法可以通过上述命令查看 hdfs dfsadmin -report

显示文件系统的基本数据

hdfs dfsadmin -safemode < enter | leave | get | wait >

enter:进入安全模式;leave:离开安全模式;get:获知是否开启安全模式; wait:等待离开安全模式

18.distcp

用来在两个HDFS之间拷贝数据

2、基于sogo日志文件的分析(实验十、十七核心代码)

实验十MapReduce编程:检索特定群体搜索记录
代码清单org.zkpk.hadoop.moviefilter.MovieFilterMapper:

package org.zkpk.hadoop.moviefilter;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class MovieFilterMapper extends Mapper<Object,Text,Text,Text>{
      protected void map(Object key,Text value,Context context)
               throws IOException,InterruptedException{
          String [] arr = value.toString().split("\t");
          if(arr.length == 6){
              String uid = arr[1];
              String keyword = arr[2];
              if (keyword.indexOf("电影") >= 0){
                  context.write(new Text(uid), new Text(keyword) );
              }
          }
      }
}

MovieFilterMapper类代码

代码清单
org.zkpk.hadoop.moviefilter.MovieFilterReducer:

package org.zkpk.hadoop.moviefilter;
import java.io.IOException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class MovieFilterReducer extends Reducer<Text ,Text ,Text ,Text>{
    protected void reduce(Text key ,Iterable<Text> values ,Context context)
              throws IOException ,InterruptedException{
        StringBuffer sb = new StringBuffer();
        boolean flag = false;
        for(Text val :values){
            flag = true;
            sb.append(val.toString() +",");
        }
        if(flag)
            sb.setLength(sb.length() - 1);
            context.write(key, new Text(sb.toString()));
    }
}

MovieFilterReducer类代码

代码清单org.zkpk.hadoop.moviefilter.MovieFilter:

package org.zkpk.hadoop.moviefilter;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class MovieFilter {
    public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException{
        String in = args[0];
        String out = args[1];
        Configuration conf = new Configuration();
        Job job = new Job(conf,"MovieFilter");
        job.setJarByClass(MovieFilter.class);
        job.setMapperClass(MovieFilterMapper.class);
        job.setReducerClass(MovieFilterReducer.class);
        job.setOutputKeyClass(Text.class);
        job.setOutputValueClass(Text.class);
        FileInputFormat.addInputPath(job, new Path(in));
        FileOutputFormat.setOutputPath(job, new Path(out));
        job.waitForCompletion(true);
        }
}

实验十七MapReduce编程:检索特定偏好用户。
SearchMap类代码
代码清单org.zkpk.hadoop.search.SearchReduce:

package org.zkpk.hadoop.search;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class SearchReduce extends Reducer<Text ,Text ,Text ,IntWritable>{
      protected void reduce(Text key ,Iterable<Text> values , Context context)
                throws IOException,InterruptedException{
          int sum = 0;
          for(Text keyword: values){
              sum++;
          }
          context.write(key, new IntWritable(sum));
      }
}

SearchMain类代码
代码清单org.zkpk.hadoop.search.SearchMap:

package org.zkpk.hadoop.search;
import java.io.IOException;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class SearchMap extends Mapper<Object ,Text ,Text ,Text>{ 
      protected void map(Object key ,Text value ,Context context)
                throws IOException,InterruptedException{
          String []arr = value.toString().split("\t");
          if(arr != null && arr.length == 6){
              String uid = arr[1];
              String keyword = arr[2];
              if (keyword.indexOf("仙剑奇侠传") >= 0){
                  context.write(new Text(uid), new Text(keyword));
              }
          }
     }
}

代码清单org.zkpk.hadoop.search.SearchMain:

package org.zkpk.hadoop.search;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
public class SearchMain {
      public static void main(String[] args)
               throws IOException,ClassNotFoundException,InterruptedException{
          if(args == null || args.length !=2){
               System.err.println("<Usage>: SearchMain need <input> <output>");
               System.exit(1);
          }
          String in = args[0];
          String out = args[1];
          Configuration conf = new Configuration();
          Job job = new Job(conf ,"SearchMain");
          job.setJarByClass(SearchMain.class);
          job.setMapperClass(SearchMap.class);
          job.setReducerClass(SearchReduce.class);
          job.setMapOutputKeyClass(Text.class);
          job.setMapOutputValueClass(Text.class);
          job.setOutputKeyClass(Text.class);
          job.setOutputValueClass(IntWritable.class);
          FileInputFormat.addInputPath(job, new Path(in));
          FileOutputFormat.setOutputPath(job, new Path(out));
          System.exit(job.waitForCompletion(true)? 0:1);
      }
}

3、 看代码写结果(两次实验大作业扩展实验代码)

实验八MapReduce编程:单词计数
代码清单org.zkpk.hadoop.wordcount.WordMain:

package org.zkpk.hadoop.wordcount;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat;
public class WordMain {
   public static void main(String[] args) throws IOException,
         ClassNotFoundException, InterruptedException {
      if (args.length != 2 || args == null){
         System.out.println("please input current Path");
         System.exit(0);
      }
      Configuration conf = new Configuration();
      Job job = new Job(conf ,WordMain.class.getSimpleName());
      //打包jar包
      job.setJarByClass(WordMain.class);
      //通过job设置输入输出格式
      job.setInputFormatClass(TextInputFormat.class);
      job.setOutputFormatClass(TextOutputFormat.class);
      //设置输入输出略径
      FileInputFormat.setInputPaths(job, new Path(args[0]));
      FileOutputFormat.setOutputPath(job, new Path(args[1]));
      //设置处理Map/Reduce阶段的类
      job.setMapperClass(WordMap.class);
      job.setReducerClass(WordReduce.class);
      //设置最终输出key/value的类型
      job.setOutputKeyClass(Text.class);
      job.setOutputValueClass(IntWritable.class);
      //提交作业
      job.waitForCompletion(true);
   }
}

代码清单org.zkpk.hadoop.wordcount.WordMap:

package org.zkpk.hadoop.wordcount;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Mapper;
public class WordMap extends Mapper<Object ,Text,Text,IntWritable>{
    protected void map(Object key,Text value,Context context)
                      throws IOException,InterruptedException{
        String [] lines = value.toString().split(" ");
        for(String word:lines){
            //每个单词出现1次,作为中间结果输出
            context.write(new Text(word), new IntWritable(1));
        }
    }
}

代码清单org.zkpk.hadoop.wordcount.WordReduce:

package org.zkpk.hadoop.wordcount;
import java.io.IOException;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Reducer;
public class WordReduce extends Reducer<Text,IntWritable,Text,IntWritable>{
    protected void reduce(Text key ,Iterable<IntWritable> values,
        Context context)throws IOException,InterruptedException{
        int sum=0;
        for(IntWritable count:values){
            sum = sum+count.get();
        }
        context.write(key, new IntWritable(sum)) ;// 输出最终结果
    }
}

实验四Spark Core:Scala单词计数
代码清单ScalaWordCount:



package org.zkpk.lab
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf,SparkContext}
class ScalaWordCount {}
object ScalaWordCount{
  def main(args: Array[String]): Unit = {
    val list = List("hello hi hi spark",
    "hello spark hello hi sparksql",
    "hello hi hi sparkstreaming",
    "hello hi sparkgraphx")
    val sparkConf = new SparkConf().setAppName("word-count").setMaster("local[*]")
    val sc = new SparkContext(sparkConf)
    val lines : RDD[String] = sc.parallelize(list)
    val words : RDD[String] = lines.flatMap((line:String) =>{line.split(" ")})
    val wordAndOne : RDD[(String, Int)] =
      words.map((word : String) => {(word, 1)})
    val wordAndNum : RDD[(String, Int)] =
      wordAndOne.reduceByKey((count1 : Int, count2 : Int) => {count1+count2})
    val ret = wordAndNum.sortBy(kv => kv._2,false)
    println(ret.collect().mkString(","))
    ret.saveAsTextFile(args(0))
    sc.stop()
  }
}

课后习题整理

第一章

  1. 下列哪一项不属于大数据处理的特点?
    集中化 (答案)
    高并发
    可扩展
    分布式

  2. 下列哪个不属于物联网的应用?
    智能物流
    智能安防
    环保监测
    数据采集 (答案)

  3. 下列哪一个不属于大数据产业的产业链环节?
    数据存储层 (答案)
    数据源层
    数据分析层
    数据应用层

  4. 物联网的关键技术包括哪些?
    识别和感知技术 (答案)
    网络与通信技术 (答案)
    数据挖掘与融合技术 (答案)
    信息处理一体化技术

第二章

  1. 在google那篇论文中说明存储位置问题,GFS把每个文件分成 64MB的一些块,然后每个块的几个拷贝存储在不同的机器上(一般是3个拷贝)。MapReduce的master考虑输入文件的位置信息,并且努力在一个包含相关输入数据的机器上安排一个map任务。如果这样做失败了,它尝试在那个任务的输入数据的(== 附近 == )位置安排一个map任务(例如,分配到一个和包含输入数据块在(==相同 == )交换机里的worker机器上执行),这样大部分输入数据在本地被读取,从而不消耗网络带宽。

  2. Google在2004年发表了一篇文章阐述了MapReduce分布式编程思想,名字是:MapReduce: Simplified Data Processing on Large Clusters (答案)

  3. 下列哪一个不属于Hadoop的大数据层的功能?
    数据挖掘 (答案)
    离线批处理
    实时查询
    BI分析

  4. 下列哪项通常是集群的最主要的性能瓶颈。
    CPU
    磁盘 (答案)
    网络
    内存

  5. 一个基本的Hadoop集群中的节点主要包括什么?
    DataNode:存储被拆分的数据块 (答案)
    JobTracker:协调数据计算任务 (答案)
    TaskTracker:负责执行由JobTracker指派的任务 (答案)
    SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息 (答案)

  6. Hadoop在企业中的应用架构包括哪几层?
    访问层 (答案)
    大数据层 (答案)
    数据源层 (答案)
    网络层

  7. 普通的Hadoop集群结构由一个两阶网络构成。

  8. Flume是一个日志收集分析框架。

  9. Hive是Hadoop生态系统中的数据仓库。

  10. Hbase是一个提供高可靠性、高性能、可伸缩、实时读写、分布式的列式数据库
    第三章

  11. 下列不属于NameNode的功能是什么。
    提供名称查询服务
    保存Block信息,汇报Block信息 (答案DataNode)
    保存metadata信息
    metadata信息在启动后会加载到内存

  12. 在实验集群的master节点使用jps命令查看进程时,终端出现以下哪项能说明Hadoop的master节点启动成功?Namenode, secondaryNameNode ,ResourceManager (答案)

  13. 下列哪些属于Hadoop2.0的改进?
    设计了HDFS HA (答案)
    提供名称节点热备机制 (答案)
    设计了HDFS Federation,管理多个命名空间 (答案)
    设计了新的资源管理框架YARN (答案)

  14. 在YARN体系结构中,ApplicationMaster主要功能包括哪些?
    当用户作业提交时,ApplicationMaster与ResourceManager协商获取资源,ResourceManager会以容器的形式为ApplicationMaster分配资源 (答案)
    把获得的资源进一步分配给内部的各个任务(Map任务或Reduce任务),实现资源的“二次分配” (答案)
    定时向ResourceManager发送“心跳”消息,报告资源的使用情况和应用的进度信息 (答案)
    向ResourceManager汇报作业的资源使用情况和每个容器的运行状态(NodeManager)

  15. HDFS特殊的设计,在实现优良特性的同时,也使得自身具有一些应用局限性,主要包括以下哪几个方面?
    不适合低延迟数据访问 (答案)
    无法高效存储大量小文件 (答案)
    不支持多用户写入及任意修改文件 (答案)
    较差的跨平台兼容性

  16. YARN中的Application Master运行在Slave节点上。
    在这里插入图片描述

  17. 客户端采用RPC方式和DataNode进行通信。
    在这里插入图片描述

  18. ResourceManager是Master上一个独立运行的进程,负责集群统一的资源管理、调度、分配等等。

  19. HDFS HA设置两个名称节点,“活跃(Active)”和“待命(Standby)” 两种名称节点的状态同步,一旦活跃名称节点出现故障,就可以立即切换到待命名称节点。

  20. HDFS的命名空间包含目录、文件和块

  21. NameNode本地磁盘保存了Block的位置信息。(False)
    不在本地磁盘,而是系统每次启动时扫描所有DataNode重构得到这些信息

  22. HDFS的 Web UI 端口是 50070。

第四章

  1. Map端的Shuffle过程包括4个步骤,分别是输入数据和执行Map任务;( 写入缓冲区 );溢写;文件归并。

  2. 用户编写的MapReduce程序通过什么提交到JobTracker端的。Client (答案)

  3. Google在2004年发表了一篇文章阐述了MapReduce分布式编程思想,名字是?MapReduce: Simplified Data Processing on Large Clusters (答案)

  4. 若不针对MapReduce编程模型中的key和value值进行特别设置,下列哪一项是MapReduce不适宜的运算。Average (答案)

  5. 下列说法有误的是?MapReduce可批处理、实时计算、数据疏散型 (答案)

  6. 下面哪一项不是MapReduce体系结构主要部分?
    JobTracker
    Client
    TaskTracker以及Task
    Job (答案)在这里插入图片描述

  7. MapReduce执行的全过程包括以下哪几个主要阶段?
    从分布式文件系统读入数据 (答案)
    执行Map任务输出中间结果 (答案)
    通过 Shuffle阶段把中间结果分区排序整理后发送给Reduce任务 (答案)
    执行Reduce任务得到最终结果并写入分布式文件系统 (答案)

  8. 对于MapReduce 而言,其处理单位是split。split 是一个逻辑概念,它包含哪些元数据信息?

  9. 一个Split就包含了64M的数据本身。(False)
    split 是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等。

  10. MapReduce不适合迭代计算。

  11. Mapreduce的input split就是一个block。(False)
    不一定,有可能大于一个block

  12. 下列哪一项是action操作?
    reduceByKey
    reduce (答案)
    map
    groupByKey
    请添加图片描述

  13. Task 运行在哪一选项中的 Executor 上?
    Driver program
    spark master
    worker node (答案)
    Cluster manager
    在这里插入图片描述

  14. 哪一项不是 Spark 的四大组件?
    Spark Streaming
    Mllib
    Graphx
    Spark R (答案)

在这里插入图片描述

  1. 哪个API以数组的形式返回数据集中的所有元素。
    count()
    map()
    reduce()
    collect() (答案)

  2. 如果Spark的部署方式是on Yarn,则系统的cluster manager 是 Yarn。

  3. Worker node上的Executer是以多线程的方式运行Task的。

  4. Stage的划分原则是将窄依赖尽量划分在同一个Stage中,可以实现流水线计算从而使得数据可以直接在内存中进行交换,避免磁盘IO开销。

  5. 在Spark程序中必须创建一个SparkContext对象,该对象是Spark程序的入口,负责创建RDD、启动任务等。
    在这里插入图片描述

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr Maria

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值