Hadoop大数据应用技术复习题分析

文章目录

  • 复习一
    • 一. 单选题
    • 二. 多选题
    • 三. 填空题
  • 复习三
    • 一. 单选题


复习一

一. 单选题

  1. (单选题)压缩速度由大到小snappy、LZO、gzip、bzip2,压缩比最大的是
    A. snappy
    B. LZO
    C. gzip
    D. zip2

正确答案: D:zip2;

答案解析:
压缩率:zip2>gzip>lzo>snappy
压缩速度:snappy>lzo>gzip>zip2
压缩比越大 压缩速度越慢

  1. (单选题)以下类中哪一个可以实现程序从文件中读取数据
    A. inputStream
    B. FileInputStream
    C. FileOutputStream
    D. DataOutput

正确答案: B:FileInputStream;

答案解析:
inoutStream是一个抽象类,是所有输入流类的超类,本身不能直接用来读取文件。
FileOutStream用于将数据写入文件
DataOutput是一个接口,定义了写入数据到二进制流的方法输入流,从文件读取FileInputStream

二. 多选题

  1. (多选题)实现java序列化的接口
    A. Serializable
    B. Externalizable
    C. action
    D. string

正确答案: A B: Serializable ; Externalizable;

答案解析:
A. Serializable 接口是一个标记接口,它不包含任何方法。当一个类实现了这个接口,它就可以将其实例的状态保存到一个字节流中,并且可以从字节流中重构回来。
B. Externalizable 接口扩展了 Serializable 接口,并添加了两个方法:writeExternal 和 readExternal。这允许类有更多的控制权,比如自定义序列化和反序列化的机制。
C. action 不是一个与序列化相关的接口。
D. String 是Java的一个类,用于表示字符串,它本身实现了 Serializable 接口,但不是用来实现序列化的接口。

  1. (多选题)hadoop序列化接口
    A. Serializable
    B. Externalizable
    C. Writable
    D. WritableComparable

正确答案: C D:Writable; WritableComparable;

答案解析:
WritableComparable接口是Writable接口的子接口
A. Serializable 是Java标准序列化接口,但在Hadoop中通常不使用,因为它的性能比Hadoop的序列化机制慢。
B. Externalizable 也是Java的序列化接口,允许自定义序列化机制,但同样不是Hadoop中使用的序列化接口。
C. Writable 是Hadoop的序列化接口,用于数据的序列化和反序列化。它是Hadoop数据类型必须实现的接口,以便能够在Hadoop的各种节点之间传输。
D. WritableComparable 接口继承自 Writable 并添加了 Comparable 接口。这允许比较操作,是MapReduce框架中键(Key)类必须实现的接口,以便在排序和分组时使用。

  1. (多选题)选择hadoop可序列化类型
    A. String
    B. Arrays
    C. Text
    D. IntWritable

正确答案: C D:Text ; IntWritable;

答案解析:
String和Arrays不是可序列化类型,没有实现Writable接口。
A. String 是Java的基本数据类型,虽然它实现了 Serializable 接口,但在Hadoop中通常使用 Text 类来代替 String,因为 Text 类实现了 Writable 接口。
B. Arrays 本身不是Hadoop的序列化类型,但如果数组中的元素是 Writable 类型的,那么这个数组可以被序列化。
C. Text 是Hadoop中用于文本数据的序列化类型,它实现了 Writable 接口。
D. IntWritable 是Hadoop中用于整数数据的序列化类型,它实现了 Writable 接口。

  1. (多选题)分布式系统的三个基本特征()
    A. 并发性
    B. 副本
    C. 可扩展性
    D. 稳定性

正确答案: ABC:并发性; 副本; 可扩展性;

答案解析:
分布式系统的特点很多,冗余副本、并发、可扩展性、全局的时钟(确定分布环境下事件发生的先后)、故障总会发生等。稳定性不在其中,因为默认分布式系统中设备故障、网络故障等认为是不可靠的。因此设计时通过各种手段达到尽量大的稳定。

  1. (多选题)广义地将云计算解释为一种通过互联网提供的一种服务,被分为3个层次
    ( )基础架构即服务() 平台即服务() 软件即服务,灵活度依次从高到底
    A. IaaS
    B. Paas
    C. SaaS

正确答案: A B C:IaaS; Paas; SaaS;

答案解析:
基本概念,灵活性从大到小,配置难度也是从大到小。SaaS提供某软件功能
1.基础架构即服务 (IaaS): 这是最底层的服务,提供虚拟化的计算资源。用户可以在这些资源上运行任何软件,包括操作系统和应用程序。因为用户几乎可以控制整个软件堆栈,所以IaaS提供了最高的灵活度。
2.平台即服务 (PaaS): 这个层次提供了一个平台,用户可以在上面开发、运行和管理应用程序,而不必担心底层基础设施的维护和管理。PaaS提供的灵活度适中,用户不需要管理基础设施,但仍然可以控制应用程序。
3.软件即服务 (SaaS): 这是最高层的服务,提供的是直接可用的软件应用。用户不需要关心应用程序的开发、维护或基础架构,只需通过互联网使用软件即可。SaaS提供的灵活度最低,因为用户通常只能使用软件而不能控制其任何部分。

  1. (多选题) Apache Hadoop2.0的核心组件是()
    A. HDFS
    B. MapReduce
    C. YARN
    D. zookeeper
    E. Common

正确答案: A B C E:HDFS; MapReduce; YARN; Common;

答案解析:
zookeeper不是,common容易漏掉
A. HDFS (Hadoop Distributed File System):一个分布式文件系统,提供高吞吐量的数据访问。
B. MapReduce:一个编程模型和处理大数据集的实现。
C. YARN (Yet Another Resource Negotiator):一个资源管理和作业调度平台。
E. Common:提供Hadoop的框架和核心库。

D. ZooKeeper 不是Hadoop 2.0的核心组件,但它是一个为分布式应用提供协调服务的软件项目,经常与Hadoop及其他大数据解决方案一起使用。

  1. (多选题)想要访问hdfs文件系统中的文件,可以使用()设置。
    Configuration conf=new Configuration();
    A. conf.set(“fs.defaultFS”,”hdfs://master:9000”) FileSystem.get(conf);
    B. FileSystem.get(new URI(“hdfs://master:9000/”),conf)
    C. linux系统中配置了hdfs分布式配置文件,默认读取无需设置,在linux上执行程序

正确答案: ABC

答案解析:
三种方式都可以,注意C说明了程序运行的环境是linux系统,且按照分布式运行配置了文件,则conf会自动加载相关配置文件。如果没有配置文件不管是linux还是windows上执行均以本地模式。
A. 使用 Configuration 对象和 FileSystem.get 方法:
Configuration conf = new Configuration();
conf.set(“fs.defaultFS”, “hdfs://master:9000”);
FileSystem fs = FileSystem.get(conf);
B. 直接在 FileSystem.get 方法中指定HDFS的URI:
FileSystem fs = FileSystem.get(new URI(“hdfs://master:9000/”), conf);
C. 如果在Linux系统中已经配置了HDFS的分布式配置文件,且这些配置文件被正确地放置在了类路径下,那么在执行程序时,Hadoop客户端默认会读取这些配置文件,无需在代码中显式设置。

三. 填空题

  1. (填空题)对下面的person类进行序列化改造
    public class person _____________ {
    String name;
    int age;
    public void set( String name,int age ){
    this.name=name;
    this.age=age; }
    public void write(_____ )throws IOException{
    out.writeUTF(name);
    out.writeInt(age);}
    public void _____(DataInput in) throws IOException{
    name=in.readUTF();
    age=in.readInt();}
    }
    正确答案:
    (1) implements Writable
    (2) DataOutput out
    (3) readFields
public class Person implements Writable {
    String name;
    int age;

    public void set(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void write(DataOutput out) throws IOException {
        out.writeUTF(name);
        out.writeInt(age);
    }

    public void readFields(DataInput in) throws IOException {
        name = in.readUTF();
        age = in.readInt();
    }
}

implements Writable - 这使得 Person 类可以通过Hadoop的序列化/反序列化机制进行处理。
DataOutput out - 这是 write 方法的参数类型,用于将数据写入到输出流。
readFields - 这是 Writable 接口中的方法,需要被重写以从输入流中读取数据。

  1. (填空题)以下程序段实现了对hdfs中/file1.txt进行压缩,使用BZip2压缩算法,并将压缩文件存储到hdfs,文件名及存储路径为:/bzfile1.bz2。
    String codecclass = “org.apache.hadoop.io.compress.BZip2Codec”;
    Configuration conf=new Configuration();
    URI uri=new URI(“hdfs://192.168.100.101:9000/”);
    FileSystem fs = ;
    FSDataInputStream fin = fs.open(
    );
    FSDataOutputStream fout = fs.create(new Path("/bzfile1.bz2"));
    Class<?> cls1 = Class.forName(codecclass);
    CompressionCodec dfcInstance = (CompressionCodec) ReflectionUtils.newInstance(cls1, conf);
    _________________ outs=dfcInstance.createOutputStream(fout);
    IOUtils.copyBytes(
    _______________);

正确答案:
(1) FileSystem.get(uri,conf)
(2) new Path("/file1.txt")
(3) CompressionOutputStream
(4) fin, outs, 1024,true;fin,outs conf

String codecclass = "org.apache.hadoop.io.compress.BZip2Codec";
Configuration conf = new Configuration();
URI uri = new URI("hdfs://192.168.100.101:9000/");
FileSystem fs = FileSystem.get(uri, conf);
FSDataInputStream fin = fs.open(new Path("/file1.txt"));
FSDataOutputStream fout = fs.create(new Path("/bzfile1.bz2"));
Class<?> cls1 = Class.forName(codecclass);
CompressionCodec dfcInstance = (CompressionCodec) ReflectionUtils.newInstance(cls1, conf);
CompressionOutputStream outs = dfcInstance.createOutputStream(fout);
IOUtils.copyBytes(fin, outs, 1024, true);

答案解析:
压缩的基本步骤:依次创建源文件输入流FSDataInputStream fin,文件输出流FSDataOutputStream fout,创建压缩编码器(掌握反射机制创建方法),通过压缩编码器的createOutputStream方法封装 fout,创建压缩文件输出流cout,利用IOutiles提供的copybytes方法实现文件输入流到压缩输出流的数据拷贝,即形成压缩文件。

FileSystem.get(uri, conf) - 这行代码用于获取指向HDFS的 FileSystem 实例。
new Path(“/file1.txt”) - 这是要打开的HDFS文件的路径。
CompressionOutputStream - 这是 dfcInstance.createOutputStream(fout) 返回的输出流的类型。
fin, outs, 1024, true - 这是 IOUtils.copyBytes 方法的参数,用于将输入流 fin 的内容复制到输出流 outs,并在复制完成后关闭流。

  1. (填空题)下面的数量单位从大到小依次是__1__、234567
    A KB B GB C TB D MB E PB F EB G ZB
    正确答案:
    (1) G
    (2) F
    (3) E
    (4) C
    (5) B
    (6) D
    (7) A

ZB (Zettabyte): 1 ZB 等于 2的70次方字节,或者说是 1024 EB。这是一个极其庞大的数字,通常用于描述全球数据中心的总存储容量。
EB (Exabyte): 1 EB 等于 2的60次方字节,或者是 1024 PB。这个单位可以用来衡量大型企业或云服务提供商的数据存储。
PB (Petabyte): 1 PB 是 2的50次方字节,或者是 1024 TB。这个单位经常用于科学研究中,比如天文学或基因组学的数据存储。
TB (Terabyte): 1 TB 等于 2的40次方字节,或者是 1024 GB。个人电脑的硬盘驱动器和外部驱动器通常以TB为单位。
GB (Gigabyte): 1 GB 是 2的30次方字节,或者是 1024 MB。这个单位用于衡量普通软件的大小,或者是智能手机的存储空间。
MB (Megabyte): 1 MB 等于 2的20次方字节,或者是 1024 KB。这个单位常用于衡量文档或图片的大小。
KB (Kilobyte): 1 KB 是 2的10次方字节。虽然在现代计算中不是很常见,但仍然可以用于衡量非常小的文件大小。

  1. (填空题) 1TB=__1__KB 2^n表示2的n次幂
    A2^10 B 2^40 C 2^30 D 2^50

正确答案:
(1) C

答案解析:1TB=2^40 B =2^30 KB 1KB=2^10 B

  1. (填空题)Student类的定义如下:
    package fanshe;
    public class Student {
    public String name;
    private int age;
    private char sex;
    public Student() {System.out.println(“调用了公有、无参构造方法”);}
    Student(String name) {System.out.println("无修饰符的构造方法 name= " + name); }
    Student(char sex) { System.out.println(“性别:” + sex);}
    public Student(String name, int age) {System.out.println(“姓名:” + name+ " age: " + age);}
    protected Student(boolean n) { System.out.println("受保护的构造方法 n = " + n); }
    private Student(int age) {System.out.println(“私有的构造方法 年龄:” + age);}
    public void showage(int age) {System.out.println(“调用了private showage: age = " + age+”,sex "+this.sex); }
    }
    主类定义如下:
    public class usestudent {
    public static void main(String[] args) throws Exception {
    Class cls = Class.forName(“xxxx.Student”);
    Constructor con = cls.getConstructor(null);
    Object obj1= con.newInstance();//输出结果:1
    con = cls.getDeclaredConstructor(char.class);
    2//填入语句
    obj1= con.newInstance(‘男’);
    Field f = cls.getField(“name”);
    f.set(obj1,“zhangsan”);
    System.out.println(((Student)obj1).name);
    Object obj2=cls.getConstructor().newInstance();
    Field f2=cls.getDeclaredField(“sex”);
    f2.setAccessible(true);
    3//填入语句,obj2的性别为女
    Method m =cls.getDeclaredMethod(“showage”, int.class);
    m.invoke(obj2, 20);//输出结果:4
    }
    }
    正确答案:
    (1) 调用了公有、无参构造方法
    (2) con.setAccessible(true);
    (3) f2.set(obj2, ‘女’);
    (4) 调用了private showage: age = 20 ,sex 女

答案解析:
Object obj1= con.newInstance(); 这行代码调用了Student类的无参构造方法,因此会输出“调用了公有、无参构造方法”。
con = cls.getDeclaredConstructor(char.class); 这行代码获取了一个只有一个char类型参数的构造方法。要填入的语句应该是con.setAccessible(true);,这样即使构造方法是私有的,也能够访问它。
obj1= con.newInstance('男'); 这行代码创建了一个新的Student对象,并且调用了接受char类型参数的构造方法,因此会输出“性别:男”。
Field f = cls.getField("name"); 这行代码获取了Student类的name字段。由于name字段是公有的,所以可以直接访问。
f.set(obj1,"zhangsan"); 这行代码将obj1对象的name字段设置为“zhangsan”。System.out.println(((Student)obj1).name); 这行代码输出obj1对象的name字段的值,即“zhangsan”。
Object obj2=cls.getConstructor().newInstance(); 这行代码创建了一个新的Student对象,调用的是无参构造方法。
Field f2=cls.getDeclaredField("sex"); 这行代码获取了Student类的sex字段。由于sex字段是私有的,所以需要下一步操作。
f2.setAccessible(true); 这行代码使得私有字段sex可以被访问。
f2.set(obj2, '女'); 这行代码将obj2对象的sex字段设置为‘女’。
Method m =cls.getDeclaredMethod("showage", int.class); 这行代码获取了Student类的showage方法。
m.invoke(obj2, 20); 这行代码调用obj2对象的showage方法,并传入参数20,因为showage方法中打印了年龄和性别,所以会输出“调用了private showage: age = 20,sex 女”。

  1. (填空题) java项目的src文件夹下xxxx包中定义了文件property.txt,内容如下
    classname=xxxx.person
    person类定义如下:
    package xxxx;
    public class person { public String name;
    public person(){
    System.out.println(“调用了person()构造函数”); }
    public person(String name){this.name=name;System.out.println(“person(name)”);}
    public String toString(){ return “tostring method”;}
    }
    主类定义如下:
    public class useperson {
    public static void main(String[] args) throws Exception {
    Properties prop = new Properties();
    FileInputStream fin =new FileInputStream(“src/xxxx/property.txt”);
    prop.load(fin);
    String clstr=prop.getProperty(“classname”);
    Class cls = Class.forName(clstr);
    person p=ReflectionUtils.newInstance(cls,new Configuration());
    }
    }
    写出程序的输出:1
    正确答案:
    (1) 调用了person()构造函数
public class usestudent {
    public static void main(String[] args) throws Exception {
        // 通过反射获取Student类的Class对象
        Class cls = Class.forName("xxxx.Student");
        
        // 获取公有无参构造方法并创建实例,输出调用了公有、无参构造方法
        Constructor con = cls.getConstructor(null);
        Object obj1 = con.newInstance(); // 输出结果: (1) 调用了公有、无参构造方法
        
        // 获取私有构造方法(参数为char),设置可访问,创建实例
        con = cls.getDeclaredConstructor(char.class);
        con.setAccessible(true); // 填入语句 (2)
        obj1 = con.newInstance('男'); // 实例化对象,输出性别:男
        
        // 获取公有字段name并设置值为zhangsan
        Field f = cls.getField("name");
        f.set(obj1, "zhangsan");
        System.out.println(((Student)obj1).name); // 输出zhangsan
        
        // 创建另一个实例
        Object obj2 = cls.getConstructor().newInstance();
        
        // 获取私有字段sex,设置可访问,并设置值为女
        Field f2 = cls.getDeclaredField("sex");
        f2.setAccessible(true); // 填入语句 (3)
        f2.set(obj2, '女'); // 设置obj2的性别为女
        
        // 获取私有方法showage,并调用,传入参数20
        Method m = cls.getDeclaredMethod("showage", int.class);
        m.invoke(obj2, 20); // 输出结果: (4) 调用了private showage: age = 20 ,sex 女
    }
}

答案解析:
调用了person()构造函数.使用配置文件设置要创建的类的对象,注意Property类的使用、配置文件的定义位置不同,读文件的路径不一样;另外使用的hadoop的ReflectionUtils工具类使用反射机制创建对象.

  1. (填空题)开放hdfs文件系统/myfile目录下所有文件和目录的读写执行权限的hdfs shell命令是__1__
    正确答案:
    (1) hdfs dfs -chmod -R 777 /myfile
    答案解析:hdfs dfs -chmod -R 777 /myfile
    或者配置hdfs-site.xml中的属性 dfs.permissions.enable 值为false
  2. (填空题)Configuration conf=new Configuration()
    1;//通过conf加载配置项目src目录中文件myconf.xml

正确答案:
(1) conf.addResource(“myconf.xml”)

Configuration conf = new Configuration();
conf.addResource(new Path("myconf.xml")); // 填入语句

答案解析:
程序读取当前机器上的配置文件,然后再运行程序中配置的内容。
加载当前运行的机器的配置文件的内容,先core-default.xml,如果src目录中有core-site.xml也会加载
然后是程序中配置的最后执行,如果有的话。后面的配置会覆盖之前的配置
可以通过addResource()方法加载指定的配置文件,一般把配置文件放在项目的src路径下,比如配置hdfs-site.xml yarn-site.xml等

  1. (填空题)配置文件conf.xml
    在这里插入图片描述

正确答案:
(1) property
(2) /configuration
(3) str3

答案解析:property;/configuration;知道配置文件格式;由于getString中属性名str找不到,给value赋值为默认的值str3

在Hadoop的配置文件中,通常使用 <property>标签来定义配置项,每个 <property>包含一个 <name>和一个 <value>。结束标签应该是</property>。整个配置文件被 <configuration></configuration> 标签包围。
如果配置文件 conf.xml 中没有名为 “str” 的项,或者其值为空,那么 value 将会是 “str3”。

  1. (填空题)以下程序实现了hdfs系统hdfs://master:9000/中/mydirs/file1.txt文件的读写功能
    public class readandwritehfsfile {
    public static void main(String[] args) throws Exception {
    Configuration conf=new Configuration();
    FileSystem fs = FileSystem.get( 1);
    Path file= new Path(2);
    FSDataOutputStream fout = fs.create(file,true);
    fout.write(“你好,hadoop!”.getBytes(“utf-8”));
    fout.flush();
    fout.close();
    FSDataInputStream fin2 = fs.open(file);
    int len=fin.available();
    byte[] c=new byte[len];
    3 System.out.println(new String(c, “utf-8”));
    fin2.close();
    fs.close();}
    }

正确答案:
(1) new URI(“hdfs://master:9000/”)
(2) “/mydirs/file1.txt”
(3) fin2.read©

public class ReadAndWriteHDFSFile {
    public static void main(String[] args) throws Exception {
        Configuration conf = new Configuration();
        FileSystem fs = FileSystem.get(new URI("hdfs://master:9000/"), conf);
        Path file = new Path("/mydirs/file1.txt");
        FSDataOutputStream fout = fs.create(file, true);
        fout.write("你好,hadoop!".getBytes("utf-8"));
        fout.flush();
        fout.close();
        
        FSDataInputStream fin2 = fs.open(file);
        int len = fin2.available();
        byte[] c = new byte[len];
        fin2.read(c);
        System.out.println(new String(c, "utf-8"));
        fin2.close();
        fs.close();
    }
}

答案解析:
new URI(“hdfs://master:9000/”) 是HDFS文件系统的URI。
“/mydirs/file1.txt” 是要操作的文件路径。
fin2.read(c)是从文件中读取数据到字节数组c。

  1. (填空题)java项目的src文件夹下xxxx包中定义了文件property.txt,内容如下
    classname=xxxx.person
    person类定义如下:
    package xxxx;
    public class person { public String name;
    public person(){
    System.out.println(“调用了person()构造函数”); }
    public person(String name){this.name=name;System.out.println(“person(name)”);}
    public String toString(){ return “tostring method”;}
    }
    主类定义如下:
    public class useperson {
    public static void main(String[] args) throws Exception {
    Properties prop = new Properties();
    FileInputStream fin =new FileInputStream(“src/xxxx/property.txt”);
    prop.load(fin);
    String clstr=prop.getProperty(“classname”);
    Class cls = Class.forName(clstr);
    person p=ReflectionUtils.newInstance(cls,new Configuration());
    }
    }
    写出程序的输出:1

正确答案:
(1) 调用了person()构造函数

答案解析:
调用了person()构造函数.
使用配置文件设置要创建的类的对象,注意Property类的使用、配置文件的定义位置不同,读文件的路径不一样;另外使用的hadoop的ReflectionUtils工具类使用反射机制创建对象
四. 判断题

  1. (判断题)压缩比越大,压缩速率越小
    • A. 对
    • B. 错

正确答案: 对

  1. (判断题) hadoop就是云计算技术
    • A. 对
    • B. 错

正确答案: 错

答案解析:错误。hadoop是一种具体实现,体现了云计算体系中的一部分技术

  1. (判断题)NameNode 是一个中心服务器( mater ),负责管理文件系统的命名空间( NameSpace )及客户端对文件的访问。DataNode负责存储数据和执行计算任务。定期向namenode发送所存储块的列表信息
    A. 对
    B. 错

正确答案: 对

答案解析:
在Hadoop的分布式文件系统(HDFS)中,NameNode 确实是一个中心服务器,它负责管理文件系统的命名空间和客户端对文件的访问。它记录了文件系统树及所有文件和目录的元数据。这包括文件的权限、大小和文件块的位置等信息。
DataNode 是分布式文件系统中的工作节点,负责存储实际的数据块。DataNode不处理任何关于文件系统树的元数据或命名空间的信息。它们的主要任务是根据NameNode的指示存储数据,并处理文件系统客户端的数据读写请求。DataNode会定期向NameNode发送心跳和块报告,心跳证明DataNode是活跃的,而块报告包含了DataNode上所有块的列表和它们的健康状况。这样NameNode就能够知道文件系统中每个文件的块在哪个DataNode上可以找到。

  1. (判断题)文件块的存储位置也被持久存储在namenode的元数据中。
    A. 对
    B. 错

正确答案: 错

答案解析:不存储位置信息,在系统启动时,由datanode向namenode报告

  1. (判断题)因为小文件造成block数量过多,block元信息大量占用namenode的内存,因此hadoop不适合处理大量的小文件
    A. 对
    B. 错

正确答案: 对

复习三

一. 单选题

  1. (单选题)1GB=( )B 2^n表示2的n次幂
    A. 2^10
    B. 2^40
    C. 2^30
    D. 2^50

正确答案: C: 2^30 ;

答案解析:
2^10=1K
2^20=1M
2^30=1G
2^40=1T
2^50=1P 掌握常用数量单位

  1. (单选题)MapReduce计算框架中,输入格式默认是TextInputFormat,则map函数的输入的key value类型分别是( )
    A. LongWritable Text
    B. long string
    C. Text Text
    D. LongWrtiable IntWritable

正确答案: A:LongWritable Text;

答案解析:
LongWritable Text是TextInputFormat默认的key value类型

  1. (单选题)HDFS中不会被持久存储的信息是( )
    A. 文件名
    B. 目录名
    C. 文件的分块信息
    D. 块的存储位置

正确答案: D: 块的存储位置;

答案解析:
块存储位置不持久存储,每次在集群启动时由datanode向namenode报告生成,安全模式阶段完成

  1. (单选题)按照默认配置,文件大小为150M,则该文件会被分为( )片
    A. 4
    B. 3
    C. 2
    D. 1

正确答案: C:2;

答案解析:
文件大小/128M>1.1被分片,150/128>1.1分为2片

  1. (单选题)按照默认配置,文件大小为128.5M,则该文件会被分为( )片(易错)
    A. 1
    B. 2
    C. 3
    D. 4

正确答案: A:1;

答案解析:
文件大小/128M>1.1会被分片,否则作为一片,本题128.5/128<1.1

  1. (单选题)以下类中哪一个可以实现程序从文件中读取数据
    A. inputStream
    B. FileInputStream
    C. FileOutputStream
    D. DataOutput

正确答案: B:FileInputStream;

答案解析:
输入流,从文件读取FileInputStream

  1. (单选题)压缩速度由大到小 snappy、LZO、gzip、bzip2,压缩比最大的是
    A. snappy
    B. LZO
    C. gzip
    D. zip2

正确答案: D:zip2;

答案解析:
压缩比越大 压缩速度越慢

  1. (单选题)reduce阶段收到的key类型为Text,则map阶段相关设置正确的是
    A. job.setMapOutputKeyClass(Text.class);
    B. job.setOutputKeyClass(Text.class);
    C. job.setOutputKeyClass(Text);
    D. job.setMapOutputValueClass(Text);

正确答案: A:job.setMapOutputKeyClass(Text.class);;

答案解析:
map的输出端与key的输入端类型一致

  • 15
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小伍_Five

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

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

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

打赏作者

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

抵扣说明:

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

余额充值