2213-梁同学-大数据方向-就业:是 已关闭

2213-梁同学-大数据方向-就业:是 扫二维码继续学习 二维码时效为半小时

(0评价)
价格: 免费

select a.*,b.* 

from

(select username,month,sum(salary)

from t_salary_detail

group by username,month) a

inner join

(select username,month,sum(salary)

from

t_salary_detail group by username,month)  b on a.username=b.username;

[展开全文]

求取每个用户获取到金额最大的前三位数值

典型的分组求topN的问题

使用hive的开窗函数可以解决标号的问题

rank over:如果有相同的数据,标号一样,标号根据数据的条数,往上涨

dense_rank() over如果有相同的数,标号一样,标号顺序往上涨

row_number() over如果有相同的数据,标号顺序往上涨

 

[展开全文]

desc function extended parse_url_tuple;

+----------------------------------------------------+--+
|                      tab_name                      |
+----------------------------------------------------+--+
| parse_url_tuple(url, partname1, partname2, ..., partnameN) - extracts N (N>=1) parts from a URL. |
| It takes a URL and one or multiple partnames, and returns a tuple. All the input parameters and output column types are string. |
| Partname: HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:<KEY_NAME> |
| Note: Partnames are case-sensitive, and should not contain unnecessary white spaces. |
| Example:                                           |
|   > SELECT b.* FROM src LATERAL VIEW parse_url_tuple(fullurl, 'HOST', 'PATH', 'QUERY', 'QUERY:id') b as host, path, query, query_id LIMIT 1; |
|   > SELECT parse_url_tuple(a.fullurl, 'HOST', 'PATH', 'QUERY', 'REF', 'PROTOCOL', 'FILE',  'AUTHORITY', 'USERINFO', 'QUERY:k1') as (ho, pa, qu, re, pr, fi, au, us, qk1) from src a; |
+----------------------------------------------------+--+

LATERAL VIEW 一行进,多行出;

desc function extended regexp_replace;替换正则表达式

+----------------------------------------------------+--+
|                      tab_name                      |
+----------------------------------------------------+--+
| regexp_replace(str, regexp, rep) - replace all substrings of str that match regexp with rep |
| Example:                                           |
|   > SELECT regexp_replace('100-200', '(\d+)', 'num') FROM src LIMIT 1; |
|   'num-num'                                        |
+----------------------------------------------------+--+
 

substring


 

[展开全文]

集合当中的数据,先按照时间进行排序,比较下一条与上一条数据之间的时间间隔

[展开全文]

flume数据采集:

过滤脏数据

数据的清洗:

过滤静态数据

[展开全文]

分区与分组的关系:

分区:主要是决定了数据去往哪一个reduce

分组:决定了哪些数据分到一个组里面去,形成一个集合,一起调用一次reduce

 

 

[展开全文]

mapreduce对key2进行排序

 

 

[展开全文]

mapreduce排序功能:

默认有排序功能,按照字典顺序来进行排序,对key2进行排序

hadoop当中没有沿用Java序列化serialize方式,使用的是writable接口,实现了writable接口就可以序列化

如果需要序列化,需要实现writable接口

如果需要排序,需要实现comparable接口

如果既需要序列化,也需要排序,可以实现writable和comparable或者writableComparable

 

[展开全文]

hdfs的设计目标:单台机器的存储问题

hdfs的架构图:主从架构

namenode:主节点,接收用户请求,管理元数据信息

datanode:从节点,存储数据,出磁盘

secondaryNanmenode:辅助namenode管理元数据信息,合并fsimage与edits文件

如果namenode是HA的模式:(active与standby)

journalnode:负责从节点与备份节点的元数据的共享问题

zkfc:zkFailoverController守护进程,监看namenode的健康状况

w文件的副本机制与block块:

文件的副本机制:解决了如何保证数据不丢失的问题

block块存储:默认128M

hdfs的元数据管理fsimage与edits

fsimage:存放了一份比较完整的元数据信息,元数据存放在两个地方,一个是磁盘文件,一个是内存

edits:最近一段时间的操作日志,时间长短1小时,文件大小64M

secondaryNamenode:edits文件达到触发合并的条件,snn就开始工作

1:通知nn切换edits文件

2:通过http请求,获取fsimage与edits文件

3:将fsimage与edits文件加载到内存当中进行合并,形成最新的fsimage文件

4:将新的fsimage文件发送到nn替换掉旧的fsimage文件

hdfs的写入过程;

1:客户端请求namenode上传文件

2:namenode校验客户端是否能够上传

3:客户端请求namenode第一个block块上传位置

4:namenode通过机架感知原理,找到离客户端最近的一个block块的位置,告诉给客户端

5:与datanode建立长连接pipeline管道,客户端以packet(64kb)的方式发送数据到datanode上面去

6:第一个block块上传完成,给客户端一个ack的反馈机制,继续传送第二个block块

8、文件的读取过程

1:客户端请求namenode读取数据

2:namenode校验文件是否存在,权限是否正确,返回给客户端一个block块的列表地址

3:客户端获取到block块的地址后,与datanode建立通信,读取所有的block块

4:客户端将block块进行拼接

MapReduce

yarn资源管理器

resourcemanager:主节点,接收用户请求,分配资源

nodemanager:从节点,接收分配的任务,执行具体的任务

applicationMaster:每个任务resourcemanager都会启动一个APPmaster来进行全权的管理,主要负责资源的申请,任务的分配,任务进度的执行情况

 

MapReduce设计构思:

map阶段:主要负责分开,将大的任务划分成小任务

reduce阶段:主要负责合并,将map阶段处理完成的结果进行汇总

 

MapReduce的编程规范:

1:读取文件,解析成key、value对,TextInputFormat

2:自定义map逻辑,接收k1,v1,转换成

k2,v2进行输出

shuffle阶段的四个步骤

3:分区,相同key的value发送到同一个reduce里面去,相同key合并,value形成一个集合

4:排序

5:规约

6:分组

reduce阶段的两个步骤

7:自定义reduce逻辑,接收k2,v2,转换成新的k3,v3进行输出

8:输出我们k3,v3,TextOutFormat

 

 

 

 

 

[展开全文]

课程总结:

1.hdfs的系统设计介绍

2.hdfs的设计目标

3.hdfs的来源

4.hdfs的架构图,所有的关于hdfs的节点的作用背下来

namenode:主节点,接收用户请求,管理元数据,元数据有两个地方存储,fsimage,edits

5.hdfs的副本机智以及block块存储,

 

6.fsimage:镜像文件,最完整的一份元数据信息,较大,存储在两个地方,内存和磁盘

edits:

最近一段时间的操作日志,控制edits文件不会膨胀太大

1:时间长短1个小时;2:文件大小,64M的时候合并

snn如何合并fsimag与edits

1:通过namenode切换editswe年

2:通过http的方式获取fsimage与edits文件

3:将fsimage与edits文件加载到内存当中合并

4:将最新的fsimage发还给namenode,替换旧的fsimage

8.hdfs文件的读取过程

1.客户端请求namenode读取数据

2.namenode校验权限,文件是否存在等等

3.namenode返回给客户端一个block块的列表

4:客户端读取block块

5:客户端拼接block块

 

9.hdfs的JavaAPI操作

10.MapReduce的入门

核心思想:分治

步骤:八部

 

 

 

 

[展开全文]

在MapReduce当中没有block块的概念,每一个maptask处理的一部分数据都叫做一个切片,默认的一个切片对应一个block块的大小,可以理解为一个block块对应一个maptask

 

步骤:

map阶段

第一步:读取文件,解析成key、value对,这里是我们的k1、v1

第二步:接收我们的k1、v1,自定义我们的map逻辑,转换成新的key2、value2进行输出,往下发送k2、v2

shuffle阶段

第三步:分区,形同key的value发送到同一个reduce里面去,key合并,value形成一个集合

第四步:排序,默认按照字段顺序进行排序

第五步:规约

第六步:分组

reduce阶段

第七步:接收我们的k2 、v2,自定义我们的reduce逻辑,转换成新的k3、v3进行输出

第八步:将k3、v3进行输出

 

APPmaster:很重要,全权负责任务的划分,资源的申请,任务进度的监控等工作

 

单词统计:

hello world

hadoop hive

sqoop hive

hadoop hive

第一步:读取文件,解析成key,value对,key是行偏移量,value是行文本内容(下一行是上一行的行偏移量)

key1       value1

0   hello     world

11  hadoop hive

22  sqoop hive

#32  hadoop hive

第二步:自定义map逻辑,接收key1,value1转换成新的key2,value2进行输出

获取value1,按照空格进行切割

[hello,world],[hadoop,hive],[sqoop,hive]

hello     world

 hadoop hive

 sqoop hive

 

转换成新的key2,value2往下发送

key2   value2

hello       1

world      1

hadoop   1

hive          1

sqoop      1

hive          1

第三步:分区,相同key的value发送到同一个reduce当中去,key进行合并,value形成一个集合

hive [1,1]

第四步:排序

第五步:规约

第六步:分组

第七部:reduce阶段,接收key2、value2,转换成新的key3、value3进行输出

接收  key2      value2

          hive         [1,1]

转换成新的key3,value3

         hive3        value3

第八步:输出key3、value3

hive    2

....

 

 

[展开全文]

MapReduce:分布式文件计算系统

核心思想:分治

最主要的特点:把一个大的问题,划分成很多小的子问题,并且每个小的子问题的求取思路与我们大问题的求取思路一致

主要阶段:两个

map阶段:负责拆分

reduce阶段:负责聚合

[展开全文]

www.cloudera.com

using the CDH 5 Maven Repository

hdfs的javaAPI操作会抛出一个异常

winutils异常:因为我们需要在windows上面装一个hadoop的客户端环境,需要在Windows下面重新编译hadoop

如何解决winutils的问题

第一步:把winutils拷贝到一个没有中文没有空格的目录中去

第二步:配置windows的hadoop_home环境变量

第三步:拷贝bin/hadoop.dll放到c:\windows/system32中去

第四步:关闭windows重启

 

[展开全文]

hdfs当中的元数据信息管理
fsimage:存储的是一份比较完整的元数据信息

edits:最近一段时间的操作日志

控制edits文件的大小:时间长短,文件大小

通过secondaryNamnode将我们的edits文件合并到fsimage上面去

[展开全文]

fsimage:保存的是一份最完整的元数据信息,一份比较完整的元数据信息,存放在两个地方,一个是磁盘,一个是内存

hdfs文件可以保存多少数据,取决于namenode的内存大小,hdfs推荐存储大量的大文件地方,不擅长存储小文件(因为namenode是单机的,无法像datanode一样横向扩展)

edits:保存的是最近一段时间操作的元数据信息

secondaryNamenode负责合并fsimage和edits

 

如何确定的edits与fsimage如何合并

文件大小和时间长短

[展开全文]

文件占用磁盘空间大小只与文件大小有关系,跟多少个block块没关系;

读取文件的时候需要把三个block块都读取出来,拼接起来就是一个最完整的文件

2.x默认block块大小是128M,3.x默认是256M

文件的副本数是三个

namenode负责更新保存元数据信息

datanode负责处理用户的读写数据

客户端通过namenode查找某个数据的所有block块在哪些datanode上面,然后就去datanode上面读取数据

数据副本的存放机制:namenode会首先找离客户端最近的一台机器上传block块,然后再去做备份

何为最近:跨交换机跨得最少即为最近

namenode负责数据block块的复制,定期检测block的副本数,如果不够3个,继续复制

namenode的元数据保存在两个地方,一个是内存;一个是磁盘,存的是元数据的快照,如果快照非常大,停机再启动代价非常大 

block块的大小,可以根据实际工作当中的文件特性来调整,如果都是一些大文件,可以稍微调大block块的大小,

块缓存:distributedCache 可以用来实现文件缓存

hdfs的权限验证:采用与linux类似的权限验证,权限验证较弱

 

心跳机制

[展开全文]

hdfs分布式文件系统设计的目标:

1、硬件错误是常态,特别是硬盘的损坏是常态。解决方式:引入副本机制

2、数据流访问,所有的数据访问都是访问大量的数据,使用IO流一直操作,追求的是稳定,不是效率

3、大数据集 假设所有存储到hdfs的数据都是海量的数据,不擅长处理小文件,因为一个小文件占用一个元数据,元数据都存储爱内存当中,占用namenode大量内存

4、简单的相关模型 假设文件是一次写入,多次读取,不会有频繁的更新,比较擅长存储一些历史数据

5、移动计算比移动数据便宜

6、多种软硬件的可移植性

[展开全文]

分布式文件系统HDFS:

详细介绍

hdfs的架构图

hdfs的元数据信息的管理

hdfs的JavaAPI操作

分布式文件计算系统MapReduce的入门:

写一个wordcount单词计数

hadoop的文件系统:

文件系统:是一个顶层的抽象,具体的实现,需要取决于你自己获取的实例,可以通过文件系统获取本地文件系统,操作Linux磁盘上面的文件,也可以获取分布式文件系统,操作hdfs上面的文件

ftp://ftp文件系统,可以做文件的上传下载

webHdfs:浏览器操作文件系统,可以允许我们通过浏览器上传,下载,修改,hdfs上面的文件

hdfs:分布式文件系统

local:本地文件系统

[展开全文]

hadoop1.x与2.x的架构模型区别:

1.x架构:

HDFS:

namenode:主节点,管理元数据信息,处理用户的请求

secondaryNamenode:辅助namenode管理元数据

datanode:从节点,主要用于存储数据

MapReduce:

JobTracker:主节点,接收用户请求,分配任务

tastTracker:从节点,主要用于执行任务

2.x架构:

HDFS:分布式文件存储系统

namenode:主节点,管理元数据信息,处理用户的请求

secondaryNamenode:辅助namenode管理元数据信息

datanode:从节点,主要用于存储数据

如果namenode是ha的模式

juornalnode:同步namenode之间的元数据信息

zkfc:zkFiloverController守护进程,监看namenode的健康状况

yarn:资源调度系统

resourcemanager:主节点,接收用户请求,分配资源

nodemanager:执行任务

 

Apache三种环境的搭建:

standAlone:单机版的hadoop运行环境

伪分布式:所有的主节点都在同一台机器上面,从节点分开

完全分布式:把所有的主节点,完全分开到不同的机器上面去

 

CDH版本的hadoop的重新编译

为什么重新编译cdh版本的hadoop:

因为cdh版本的lib/native本地库没有任何c程序,重新编译为了支持我们的本地库的c成语以及snappy的压缩

分布式文件系统HDFS

详细介绍

hdfs的架构图

hdfs的元数据信息的管理

hdfs的JavaAPI操作

分布式文件计算系统MapReduce的入门

写一个wordcount单词计数

 

 

[展开全文]