当前位置:文档之家› 尚硅谷入学测试套题A卷

尚硅谷入学测试套题A卷

尚硅谷入学测试套题A卷
尚硅谷入学测试套题A卷

尚硅谷入学测试题(A卷)

本试题满分为100分,其中第一部分60分,第二部分20分,第三部分10分,第四部分10分,题目涉及的选择题,全部为单选。

答案填写在测试题答题纸上,并将答案发给咨询老师

第一部分:思维认知能力测试(共计15题,每题4分)

【1】

将一批工业最新动态信息输入管理储存网络,甲独做需6小时,乙独做需4小时,甲先做30分钟,然后甲、乙一起做,则甲、乙一起做还需多少分钟才能完成工作?

A.132 分钟 B. 100 分钟 C. 90 分钟 D. 142 分钟

【2】

兄弟二人今年分别为15岁和9岁,多少年后兄的年龄是弟的年龄的2倍?A.6 B.-5 C.4 D.-3

【3】

有一火车以每分钟600米的速度要过完第一、第二两座铁桥,过第二铁桥比过第一铁桥需多5秒,又知第二铁桥的长度比第一铁桥长度的2倍短50米,则第一座铁桥的长度为:

A.90 B.100C.150 D.160

【4】

从甲地到乙地,公共汽车原需行驶7小时,开通高速公路后,车速平均每小时增加了20千米,只需5时即可到达.则甲、乙两地的路程为多少千米A.200 B.250 C.300 D.350

【5】

一个人花8块钱买了一只鸡,9块钱卖掉了,然后他觉得不划算,花10块钱又买回来了,11块卖给另外一个人。问他赚了多少?

A.0 B.1 C.2 D.3

【6】

一条船顺水行驶36千米和逆水行驶24千米的时间都是3小时,则水流的速度为:

A.2

B.4

C.6

D. 8

设船在静水中的速度为a,水流速度为b

(a+b)*3=36

(a-b)*3=24

a=10 b=2

船在静水中的速度为10千米/小时,水流速度为2千米/小时

【7】

从所给四个选项中,选择最合适的一个填入问号处,使之呈现一定的规律性()

【8】

3/15,1/3,3/7,1/2,()

A.5/8 B. 4/9 C.15/27 D.-3

【9】

如果张未在2000年后从大学毕业,他就必须修过世界历史导论。则这一论点是从下列哪句话中推出?

A. 在2000年前,大学学习中,世界历史导论不是必修课

B. 每一个选修世界历史导论的学生都是2000年以后大学毕业的

C. 没有一个2000年前毕业的大学生修过世界历史导论

D. 所有2000年后毕业的大学生都必须修世界历史导论

【10】

甲、乙两人进行百米赛跑,且在比赛中两人的速度都不会发生改变,当甲跑完68

米时,乙离终点还有15米,当乙到达终点时,甲离终点的距离是()米

A.5

B.10

C.15

D. 20

V甲:V乙=68:(100-15)=4:5,

乙跑到终点时,甲跑:

100×54=80(米),

甲离终点:

100-80=20(米)

【11】

某班有60名学生,在第一次测验中有32人得满分,在第二次测验中有27人得满分。如果两次测验中都没有得满分的学生有17 人,那么两次测验中都获得满分的人数是多少?

A.13 人

B.14 人

C.15 人

D.16 人

【12】

把一根钢管锯成 5 段需要8 分钟,如果把同样的钢管锯成20 段需要多少分钟?

A.32分钟

B.38 分钟

C.40分钟

D.152分钟

【13】

用2,3,4,5,6,7六个数字组成两个三位数,每个数字只用一次,这两个三位数的差最小是:

A.47

B.49

C.69

D.111

【14】

刘女士今年48岁,她说:“我有两个女儿,当妹妹长到姐姐现在的年龄时,姐妹俩的年龄之和比我到那时的年龄还大2岁。”问姐姐今年多少岁()A.24 B.23 C.25 D.不确定

【15】

一个正方形队列,如减少一行和一列会减少19人,原队列有几个人?A.81 B.100 C.121 D.144

第二部分:Java基础知识测试(共计10题,每题2分)

【1】

Java 中main() 函数的返回值类型是什么?

A 、String

B 、int

C 、char

D 、void

【2】

如下哪个字串在Java 中可作为自定义标识符?

A 、$number

B 、super

C 、3number

D 、#number

【3】

下面哪个赋值语句不是合法的?

A 、float a = 2.0

B 、double b = 2.0

C 、int c = 2

D 、long d = 2

最大下标数相等?

A 、m.length()

B 、m.length-1

C 、m.length()+1

D 、m.length+1

解析:该题考查的是数组长度的问题。由于Java中的数组是Array类的实例,所以用户可通过Array类的length成员变量获取数组的长度。本题中应该是m,length,而选项A中的是获取字符串时所用的格式。它们两个是有区别的,例如: String s="abodefg";

int a[]={1,2,3,4};

System.out.println(s.length()+","+a.length);而选项C和选项D是不对的。

【5】

在异常处理中,如释放资源、关闭文件、关闭数据库等由( )来完成。

A.try子句

B.catch子句

C.finally子句

D.throw子句

【6】

给出如下代码:

class Test{

private int m;

public static void fun() {

// some code...

}

}

下面哪项操作能使成员变量m 被函数fun() 直接访问?

A 、将private int m 改为protected int m

B 、将private int m 改为public int m

C 、将private int m 改为static int m

D 、将private int m 改为int m

【7】

已知如下定义:String s = "story"; 下面哪个表达式是合法的?

A 、s += "books";

B 、char c = s[1];

C 、int len = s.length;

D 、String t = 100;

【8】

如果类中的成员变量可以被同一包访问,则使用如下哪个约束符?

A 、private

B 、public

C 、缺省

D 、final

【9】

以下声明合法的是()

A、default String s;

B、public static int w( );

C、abstract double d;

D、abstract double hyperbolicCosine( );

【10】

System类在哪个包中?

A、java.util

B、java.io

C、java.awt

D、https://www.doczj.com/doc/6d15254196.html,ng

第三部分:简答题(共计2题,每题5分)

(每题写明答案及必要的答题过程,文字说明、代码实现均可)

【1】

张王李三家各有三个小孩。一天,三家的九个孩子在一起比赛短跑,规定不分年龄大小,跑第一得9分,跑第2得8分,依此类推。比赛结果各家的总分相同,且这些孩子没有同时到达终点的,也没有一家的两个或三个孩子获得相连的名次。已知获第一名的是李家的孩子,获得第二的是王家的孩子。请你给出一种各家孩子名次排序的方式,并相应给出推理过程

姓氏名次

李家__1__,____,____

王家__2__,____,____

张家____,____,____

【2】

题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第5次落地时,共经过多少米?第5次反弹多高?

第四部分:数独测试(共计1题,每题10分)

数独(Sudoku):需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复。

尚硅谷大数据技术之ELK

第1章 Elasticsearch 概述 1.1 什么是搜索? 百度:我们比如说想找寻任何的信息的时候,就会上百度去搜索一下,比如说找一部自己喜欢的电影,或者说找一本喜欢的书,或者找一条感兴趣的新闻(提到搜索的第一印象)。百度 != 搜索 1)互联网的搜索:电商网站,招聘网站,新闻网站,各种app 2)IT 系统的搜索:OA 软件,办公自动化软件,会议管理,日程管理,项目管理。 搜索,就是在任何场景下,找寻你想要的信息,这个时候,会输入一段你要搜索的关键字,然后就期望找到这个关键字相关的有些信息 1.2 如果用数据库做搜索会怎么样? 如果用数据库做搜索会怎么样? select * from products where product_name list “%牙膏%”商品id 商品名称商品描述 1高露洁牙膏2中华牙膏3 佳洁士牙膏4其他牙膏京东商城搜索框 5 …… 1万条 京东商城后台商品表逐条遍历 1)比如说“商品描述”字段的长度,有长达数千个,甚至数万个字符, 这个时候,每次都要对每条记录的所有文本进行扫描,判断包不包含我指定的这个关键词(比如说“牙膏”),效率非常低。 select * from products where product_name list “%生化机%” 2)还不能将搜索词拆分开来,尽可能去搜索更多的符合你的期望的结果, 比如输入“生化机”,就搜索不出来“生化危机”。 用数据库来实现搜索,是不太靠 谱的。通常来说,性能会很差的。 1千字的商品描述 1千字的商品描述 用数据库来实现搜索,是不太靠谱的。通常来说,性能会很差的。 1.3 什么是全文检索和Lucene ? 1)全文检索,倒排索引 全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。全文搜索搜索引擎数据库中的数据。

01_尚硅谷大数据之HBase简介

第1章HBase简介 1.1 什么是HBase HBASE是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBASE 技术可在廉价PC Server上搭建起大规模结构化存储集群。 HBASE的目标是存储并处理大型的数据,更具体来说是仅需使用普通的硬件配置,就能够处理由成千上万的行和列所组成的大型数据。 HBASE是Google Bigtable的开源实现,但是也有很多不同之处。比如:Google Bigtable 利用GFS作为其文件存储系统,HBASE利用Hadoop HDFS作为其文件存储系统;Google 运行MAPREDUCE来处理Bigtable中的海量数据,HBASE同样利用Hadoop MapReduce来处理HBASE中的海量数据;Google Bigtable利用Chubby作为协同服务,HBASE利用Zookeeper作为对应。 1.2 HBase中的角色 1.2.1 HMaster 功能: 1) 监控RegionServer 2) 处理RegionServer故障转移 3) 处理元数据的变更 4) 处理region的分配或移除 5) 在空闲时间进行数据的负载均衡 6) 通过Zookeeper发布自己的位置给客户端 1.2.2 RegionServer 功能: 1) 负责存储HBase的实际数据 2) 处理分配给它的Region 3) 刷新缓存到HDFS 4) 维护HLog 5) 执行压缩

6) 负责处理Region分片 1.2.3 其他组件: 1) Write-Ahead logs HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。 2) HFile 这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。 3) Store HFile存储在Store中,一个Store对应HBase表中的一个列族。 4) MemStore 顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL 中之后,RegsionServer会在内存中存储键值对。 5) Region Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。 1.3 HBase架构

01_尚硅谷大数据之Hive基本概念

第1章Hive基本概念 1.1 什么是Hive Hive:由Facebook开源用于解决海量结构化日志的数据统计。 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 本质是:将HQL转化成MapReduce程序 1)Hive处理的数据存储在HDFS 2)Hive分析数据底层的实现是MapReduce 3)执行程序运行在Yarn上 1.2 Hive的优缺点 1.2.1 优点 1)操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手) 2)避免了去写MapReduce,减少开发人员的学习成本。 3)Hive的执行延迟比较高,因此Hive常用于数据分析,对实时性要求不高的场合; 4)Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。5)Hive支持用户自定义函数,用户可以根据自己的需求来实现自己的函数。 1.2.2 缺点 1)Hive的HQL表达能力有限 (1)迭代式算法无法表达 (2)数据挖掘方面不擅长 2)Hive的效率比较低 (1)Hive自动生成的MapReduce作业,通常情况下不够智能化 (2)Hive调优比较困难,粒度较粗

1.3 Hive架构原理 HDFS MapReduce Meta store SQL Parser 解析器 Physical Plan 编译器Execution 执行器 Query Optimizer 优化器 Driver CLI JDBC Client Hive 架构 如图中所示,Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。 1)用户接口:Client CLI(hive shell)、JDBC/ODBC(java访问hive)、WEBUI(浏览器访问hive) 2)元数据:Metastore 元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等; 默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore 3)Hadoop 使用HDFS进行存储,使用MapReduce进行计算。 4)驱动器:Driver (1)解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。 (2)编译器(Physical Plan):将AST编译生成逻辑执行计划。

尚硅谷大数据技术之数仓开发规范

1.背景 为了避免底层业务变动对上层需求影响过大,屏蔽底层复杂的业务逻辑,尽可能简单、完整的在接口层呈现业务数据,建设高内聚松耦合的数据组织,使数据从业务角度可分割,显得尤为重要。从整个集团业务条线出发,形成数据仓库总体概念框架,并对整个系统所需要的功能模块进行划分,明确各模块技术细节,建设一套完整的开发规范。 2.分层规范 ODS(原始数据层):ODS层是数据仓库准备区,为DWD层提供基础原始数据。 DWD(明细数据层):和ODS粒度一致的明细数据,对数据进行去重,脏数据过滤,空处理,保证数据质量。 DWS(服务数据层):轻度汇总数据及建宽表(按主题)存放数据。 ADS(应用数据层):存放应用类表数据。 3.表规范 3.1 命名 维表命名形式:dim_描述 事实表命名形式:fact_描述_[AB] 临时表命名形式:tmp_ 正式表名_ [C自定义序号] 宽表命名形式:dws_主题_描述_[AB] 备份表命名形式:正式表名_bak_yyyymmdd 表命名解释: 1)表名使用英文小写字母,单词之间用下划线分开,长度不超过40个字符,命名一般控制在小于等于6级。 2)其中ABC第一位"A"时间粒度:使用"c"代表当前数据,"h"代表小时数据,"d"代表天

数据,"w"代表周数据,"m"代表月数据,"q"代表季度数据, "y"代表年数据。 3)其中ABC的第二位"B"表示对象属性,用"t"表示表,用"v"表示视图。 4)其中ABC的第三位"C"自定义序号用于标识多个临时表的跑数顺序。 3.2 注释 注释要结合表的英文名,要求注释简洁明了,体现出表的业务出处、主题和用途。3.3 存储格式 所谓的存储格式就是在Hive建表的时候指定的将表中的数据按照什么样子的存储方式,如果指定了方式,那么在向表中插入数据的时候,将会使用该方式向HDFS中添加相应的数据类型。在数仓中建表默认用的都是PARQUET存储格式,相关语句如下所示:STORED AS INPUTFORMAT ‘org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat’ OUTPUTFORMAT ‘org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat’ 3.5 字符集 Hadoop和hive 都是用utf-8编码的,在建表时可能涉及到中文乱码问题,所以导入的文件的字符编码统一为utf-8格式。 3.6 约定 理论上在数仓落地的表不应该出现null未知类型,对于可能出现null的字段,如果为字符型统一为空字符串,如果是数值则给0。 4.字段规范 4.1 命名

尚硅谷大数据项目之实时项目2(日活需求)

第1章实时处理模块 1.1 模块搭建 添加scala框架 1.2 代码思路 1)消费kafka中的数据; 2)利用redis过滤当日已经计入的日活设备; 3)把每批次新增的当日日活信息保存到HBASE或ES中;

4)从ES中查询出数据,发布成数据接口,通可视化化工程调用。 1.3 代码开发1 ---消费Kafka 1.3.1 配置 1)config.properties # Kafka配置 kafka.broker.list=hadoop102:9092,hadoop103:9092,hadoop104:9092 # Redis配置 redis.host=hadoop102 rdis.port=6379 2)pom.xml com.atguigu.gmall2019.dw dw-common 1.0-SNAPSHOT org.apache.spark spark-core_2.11 org.apache.spark spark-streaming_2.11 org.apache.kafka kafka-clients 0.11.0.2 org.apache.spark spark-streaming-kafka-0-8_2.11 redis.clients jedis 2.9.0 io.searchbox

大数据技术之MySQL高级

尚硅谷大数据技术之MySQL高级 版本V3.0 第1章MySQL简介 1.1 什么是MySQL (1)MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle 公司。 (2)Mysql是开源的,可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。 (3)MySQL使用标准的SQL数据语言形式。 (4)MySQL可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。 (5)MySQL支持大型数据库,支持5000万条记录的数据仓库,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。 1.2 在Linux上安装MySQL 1.2.1 检查当前系统是否安装过MySQL CentOS 6命令:rpm -qa|grep mysql 默认Linux在安装的时候,自带了mysql相关的组件。 先卸载系统自带的mysql,执行卸载命令rpm -e --nodeps mysql-libs 1

CentOS 7命令:rpm -qa|grep mariadb 不检查依赖卸载 检查/tmp目录的权限是否是满的 1.2.2 Mysql的安装 安装的版本是mysql 5.7,官网下载地址:https://www.doczj.com/doc/6d15254196.html,/downloads/mysql/ 1)通过Xft5文件传输工具将rpm安装包传输到opt目录下 2)执行rpm安装,必须按照下面的顺序安装 1)rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm 2)rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm 3)rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm 4)rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm 2

07_尚硅谷大数据之HBase优化

第7章HBase优化 7.1 高可用 在HBase中Hmaster负责监控RegionServer的生命周期,均衡RegionServer的负载,如果Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久。所以HBase支持对Hmaster的高可用配置。 1)关闭HBase集群(如果没有开启则跳过此步) [atguigu@hadoop102 hbase]$ bin/stop-hbase.sh 2)在conf目录下创建backup-masters文件 [atguigu@hadoop102 hbase]$ touch conf/backup-masters 3)在backup-masters文件中配置高可用HMaster节点 [atguigu@hadoop102 hbase]$ echo hadoop103 > conf/backup-masters 4)将整个conf目录scp到其他节点 [atguigu@hadoop102 hbase]$ scp -r conf/ hadoop103:/opt/modules/cdh/hbase-0.98.6-cdh5.3.6/ [atguigu@hadoop102 hbase]$ scp -r conf/ hadoop104:/opt/modules/cdh/hbase-0.98.6-cdh5.3.6/ 5)打开页面测试查看 0.98版本之前:http://hadooo102:60010 0.98版本及之后:http://hadooo102:16010 7.2 预分区 每一个region维护着startRow与endRowKey,如果加入的数据符合某个region维护的rowKey 范围,则该数据交给这个region维护。那么依照这个原则,我们可以将数据索要投放的分区提前大致的规划好,以提高HBase性能。 1)手动设定预分区 hbase> create 'staff','info','partition1',SPLITS => ['1000','2000','3000','4000'] 2)生成16进制序列预分区 create 'staff2','info','partition2',{NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'} 3)按照文件中设置的规则预分区 创建splits.txt文件内容如下: create 'staff3','partition3',SPLITS_FILE => 'splits.txt' 4)使用JavaAPI创建预分区

02_尚硅谷大数据之Hive安装

第2章Hive安装 2.1 Hive安装地址 1)Hive官网地址: https://www.doczj.com/doc/6d15254196.html,/ 2)文档查看地址: https://https://www.doczj.com/doc/6d15254196.html,/confluence/display/Hive/GettingStarted 3)下载地址: https://www.doczj.com/doc/6d15254196.html,/dist/hive/ 4)github地址: https://https://www.doczj.com/doc/6d15254196.html,/apache/hive 2.2 Hive安装部署 1)Hive安装及配置 (1)把apache-hive-1.2.1-bin.tar.gz上传到linux的/opt/software目录下 (2)解压apache-hive-1.2.1-bin.tar.gz到/opt/module/目录下面 [atguigu@hadoop102 software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/ (3)修改apache-hive-1.2.1-bin.tar.gz的名称为hive [atguigu@hadoop102 module]$ mv apache-hive-1.2.1-bin/ hive (4)修改/opt/module/hive/conf目录下的hive-env.sh.template名称为hive-env.sh [atguigu@hadoop102 conf]$ mv hive-env.sh.template hive-env.sh (5)配置hive-env.sh文件 (a)配置HADOOP_HOME路径 export HADOOP_HOME=/opt/module/hadoop-2.7.2 (b)配置HIVE_CONF_DIR路径 export HIVE_CONF_DIR=/opt/module/hive/conf 2)Hadoop集群配置 (1)必须启动hdfs和yarn [atguigu@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh [atguigu@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh

13_尚硅谷大数据之常见错误及解决方案

第13章常见错误及解决方案 1)SecureCRT 7.3出现乱码或者删除不掉数据,免安装版的SecureCRT 卸载或者用虚拟机直接操作或者换安装版的SecureCRT 2)连接不上mysql数据库 (1)导错驱动包,应该把mysql-connector-java-5.1.27-bin.jar导入/opt/module/hive/lib的不是这个包。错把mysql-connector-java-5.1.27.tar.gz导入hive/lib包下。 (2)修改user表中的主机名称没有都修改为%,而是修改为localhost 3)hive默认的输入格式处理是CombineHiveInputFormat,会对小文件进行合并。 hive (default)> set hive.input.format; hive.input.format=https://www.doczj.com/doc/6d15254196.html,bineHiveInputFormat 可以采用HiveInputFormat就会根据分区数输出相应的文件。 hive (default)> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat; 4)不能执行mapreduce程序 可能是hadoop的yarn没开启。 5)启动mysql服务时,报MySQL server PID file could not be found! 异常。 在/var/lock/subsys/mysql路径下创建hadoop102.pid,并在文件中添加内容:4396 6)报service mysql status MySQL is not running, but lock file (/var/lock/subsys/mysql[失败])异常。 解决方案:在/var/lib/mysql 目录下创建:-rw-rw----. 1 mysql mysql 5 12月22 16:41 hadoop102.pid 文件,并修改权限为777。 附录:Sqoop常用命令及参数手册 这里给大家列出来了一部分Sqoop操作时的常用参数,以供参考,需要深入学习的可以参看对应类的源代码。

7_尚硅谷大数据之HDFS概述

一HDFS概述 1.1 HDFS产生背景 随着数据量越来越大,在一个操作系统管辖的范围内存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS只是分布式文件管理系统中的一种。 1.2 HDFS概念 HDFS,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。 HDFS的设计适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。 1.3 HDFS优缺点 1.3.1 优点 1)高容错性 (1)数据自动保存多个副本。它通过增加副本的形式,提高容错性; (2)某一个副本丢失以后,它可以自动恢复。 2)适合大数据处理 (1)数据规模:能够处理数据规模达到GB、TB、甚至PB级别的数据; (2)文件规模:能够处理百万规模以上的文件数量,数量相当之大。 3)流式数据访问,它能保证数据的一致性。 4)可构建在廉价机器上,通过多副本机制,提高可靠性。 1.3.2 缺点 1)不适合低延时数据访问,比如毫秒级的存储数据,是做不到的。 2)无法高效的对大量小文件进行存储。 (1)存储大量小文件的话,它会占用NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的; (2)小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。 3)并发写入、文件随机修改。

(1)一个文件只能有一个写,不允许多个线程同时写; (2)仅支持数据append(追加),不支持文件的随机修改。 1.4 HDFS组成架构 HDFS的架构图 这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。下面我们分别介绍这四个组成部分。 1)Client:就是客户端。 (1)文件切分。文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后进行存储; (2)与NameNode交互,获取文件的位置信息; (3)与DataNode交互,读取或者写入数据; (4)Client提供一些命令来管理HDFS,比如启动或者关闭HDFS; (5)Client可以通过一些命令来访问HDFS; 2)NameNode:就是Master,它是一个主管、管理者。 (1)管理HDFS的名称空间; (2)管理数据块(Block)映射信息; (3)配置副本策略; (4)处理客户端读写请求。 3) DataNode:就是Slave。NameNode下达命令,DataNode执行实际的操作。 (1)存储实际的数据块;

05_尚硅谷大数据之Kafka producer拦截器(interceptor)

第5章Kafka producer拦截器(interceptor) 5.1 拦截器原理 Producer拦截器(interceptor)是在Kafka 0.10版本被引入的,主要用于实现clients端的定制化控制逻辑。 对于producer而言,interceptor使得用户在消息发送前以及producer回调逻辑前有机会对消息做一些定制化需求,比如修改消息等。同时,producer允许用户指定多个interceptor 按序作用于同一条消息从而形成一个拦截链(interceptor chain)。Intercetpor的实现接口是org.apache.kafka.clients.producer.ProducerInterceptor,其定义的方法包括: (1)configure(configs) 获取配置信息和初始化数据时调用。 (2)onSend(ProducerRecord): 该方法封装进KafkaProducer.send方法中,即它运行在用户主线程中。Producer确保在消息被序列化以及计算分区前调用该方法。用户可以在该方法中对消息做任何操作,但最好保证不要修改消息所属的topic和分区,否则会影响目标分区的计算 (3)onAcknowledgement(RecordMetadata, Exception): 该方法会在消息被应答或消息发送失败时调用,并且通常都是在producer回调逻辑触发之前。onAcknowledgement运行在producer的IO线程中,因此不要在该方法中放入很重的逻辑,否则会拖慢producer的消息发送效率 (4)close: 关闭interceptor,主要用于执行一些资源清理工作 如前所述,interceptor可能被运行在多个线程中,因此在具体实现时用户需要自行确保线程安全。另外倘若指定了多个interceptor,则producer将按照指定顺序调用它们,并仅仅是捕获每个interceptor可能抛出的异常记录到错误日志中而非在向上传递。这在使用过程中要特别留意。 5.2 拦截器案例 1)需求: 实现一个简单的双interceptor组成的拦截链。第一个interceptor会在消息发送前将时间戳信息加到消息value的最前部;第二个interceptor会在消息发送后更新成功发送消息数或

尚硅谷大数据技术之Phoenix

第1章Phoenix简介 1.1Phoenix定义 Phoenix是HBase的开源SQL皮肤。可以使用标准JDBC API代替HBase客户端API来创建表,插入数据和查询HBase数据。 1.2 Phoenix特点 1) 容易集成:如Spark,Hive,Pig,Flume和Map Reduce。 2) 操作简单:DML命令以及通过DDL命令创建和操作表和版本化增量更改。 3) 完美支持Hbase二级索引创建。 1.3 Phoenix架构 Phoenix架构

1.4 Phoenix的作用 第2章Phoenix快速入门 2.1 Phoenix安装部署 2.1.1 官方网址: 2.1.2 上传jar包到/opt/software/ 2.1.3 复制server和client这俩个包拷贝到各个节点的hbase/lib 在phoenix目录下 向每个节点发送server jar

向每个节点发送client jar 2.1.4 在root权限下给/etc/profile 下添加如下内容 2.1.5 启动Zookeeper,Hadoop,Hbase 2.1.6 启动Phoenix 2.2 phoenix表操作 2.2.1 显示所有表

2.2.2 创建表 如下显示: 在phoenix中,默认情况下,表名等会自动转换为大写,若要小写,使用双引号,如"us_population"。 2.2.3 插入记录 2.2.4 查询记录 2.2.5 删除记录 2.2.6 删除表 2.2.7 退出命令行 2.3 phoenix表映射 2.3.1 Phoenix和Hbase表的关系 默认情况下,直接在hbase中创建的表,通过phoenix是查看不到的。如图1和图2,US_POPULATION是在phoenix中直接创建的,而kylin相关表是在hbase中直接创建的,在phoenix中是查看不到kylin等表的。

大数据技术之Atlas(5元数据管理)

尚硅谷大数据技术之Atlas(元数据管理) 第1章Atlas入门 1.1 Atlas概述 Apache Atlas为组织提供开放式元数据管理和治理功能,用以构建其数据资产目录,对这些资产进行分类和管理,并为数据分析师和数据治理团队,提供围绕这些数据资产的协作功能。 1)表与表之间的血缘依赖 2)字段与字段之间的血缘依赖 1

2 1.2 Atlas 架构原理 Atlas 架构原理 类型系统(Type System): 用户为他们想要管理的元数据对象定义模型。Type System 称为“实体”的“类型”实例,表示受管理的实际元数据对象。 图形引擎(Graph Engine): Atlas 在内部使用Graph 模型持久保存它管理的元数据对象。 采集/导出(Ingest/Export):采集组件允许将元数据添加到Atlas 。同样,“导出”组件将Atlas 检测到的元数据导出。API: Atlas 的所有功能都通过REST API 向最终用户暴露,该API 允许创建,更新和删除类型和实体。它也是查询和发现Atlas 管理的类型和实体的主要机制。 Messaging: 除了API 之外,用户还可以选择使用基于Kafka 的消息传递接口与Atlas 集成。 Metadata Sources :目前,Atlas 支持从以下来源提取和管理元数据:HBase 、Hive 、Sqoop 、Storm 、Kafka Admin UI: 该组件是一个基于Web 的应用程序,允许数据管理员和科学家发现和注释元数据。这里最重要的是搜索界面和类似SQL 的查询语言,可用于查询Atlas 管理的元数据类型和对象。 Ranger Tag Based Policies :权限管理模块Business Taxonomy :业务分类 Metadata Store:采用HBase 来存储元数据Index Store:采用Solr 来建索引 第2章 Atlas 安装及使用 1) Atlas 官网地址:s:https://www.doczj.com/doc/6d15254196.html,/ 2)文档查看地址:s:https://www.doczj.com/doc/6d15254196.html,/0.8.4/index.html 3)下载地址:s:https://www.doczj.com/doc/6d15254196.html,/dyn/closer.cgi/atlas/0.8.4/apache-atlas-0.8.4-sources.tar.gz

尚硅谷大数据项目之实时项目5(灵活分析需求)

1.1 灵活查询的场景 数仓中存储了大量的明细数据,但是hadoop存储的数仓计算必须经过mr ,所以即时交互性非常糟糕。为了方便数据分析人员查看信息,数据平台需要提供一个能够根据文字及选项等条件,进行灵活分析判断的数据功能。 2.2 需求详细 输入参数 返回结果

2.1 T+1 模式 2.1.1 实现步骤 1)利用sqoop等工具,从业务数据库中批量抽取数据; 2)利用数仓作业,在dws层组织宽表(用户购买行为); 3)开发spark的批处理任务,把dws层的宽表导入到ES中; 4)从ES读取数据发布接口,对接可视化模块。 2.1.2 特点 优点:可以利用在离线作业处理好的dws层宽表,直接导出一份到ES进行快速交互的分析。缺点:因为要用离线处理的后的结果在放入ES,所以时效性等同于离线数据。

2.2 T+0 模式 2.2.1 实现步骤 1)利用canal抓取对应的数据表的实时新增变化数据,推送到Kafka; 2)在spark-streaming中进行转换,过滤,关联组合成宽表的结构; 3)保存到ES中; 4)从ES读取数据发布接口,对接可视化模块。 2.2.2 特点 优点:实时产生数据,时效性非常高。 缺点:因为从kafka中得到的是原始数据,所以要利用spark-streaming要进行加工处理,相对来说要比批处理方式麻烦,比如join操作。 第3章实时采集数据 3.1 在canal 模块中增加要追踪的表 代码 public class CanalHandler { private List rowDatasList; String tableName; CanalEntry.EventType eventType;

大数据技术之Sqoop

尚硅谷大数据技术之Sqoop (作者:尚硅谷大数据研发部) 版本:V2.0 第1章Sqoop简介 Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如:MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。 Sqoop项目开始于2009年,最早是作为Hadoop的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop独立成为一个Apache 项目。 Sqoop2的最新版本是1.99.7。请注意,2与1不兼容,且特征不完整,它并不打算用于生产部署。 第2章Sqoop原理 将导入或导出命令翻译成mapreduce程序来实现。 在翻译出的mapreduce中主要是对inputformat和outputformat进行定制。 第3章Sqoop安装 安装Sqoop的前提是已经具备Java和Hadoop的环境。 3.1 下载并解压 1) 下载地址:https://www.doczj.com/doc/6d15254196.html,/apache/sqoop/1.4.6/ 2) 上传安装包sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz到虚拟机中 3) 解压sqoop安装包到指定目录,如: $ tar -zxf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /opt/module/ 3.2 修改配置文件 Sqoop的配置文件与大多数大数据框架类似,在sqoop根目录下的conf目录中。 1) 重命名配置文件 $ mv sqoop-env-template.sh sqoop-env.sh

尚硅谷大数据项目之实时项目4(预警需求)

第1章需求分析 1.1 简介 实时预警,是一种经常出现在实时计算中的业务类型。根据日志数据中系统报错异常,或者用户行为异常的检测,产生对应预警日志。预警日志通过图形化界面的展示,可以提醒监控方,需要及时核查问题,并采取应对措施。 1.2 需求说明 需求:同一设备,5分钟内三次及以上用不同账号登录并领取优惠劵,并且在登录到领劵过程中没有浏览商品。达到以上要求则产生一条预警日志。 同一设备,每分钟只记录一次预警。 1.3 预警日志格式

第2章整体流程设计 2.1 框架流程 2.2 开发思路 1)从kafka中消费数据,根据条件进行过滤筛选,生成预警日志;2)预警日志保存到ElasticSearch中; 3)利用Kibana快速搭建可视化图形界面。 第3章实时计算模块 3.1 筛选条件分析 同一设备(分组) 5分钟内(窗口) 三次不同账号登录(用户) 领取优惠券(行为) 没有浏览商品(行为)

同一设备每分钟只记录一次预警(去重)3.2 数据处理流程图 3.3 代码开发 3.3.1 事件日志样例类– EventInfo case class EventInfo(mid:String, uid:String, appid:String, area:String, os:String, ch:String, `type`:String, evid:String, pgid:String, npgid:String, itemid:String, var logDate:String, var logHour:String, var ts:Long)

3.3.2 预警日志样例类–CouponAlertInfo case class CouponAlertInfo(mid:String, uids:java.util.HashSet[String], itemIds:java.util.HashSet[String], events:java.util.List[String], ts:Long) 3.3.3 预警业务类– AlertApp import com.alibaba.fastjson.JSON import com.atguigu.gmall.constant.GmallConstants import com.atguigu.gmall2019.realtime.bean.{CouponAlertInfo, EventInfo} import com.atguigu.gmall2019.realtime.util.{MyEsUtil, MyKafkaUtil} import org.apache.kafka.clients.consumer.ConsumerRecord import org.apache.spark.SparkConf import org.apache.spark.streaming.dstream.{DStream, InputDStream} import org.apache.spark.streaming.{Seconds, StreamingContext} import scala.util.control.Breaks._ object AlertApp { def main(args: Array[String]): Unit = { val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("event_app") val ssc = new StreamingContext(sparkConf,Seconds(5)) val inputDstream: InputDStream[ConsumerRecord[String, String]] = MyKafkaUtil.getKafkaStream(GmallConstants.KAFKA_TOPIC_EVENT,ssc) //1 格式转换成样例类 val eventInfoDstream: DStream[EventInfo] = inputDstream.map { record => val jsonstr: String = record.value() val eventInfo: EventInfo = JSON.parseObject(jsonstr, classOf[EventInfo]) eventInfo } //2 开窗口 val eventInfoWindowDstream: DStream[EventInfo] = eventInfoDstream.window(Seconds(30),Seconds(5)) //3同一设备分组 val groupbyMidDstream: DStream[(String, Iterable[EventInfo])] = eventInfoWindowDstream.map(eventInfo=>(eventInfo.mid,eventInfo)). groupByKey() //4 判断预警 // 在一个设备之内 // 1 三次及以上的领取优惠券 (evid coupon) 且 uid都不相同 // 2 没有浏览商品(evid clickItem) val checkCouponAlertDStream: DStream[(Boolean, CouponAlertInfo)] = groupbyMidDstream.map { case (mid, eventInfoItr) =>

04_尚硅谷大数据之DDL数据定义

第4章DDL数据定义 4.1 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。 hive (default)> create database db_hive; 2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法) 3)创建一个数据库,指定数据库在HDFS上存放的位置 hive (default)> create database db_hive2 location '/db_hive2.db'; 4.2 修改数据库 用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他元数据信息都是不可更改的,包括数据库名和数据库所在的目录位置。 hive (default)> alter database db_hive set dbproperties('createtime'='20170830'); 在mysql中查看修改结果 hive> desc database extended db_hive; db_name comment location owner_name owner_type parameters db_hive hdfs://hadoop102:8020/user/hive/warehouse/db_hive.db atguigu USER {createtime=20170830} 4.3 查询数据库 4.3.1 显示数据库 1)显示数据库

hive> show databases; 2)过滤显示查询的数据库 hive> show databases like 'db_hive*'; OK db_hive db_hive_1 4.3.2 查看数据库详情 1)显示数据库信息 hive> desc database db_hive; OK db_hive hdfs://hadoop102:8020/user/hive/warehouse/db_hive.db atguiguUSER 2)显示数据库详细信息,extended hive> desc database extended db_hive; OK db_hive hdfs://hadoop102:8020/user/hive/warehouse/db_hive.db atguiguUSER 4.3.3 切换当前数据库 hive (default)> use db_hive; 4.4 删除数据库 1)删除空数据库 hive>drop database db_hive2; 2)如果删除的数据库不存在,最好采用if exists判断数据库是否存在 hive> drop database if exists db_hive2; 3)如果数据库不为空,可以采用cascade命令,强制删除

相关主题
相关文档 最新文档