• 【大数据采集技术与应用】【期末复习题】


    一、选择题

    1、zookeeper的默认监控端口号是多少?

    A、 2180
    B、 2181
    C、 2182
    D、 2183

    2、kafka的默认监听端口号是?

    A、 9090
    B、 9091
    C、 9092
    D、 9093

    3、解压一个tar.gz格式的压缩包,要求详细显示解压的过程。使用tar命令,需要搭配哪些参数?

    A、 xvzf
    B、 xdgf
    C、 vzwf
    D、 xziv

    4、默认情况下,kafka日志文件会被保存至少多少小时?

    A、 24
    B、 48
    C、 96
    D、 168

    5、默认情况下,kafka连接zookeeper的失效时间为多久?单位毫秒。

    A、 1000
    B、 3000
    C、 6000
    D、 12000

    6、验证系统java是否安装成功需要输入以下哪条命令?

    A、 java --version
    B、 java -version
    C、 java -v
    D、 java --v

    7、以下哪条命令可以使普通用户临时具备管理员权限执行命令?

    A、 youdo
    B、 do
    C、 su
    D、 sudo

    8、以下哪个命令可以对zip类型的包进行解压缩?

    A、 unzip
    B、 uzip
    C、 umzip
    D、 以上都不对

    9、使用以下哪个命令可以进行目录的切换?

    A、 mkdir
    B、 chmod
    C、 cd
    D、 dir

    10、若Kettle脚本spoon.sh无运行权限,以下哪条命令可以解决问题?

    A、 chmod w+x spoon.sh
    B、 chmod +r spoon.sh
    C、 chmod +x spoon.sh
    D、 以上都不对

    11、启动MYSQL数据库的命令为?

    A、 service mysql start
    B、 service mysql stop
    C、 service mysql status
    D、 service mysql restart

    12、创建一个名为kettle的数据库的命令为?

    A、 create kettle;
    B、 create database kettle;
    C、 create database kettle
    D、 create kettle

    13、删除库中表的命令为?
    A、 del
    B、 delete
    C、 drop
    D、 dropit

    14、往表中插入数据使用的命令为?

    A、 insect
    B、 incent
    C、 insertion
    D、 insert

    15、1PB=1024( )?

    A、 EB
    B、 TB
    C、 ZB
    D、 GB

    16、以下哪点不是信息科技为大数据时代提供的技术支撑?

    A、 存储设备容量不断增加
    B、 CPU处理能力大幅提高
    C、 GPU显存不断增大
    D、 网络带宽不断增加

    17、ETL表示的意思是?

    A、 extract/transplant/leave
    B、 exit/transplant/load
    C、 extract/transform/load
    D、 extract/transform/leave

    18、研究datax的架构后发现,它之所以能够对几乎所有类型的数据源进行同步,是因为它采用了哪种类型的数据链路?

    A、 线型
    B、 网状
    C、 树型
    D、 星型

    19、在logstash是架构中,以下说法不正确的是?

    A、 input组件是必选项
    B、 filter是必选项
    C、 output是必选项
    D、 codecs是可选项

    20、logstash的配置文件中,指定某个参数的内容,使用的符号是?

    A、 =
    B、 =>
    C、 :=
    D、 ==

    二、填空题

    1、linux下,在/opt目录下新建一个kafka文件夹,采用的命令为____。

    sudo mkdir /opt/kafka;

    2、将当前目录下的文件file的权限给定开放所有权限,则对应的命令为____。

    sudo chmod 777 file; sudo chmod a=rwx file; sudo chmod a+r, a+w, a+x file;

    3、在server.properties配置文件中,负责设定broker编号的选项为____。

    broker.id;

    4、实现数据同步的技术是____,实现数据清洗的技术是____,实现日志采集的技术是____,实现实时数据采集的技术是____。

    datax;Datax;DATAX;
    Kettle;KETTLE;kettle;
    logstash;Logstash;LOGSTASH;
    kafka;Kafka;KAFKA;

    5、在logstash的事件处理过程中,____组件负责产生事件,filter组件负责数据处理与转换, 组件负责数据输出。

    input;Input;INPUT;
    output;Output;OUTPUT;

    6、大数据的特征5V,包含____、种类多、速度快、真实性和____。

    容量大;
    价值密度低;

    7、kettle框架中包含的4个组件分别是:spoon、____、____和carte。

    kitchen;Kitchen;KITCHEN;
    pan;Pan;PAN;

    8、kettle中有两类设计分别是:____ 和 ____。

    转换;transformation;Transformation;TRANSFORMATION;
    作业;job;JOB;Job;

    9、kettle工程存储方式有两种,一种是以____形式存储,一种是以____方式存储。

    XML;xml;Xml;
    资源库;

    10、kafka集群通常包含多个代理,这些代理的英文为____,每个发布到kafka的消息都有一个类别,这个类别称为____。

    broker;Broker;BROKER;
    主题;topic;Topic;TOPIC;

    三、简答题

    1、什么是大数据?

    维基百科定义:大数据是指无法使用传统和常用的软件技术和工具在一定时间内完成获取、管理和处理的数据。
    麦肯锡咨询公司定义:大数据是指大小超出了常规数据库软件的采集、存储、管理和分析能力的数据集。

    2、什么是数据采集?

    数据采集又称数据获取,是指从传感器和其他待测设备等模拟和数字被测单元中自动采集信息的过程。

    3、什么是大数据采集?

    大数据采集技术就是对数据进行ETL操作,通过对数据进行提取、转换、加载,挖掘出数据的潜在价值,为用户提供解决方案或决策参考。

    4、简述大数据的基本特性。

    容量大、种类多、速度快、真实性、价值密度低。

    5、简述大数据的处理流程。

    数据采集、数据存储、数据预处理、数据计算、数据统计分析、数据挖掘、数据展示等环节。

    6、数据采集与大数据采集的区别是什么?

    传统数据采集:来源单一,数据量相当小;结构单一;关系数据库和并行数据库存储。
    大数据采集:来源广泛,数量巨大;数据类型丰富;分布式数据库存储。

    7、什么是大数据采集技术?它包含哪些方法?

    大数据采集技术就是对数据进行ETL操作,通过对数据进行提取、转换、加载,挖掘出数据的潜在价值,为用户提供解决方案或决策参考。
    它包含的方法有:离线采集、实时采集、互联网采集和其他采集方法。

    8、简述大数据采集技术的主要应用。

    1、DANA智能大数据处理平台
    2、政务大数据融合平台
    3、交通大数据融合平台
    4、出入境大数据融合平台

    9、DataX的特点是什么?

    1、在异构的数据库/文件系统之间高速交换数据
    2、采用Framework+Plugin(框架+插件)架构构件

    10、在安装好的DataX框架中,datax.py和任务配置文件什么位于哪两个目录?

    datax.py位于bin目录下
    任务配置文件位于job目录下

    11、假设执行一次datax的数据同步任务,需要设置数据通道数为5,需要修改配置文件中的哪个选项?

    speed内的channel选项配置为5

    12、简述DataX的核心模块。

    1、Job模块
    2、Task模块
    3、TaskGroup模块
    4、Storage模块

    13、列举三个DataX相关插件。

    HdfsReader/MySQLReader/SQLserverReader
    HdfsWriter/MySQLWriter/OracleWriter…

    14、什么是spoon?

    kettle的集成开发环境,提供图形化的界面,用于创建和编辑任务或转换定义。

    15、什么是Kettle中的转换?

    转换完成针对数据的基础转换,它处理抽取、转换、加载各阶段各种对数据行的操作。

    16、什么是回溯算法?

    假设执行了图里的一条路径的某个节点,要依次执行这个节点的所有子路径,直到没有可以执行的子路径,就返回该节点的上一节点,再反复这个过程。

    17、kettle中包括哪些模块?分别是什么作用?

    Spoon:转换或作业的开始,测试、调试和监控的集成开发环境;
    Kitchen:作业的命令行工具,用于操作系统级的调度;
    Pan:转换的命令行工具,用于操作系统级的调度;
    Carte:轻量级的HTTP服务器,用于远程执行作业和转换或在集群中并行执行作业和转换。

    18、什么是Kettle?它的工程存储方式是什么?两类设计分别是什么?

    Kettle是用来帮助用户实现抽取、转换、装入和加载数据需要的开源ETL工具。
    存储方式有两种:XML形式和资源库方式。
    两类设计分别是:转换和作业。

    19、想要使用kettle对mySQL数据库中的内容进行操作。要想完成以上任务,简要说明搭建Kettle环境需要哪些注用事项。

    首先需要JAVA环境的支持,在安装了mySQL数据库和kettle之后,要将mySQL驱动jar包复制到Kettle安装目录下的Lib子目录下,才能正常连接MySQL数据库。

    20、kafka系统中,消费者通过什么机制,从服务器中获取想要的消息?

    生产者发布到Kafka的消息包含一个类别,这个类别被称为主题topic。消费者通过订阅相应的主题来达到从Kafka中拉取相应消息的结果。

    21、broker,partition,topic之间的关系是怎样的?

    kafka集群通常包含多个代理,这些代理即broker,也就是我们常说的服务器。topic是联结生产者和消费者之间的桥梁,一个topic可以分为一个或多个partition,存储在一个或多个broker之上。

    22、消息被分配到哪个分区是如何决定的?

    一般来说,可以有两种方法确定消费要去到的分区。一是由生产者直接指定;二是根据消息的键值,采用某种算法(round-robin或hash),计算出消息要被分配到哪个分区。

    23、简述kafka的基本架构。

    Kafka由Producer生产者、broker服务代理、consumer消费者、zookeeper分布式协调服务这几大构件组成。 Producer生产者、broker服务代理、consumer消费者可以有多个 ,zookeeper提高了系统的扩展性。生产者和消费者都是实现kafka注册的接口,数据从生产者发送到broker代理,broker承担一个中间缓存和分发的作用,将数据分发注册到系统中的消费者中。

    24、kafka相对传统技术有什么优势?

    kafka采用集群化,可以避免宕机对系统的影响,并且能够直到均衡负载的作用。此外,为了提高效率,kafka放弃了对事务的支持。kafka还支持动态扩容,这意味着机构可以在不停机的基础上完成kafka系统的升级。

    25、什么是logstash?它提供了哪些组件?

    logstash是一个接收、处理、转发日志的工具。它提供了input、filter、codecs和output等组件。

    26、logstash、elasticsearch、kibana分别起什么作用?

    elasticsearch作为后台数据的存储,kibana用于前端报表展示,logstash在这个过程中担任搬运工的角色。

    27、同样作为日志采集工具,Logstash与filebeat相比各有哪些特点?

    Logstash:具有过滤器功能,能够分析日志。获取日志,进行过滤分析后,存储到ElasticSearch中。对资源要求比较高。
    Filebeat:更轻量,占用资源更少,用来采集日志,发送到消息队列。

    28、什么是消费者和消费者组?

    消费者从代理处读取数据,消费者订阅一个或多个主题,并通过从代理中提取数据来使用已发布的消息。
    每个消费者属于一个特定的消费者组。

    29、什么是消息的生产者?

    生产者是发送给一个或多个kafka主题的消息的发布者,生产者向kafka经纪人发送数据,每当生产者将消息发布给代理时,代理只需将消息附加到最后一个段文件,实际上该消息将被附加到分区,生产者还可以向他们选择的分区发送消息

    30、kafka的主要特点是什么?

    高吞吐量、低延迟 ; 可扩展性;持久性、可靠性 ;持久化,可靠性;容错性 ; 高并发

    31、什么是kafka?

    Kafka是一个分布式、支持分区的、多副本的、基于Zookeeper协调的分布式系统

    32、大数据处理流程主要包括哪些环节?

    数据采集、数据存储、数据预处理、数据计算、数据统计分析、数据挖掘、数据展示等环节。

    33、用户提交了一个DataX作业,并且配置了50个并发,目的是将一个500张分表的MySQL数据同步到odps里面。DataX的调度决策思路是怎样的?

    500张表即500个Task,根据50个并发,DATAX计算共需要分配50/5=10个TaskGroup, 10个任务组平分500个Task,每一个TaskGroup负责以5个并发运行50个Task

    34、Datax配置文件中,sliceRecordCount参数的意义是什么。对同步的正确率有要求的话,需要配置哪个参数?

    sliceRecordCount参数的意义是发送副本的次数。需要配置errorLimit参数。

    35、简述如何配置Kettle连接MySQL数据库。

    新建转换或作业后,在DB连接部分,双击弹出数据库连接界面。依次设置连接名称、连接类型(选择MYSQL)及数据库主机相关设置(主机名、数据库名、端口号、用户名和密码)。点击测试可以查看连接效果。

    四、编程题

    1、编写JSON文件,实现从指定内容到文件的数据迁移。

    TxtFileReader+TxtFileWriter:

    {
        "setting": {},
        "job": {
            "setting": {
                "speed": {
                    "channel": 2
                }
            },
            "content": [
                {
                    "reader": {
                        "name": "txtfilereader",
                        "parameter": {
                            "path": ["数据完整路径"],
                            "encoding": "UTF-8",
                            "column": [
                                {
                                    "index": 0,
                                    "type": "long"
                                },
                                {
                                    "index": 1,
                                    "type": "boolean"
                                },
                                {
                                    "index": 2,
                                    "type": "double"
                                },
                                {
                                    "index": 3,
                                    "type": "string"
                                },
                                {
                                    "index": 4,
                                    "type": "date",
                                    "format": "yyyy.MM.dd"
                                }
                            ],
                            "fieldDelimiter": ","
                        }
                    },
                    "writer": {
                        "name": "txtfilewriter",
                        "parameter": {
                            "path": "结果完整路径",
                            "fileName": "生成文件名",
                            "writeMode": "truncate",
                            "dateFormat": "yyyy-MM-dd"
                        }
                    }
                }
            ]
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54

    2、假设已经有安装好的logstash、elasticsearch,现在需要将/var/log/boot.log日志写入到elasticsearch中,需要进行哪些配置?

    (1)在logstash安装目录下的config文件夹内,新建配置文件bootlog.conf。内容如下:

    input {
        file {
            path => "/var/log/boot.log"  
            type => "bootlog"  
            start_position => "beginning"  
        }
    }
     
    output {
        if [type] == "bootlog" {  
            elasticsearch {  
                hosts => localhost
                index => "bootlog-%{+YYYY.MM.DD}" 
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    (2)启动elasticsearch。
    (3)在logstash安装目录下执行以下命令:# bin/logstash -f ./config/bootlog.conf

    3、编写json文件,实现将指定数据同步到csv文件中。要求同步的数据包含自己的姓名,学号。数据发送1000份,并发数设置为10,写入到系统test账号的document目录下,文件前缀为"test",其他设置保持默认即可。参考文件如下:

    {
        "setting": {},
        "job": {
            "setting": {
                "speed": {
                    "channel": 5
                }
            },
            "content": [
                {
                    "reader": {
                        "name": "streamreader",
                        "parameter": {
                            "column" : [
                                {
                                    "value": "DataX",
                                    "type": "string"
                                },
                                {
                                    "value": 19890604,
                                    "type": "long"
                                },
                                {
                                    "value": "1989-06-04 00:00:00",
                                    "type": "date"
                                },
                                {
                                    "value": true,
                                    "type": "bool"
                                },
                                {
                                    "value": "test",
                                    "type": "bytes"
                                }
                            ],
                            "sliceRecordCount": 100
                        }
                    },
                    "writer": {
                        "name": "txtfilewriter",
                        "parameter": {
                            "path": "/home/rick/Documents",
                            "fileName": "luohw",
                            "writeMode": "truncate",
                            "dateFormat": "yyyy-MM-dd"
                        }
                    }
                }
            ]
        }
    }
     
     
    {
        "setting": {},
        "job": {
            "setting": {
                "speed": {
                    "channel": 10
                }
            },
            "content": [
                {
                    "reader": {
                        "name": "streamreader",
                        "parameter": {
                            "column" : [
                                {
                                    "value": "yourname",#你的姓名
                                    "type": "string"
                                },
                                {
                                    "value": 00000000, #你的学号
                                    "type": "long"
                                }
                            ],
                            "sliceRecordCount": 1000
                        }
                    },
                    "writer": {
                        "name": "txtfilewriter",
                        "parameter": {
                            "path": "/home/test/documents",
                            "fileName": "test",
                            "writeMode": "truncate",
                            "dateFormat": "yyyy-MM-dd"
                        }
                    }
                }
            ]
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92

    4、在mySQL中新建kettle库,在kettle中建立stu1和stu2两张表。其中,stu1表结构如下:
    字段 类型(字节数)
    id int(10)
    name varchar(20)
    age int(3)
    stu2表结构如下:
    字段 类型(字节数)
    id int(10)
    name varchar(20)
    在两张表中插入一些数据。使用命令完成以上操作。

    mysql>create database kettle;
    mysql>use kettle;
    
    mysql>create table stu1(id int(10), name varchar(20), age int(3));
    mysql>create table stu2(id int(10), name varchar(20));
    
    mysql>insert into stu1 values(1001, ‘zhangsan’, 20), (1002, ‘lisi’, 18), (1003, ‘wangwu’, 23);
    mysql>insert into stu2 values(1001, ‘wukong’);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5、启动zookeeper后创建一个名为my_topic的主题,该主题只有一个分区,只有一个副本。写出相应的过程。

    1、启动zookeeper服务器

    bin/zookeeper-server-start.sh  config/zookeeper.properties
    
    • 1

    2、启动kafka服务

    bin/kafka-server-start.sh config/server.properties
    
    • 1

    3、创建主题

    bin/kafka-topics.sh  --create  --zookeeper  localhost:2181  --topic my_topic  --partitions 1  --replication-factor 1
    
    • 1

    PS:仅供参考,因个人能力有限,如有错误,请不吝赐教~

  • 相关阅读:
    【文件读取/包含】任意文件读取漏洞 afr_1
    自然语言处理状况简介
    【Python】从入门到上头— 多进程与分布式进程(10)
    [深入研究4G/5G/6G专题-48]: 5G Link Adaption链路自适应-4-下行链路自适应DLLA-PDCCH信道
    全球首个完全开源的指令跟随大模型;T5到GPT-4最全盘点
    Win7 IIS7解析漏洞复现
    web前端开发基础---制作表单类页面
    CDGA|工业互联网行业怎么做好数据治理?
    xshell 判断文件超出指定大小则清空文件
    【面试题】JS基础-异步
  • 原文地址:https://blog.csdn.net/weixin_52034760/article/details/125538422