para大数据练习题

2023-12-21 19:51
文章标签 数据 练习题 para

本文主要是介绍para大数据练习题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

hdfs

1. hdfs数据存储架构图(软件画图)

在这里插入图片描述

2. 对hdfs元数据的了解

元数据(Meta Date),关于数据的数据或者叫做用来描述数据的数据或者叫做信息的信息。
元数据可以为数据说明其元素或属性(名称、大小、数据类型、等),或其结构(长度、字段、数据列),或其相关数据(位于何处、如何联系、拥有者)。

3. hdfs shell 基本命令
-ls 功能:显示目录信息
-mkdir:在hdfs上创建目录
-moveFromLocal 从本地剪切粘贴到hdfs
-moveToLocal  从hdfs剪切粘贴到本地
--appendToFile追加一个文件到已经存在的文件末尾
-cat  显示文件内容
-tail 显示一个文件的末尾
-text    以字符形式打印一个文件的内容
-chgrp 
-chmod
-chown
linux文件系统中的用法一样,对文件所属权限
-copyFromLocal
从本地文件系统中拷贝文件到hdfs路径去
-cp   从hdfs的一个路径拷贝hdfs的另一个路径
-mv 在hdfs目录中移动文件
-get  等同于copyToLocal,就是从hdfs下载文件到本地
-getmerge 合并下载多个文件
-setrep  设置hdfs中文件的副本数量
-count   统计一个指定目录下的文件节点数量
-du 统计文件夹的大小信息
-df  统计文件系统的可用空间信息
-rmdir       删除空目录

hbase

1. hbase原理架构图

在这里插入图片描述

2. hbase数据寻址过程

寻找RegionServer
ZooKeeper–> -ROOT-(单Region)–> .META.–> 用户表
-ROOT-表
表包含.META.表所在的region列表,该表只会有一个Region;
Zookeeper中记录了-ROOT-表的location。

.META.表
表包含所有的用户空间region列表,以及RegionServer的服务器地址。

3. hbase基本操作库表命令
  1. 查询数据状态(status)

hbase(main):017:0> status //hbase(main):017:0>是命令行

  1. 查看名字空间以及名字空间下的表(list_namespace 、 list_namespace_tables)

hbase(main):018:0> list_namespace

hbase(main):019:0> list_namespace_tables ‘hbase’ //列出hbase这个名字空间下的表

  1. 创建名字空间和删除名字空间(create_namespace、drop_namespace)

hbase(main):021:0> create_namespace ‘zxz’

hbase(main):022:0> drop_namespace ‘zxz’

  1. 查看表信息(list)

hbase(main):022:0>list

  1. 创建表(create)

hbase(main):022:0>create ‘名字空间名:表名’,‘列族’

  1. 删除表:(drop disable)

hbase(main):023:0>drop ‘名字空间:表名’ //不指定名字空间使用默认空间

执行他会报错说你如果要删除向禁用,以免保持一致性

hbase(main):024:0>disable ‘表名’ //禁用表

  1. 释放表(enable) 只对禁用的表有用

hbase(main):025:0>enable ‘表名’

  1. 删除列族(alter,disable)

hbase(main):026:0>disable ‘表名’

hbase(main):027:0>alter ‘表名’,{NAME=>‘列族名’,METHOD=>‘delete’}

  1. 查询一个表是否存在(exits)

hbase(main):028:0>exits ‘表名’

  1. 判断表的状态(is_enabled)

hbase(main):029:0>is_enabled ‘表名’ //如果是true则是未禁用false是禁用

  1. 插入记录(put)

hbase(main):030:0>put ‘表名’,‘行键’,‘列族:列’,‘值’

  1. 获取一个行键的所有数据(get)

hbase(main):031:0>get ‘表名’,‘行键’

  1. 获取一个行键,一个列族的所有数据(get)

hbase(main):032:0>get ‘表名’,‘行键’,‘列族’

  1. 获取一个列键,一个列族中一个列的所有数据(get)

hbase(main):033:0>get ‘表名’,‘行键’,‘列族:列’

  1. 更新一条记录(put)

hbase(main):034:0>put ‘表名’,‘行键’,‘列族:列’,‘值’ //更新其实和正常添加数据一样只不过表名,行键,列族,列要在表里有不然,和插入数据没有区别了,更新数据后,原来的数据会被覆盖,但可以利用时间戳获取到原来的值

  1. 通过时间戳来获取数据(get)(了解)

hbase(main):035:0>get ‘表名’,‘行键’,(column=>‘列族:列’,‘timestamp’=>时间戳的值) //这个很少用

  1. 全表扫描(scan)

hbase(main):036:0>scan ‘表名’

  1. 删除指定行键的字段(delete)

hbase(main):037:0>delete ‘表名’,‘行键’,‘列族:列’

  1. 删除整行(deleteall)

hbase(main):038:0>deleteall ‘表名’,‘行键’

  1. 查询表中有多少行(count)

hbase(main):039:0>count ‘表名’

  1. 清空表(truncate)

hbase(main):040:0>truncate ‘表名’

  1. 查看表结构(desc)

hbase(main):041:0>desc ‘表名’

zookeeper

1. zookeeper基本介绍。

Zookeeper是Hadoop的一个子项目,它是分布式系统中的协调系统,可提供的服务主要有:配置服务、名字服务、分布式同步、组服务等。它有如下的一些特点:简单Zookeeper的核心是一个精简的文件系统,它支持一些简单的操作和一些抽象操作,例如,排序和通知。丰富 Zookeeper的原语操作是很丰富的,可实现一些协调数据结构和协议。例如,分布式队列、分布式锁和一组同级别节点中的“领导者选举”。高可靠Zookeeper支持集群模式,可以很容易的解决单点故障问题。松耦合交互不同进程间的交互不需要了解彼此,甚至可以不必同时存在,某进程在zookeeper中留下消息后,该进程结束后其它进程还可以读这条消息。资源库Zookeeper实现了一个关于通用协调模式的开源共享存储库,能使开发者免于编写这类通用协议。

yarn

1. yarn的原理架构图

在这里插入图片描述
YARN允许多个应用程序运行在一个集群中,并将资源按需分配给它们,这大大提高了资源利用率,其次,YARN允许各类短作业和长服务混合部署在一个集群中,并提供了容错、资源隔离及负载均衡等方面的支持,这大大简化了作业和服务的部署和管理成本。

2. yarn的shell基本命令

1、初始化一个新的项目
yarn init
2、添加一个依赖包
yarn add [package]
yarn add [package]@[version]
yarn add [package]@[tag]
3、安装所有的依赖包
yarn 或者 yarn install

hive

1.hive原理架构图,并说出理解。

在这里插入图片描述
Jobtracker是hadoop1.x中的组件,它的功能相当于: Resourcemanager+AppMaster

TaskTracker 相当于: Nodemanager + yarnchild

2.hive基本对建库表的操作命令
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path]

spark

1.spark shell命令
--spark启动
localhost$spark-sql --master yarn 启动主节点 yarn模式--查看hdfs文件 hdfs dfs -ls /spark/myDatabase.db 查看我们建的表 其实是是建立在hdfs里面hdfs dfs -du -h /spark/myDatabase.db 查看我们的文件大小 也就是我们的表的大小 要接近最小的block大小 如64M或者128M -h 是以我们合适的单位去展示大小 可以根据目录du下去,知道文件 ,可以查看文件被分开了多少个小文件。--打包
去到源码的class文件的顶级目录bin目录下 
jar cvf test.jat com 
意思是把bin下的com目录下全打包成test.jar包spark-sql   //打开spark-sql窗口,可执行sql语句,例如查看hive数据库、表或执行建库、建表、select等sql操作
spark-shell //打开spark-shell窗口,可执行scala代码片段。以下在spark-sql中执行
1、查看已有的database
show databases;2、创建数据库
create database myDatabase;3、登录数据库myDatabase;
use myDatabase4、查看已有的table
show tables;  #查看所有表
show tables 'KHDX'; #支持模糊查询,表名包含KHDX5、创建表
create table if not exists myDatabase.khdx_hy  
(hydh string,hymc string,jgdh string)
ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'LINES TERMINATED BY '\n'
STORED AS TEXTFILE; #不带分区create table if not exists  myDatabase.nbzz_ckmxz(zhdh string,hydh string,jgdh string,fhdh string, kmh string,bz string,cllbz string,hyye decimal(19,4),hyylj decimal(19,4),hyjlj decimal(19,4),hynlj decimal(19,4))
partitioned by (tjrq string)
row format delimited fields terminated by  '\t'
lines terminated by '\n'
stored as textfile; #带分区,分区字段tjrqcreate table if not exists myDatabase.tmp_nbzz_ckmxz like myDatabase.nbzz_ckmxz; #快速建表,不带数据
create table if not exists myDatabase.tmp_nbzz_ckmxz select * from  myDatabase.nbzz_ckmxz; #快速建表,同时复制数据create EXTERNAL table IF NOT EXISTS test (userid string,ptDate string) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
location '/tmp/outer_table/20121214';   #创建外部表test,并指向外部文件位置create EXTERNAL table IF NOT EXISTS test (userid string) 
partitioned by (ptDate string) 
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';  #创建外部表test,按字段ptDate分区,未指向外部文件位置alter table test add partition (ptDate='20121214') location '/tmp/outer_table/20121214';  #指定外部表的外部文件位置,可用于接口文件加载。6、显示表结构
desc khdx_hy;   #显示表khdx_hy的表结构
desc formatted khdx_hy; #格式化表khdx_hy的表结构信息,信息更详细,包括在hdfs的存储位置
show partitions khdx_hy; #显示表khdx_hy的分区信息
show create table khdx_hy; #查看建表语句7、修改表结构
alter table myDatabase.nbzz_ckmxz add partition(tjrq='20171231')add partition(tjrq='20180101') #手动给分区表增加2个分区
alter table myDatabase.nbzz_ckmxz drop if exists partition (tjrq='20171231');  #手动删除分区表某个分区
alter table myDatabase.nbzz_ckmxz add columns (fh string);    #追加字段
alter table myDatabase.nbzz_ckmxz change hydh hydh1 string;         #修改字段hydh名称为hydh1,类型为stringdrop table myDatabase.nbzz_ckmxz; #删除表
alter table myDatabase.tmp_nbzz_ckmxz rename to myDatabase.nbzz_ckmxz; #重命名表8、操作表
select * from myDatabase.khdx_hy order by hydh limit 10;    #查询表,显示前10条记录。
truncate table khdx_hy;     #清空表数据
insert overwrite table myDatabase.tmp_khdx_hy select * from myDatabase.khdx_hy; #用khdx_hy的数据覆盖tmp_khdx_hy数据;
insert into myDatabase.tmp_khdx_hy select * from myDatabase.khdx_hy;  #用khdx_hy的数据追加tmp_khdx_hy数据中,不覆盖原来数据。
load data local inpath '/home/myDatabase/data/org_info.txt' overwrite into table myDatabase.org_info ; #从文件中导入数据到表中
load data local inpath '/home/myDatabase/data/t_ma_fct_etl_acct_liyang_20171231.dat' overwrite into table myDatabase.T_MA_FCT_ETL_ACCT partition(tjrq="20171231");
#从文件导入数据至表的某个分区。
insert overwrite local directory '/home/myDatabase/data/khdx_hy.txt'  row format delimited  fields terminated by '\t' select * FROM myDatabase.KHDX_HY;
#从表khdx_hy导出数据至本地文件khdx_hy.txt
2. spark 提交job的 基本执行原理

创建 Task:当调度阶段运行后,在 DAGScheduler 的 submitMissingTasks 方法中会根据调度阶段 Partition 数量拆分对应个数任务。对于 ResultStage,生成 ResultTask,对于 ShuffleMapStage 生成 ShuffleMapTask。这些和分区个数一样多的任务组成一个 TaskSet 提交给 TaskScheduler 进行处理。每一个 TaskSet 都包含了对应调度阶段的所有任务,这些任务处理逻辑完全一样,只是处理的数据不同,这些数据是对应的数据分片。
创建 TaskSetManager 并 向 DriverEndpoint 发送消息:将 TaskSet 提交到 TaskSchedulerImpl 的 submitTasks 时,会创建 TaskSetManager,用于管理这个 TaskSet 的生命周期,并且该 TaskSetManager 会放入系统的调度池中,根据系统设置的调度算法进行调度,支持 FIFO 和 FAIR(公平调度)两种。
分配资源:DriverEndpoint 接收消息后调用 makeOffers 方法,在 TaskSchedulerImpl 的 resourceOffers 方法中要进行重要的步骤–资源分配,在分配的过程中会根据调度策略对 TaskSetManager 排序,然后依次对这些 TaskSetManager 按照就近原则分配资源,具体顺序为 PROCESS_LOCAL、NODE_LOCAL、NO_PREF、PACK_LOCAL、ANY。
发送消息告诉 Executor 去执行 Task:分配好资源的任务提交到 CoarseGrainedSchedulerBackend 的 launchTasks 方法中,在该方法中,把任务一个个发送到 Worker 节点上的 CoarseGrainedExecutorBackend,然后通过其内部的 Executor 执行任务。

sqoop

1. sqoop原理机制图。

在这里插入图片描述

2. sqoop数据处理命令

Sqoop将数据导入HDFS

$ sqoop import (generic-args) (import-args) 

下面的命令用于从MySQL数据库服务器中的emp表导入HDFS。

$bin/sqoop import \
--connect jdbc:mysql://hdp-node-01:3306/test \
--username root \
--password root \
--table emp --m 1

导入关系表到HIVE

bin/sqoop import --connect jdbc:mysql://hdp-node-01:3306/test --username root --password root --table emp --hive-import --m 1

导入到HDFS指定目录

--target-dir <new or exist directory in HDFS>

导入emp_add表数据到’/queryresult’目录

bin/sqoop import \
--connect jdbc:mysql://hadoop-mini11:3306/hbtu \
--username root \
--password root \
--target-dir /queryresult \
--table stu--m 1

导入表数据子集

--where <condition>

导入emp_add表数据的子集

bin/sqoop import \
--connect jdbc:mysql://hadoop-mini11:3306/hbtu \
--username root \
--password root \
--where "id='rjgc'" \
--target-dir /wherequery \
--table stu_adrs --m 1

增量导入

--incremental <mode>
--check-column <column name>
--last value <last check column value>

增量增加至hdfs

bin/sqoop import \
--connect jdbc:mysql://hdp-node-01:3306/test \
--username root \
--password root \
--table emp --m 1 \
--incremental append \
--check-column id \
--last-value 1205

增量增加到hive

bin/sqoop import \
--connect jdbc:mysql://hadoop-mini11:3306/hbtu \
--username root \
--password root \
--table stu_adrs --hive-import --m 1 \
--incremental lastmodified \
--check-column join_date \
--last-value '2019-07-01' 

Sqoop的数据导出

$ sqoop export (generic-args) (export-args) 
bin/sqoop export \
--connect jdbc:mysql://hdp-node-01:3306/test?characterEncoding=utf-8 \
--username root \
--password root \
--table emp2 \
--export-dir /user/hadoop/emp/
--input-fields-terminated-by '\001'            hive数据库 

Sqoop作业
以下是创建Sqoop作业的语法

$ sqoop job (generic-args) (job-args)[-- [subtool-name] (subtool-args)]$ sqoop-job (generic-args) (job-args)[-- [subtool-name] (subtool-args)]

创建作业
创建一个名为myjob

bin/sqoop job --create myimportjob -- import --connect jdbc:mysql://hdp-node-01:3306/test --username root --password root --table emp --m 1

验证作业

$ sqoop job --show myjob

执行作业

$ sqoop job --exec myjob

这篇关于para大数据练习题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/521282

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

烟火目标检测数据集 7800张 烟火检测 带标注 voc yolo

一个包含7800张带标注图像的数据集,专门用于烟火目标检测,是一个非常有价值的资源,尤其对于那些致力于公共安全、事件管理和烟花表演监控等领域的人士而言。下面是对此数据集的一个详细介绍: 数据集名称:烟火目标检测数据集 数据集规模: 图片数量:7800张类别:主要包含烟火类目标,可能还包括其他相关类别,如烟火发射装置、背景等。格式:图像文件通常为JPEG或PNG格式;标注文件可能为X

pandas数据过滤

Pandas 数据过滤方法 Pandas 提供了多种方法来过滤数据,可以根据不同的条件进行筛选。以下是一些常见的 Pandas 数据过滤方法,结合实例进行讲解,希望能帮你快速理解。 1. 基于条件筛选行 可以使用布尔索引来根据条件过滤行。 import pandas as pd# 创建示例数据data = {'Name': ['Alice', 'Bob', 'Charlie', 'Dav

dp算法练习题【8】

不同二叉搜索树 96. 不同的二叉搜索树 给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。 示例 1: 输入:n = 3输出:5 示例 2: 输入:n = 1输出:1 class Solution {public int numTrees(int n) {int[] dp = new int