Spark项目学习-慕课网日志分析-days1-hadoop

1. HDFS架构

1 Master(NameNode/NM) 带 N个Slaves(DataNode/DN)

HDFS/YARN/HBase

1个文件会被拆分成多个Block

NN:

1)负责客户端请求的响应

2)负责元数据(文件的名称、副本系数、Block存放的DV)的管理

DN:

1)存储用户的文件对应的数据块(Block)

2)要定期向NN发送心跳信息,汇报本身及其所有的block信息,健康状况

replication factor:副本系数、副本因子

2. HDFS shell常用命令的使用

1)ls 查看目录  fs -ls -R 递归查看

2)get 获取文件

3)cat 查看内容

4)mkdir 创建文件夹  fs -mkdir -p /a/b 创建多个目录 

5)hadoop fs -put hafs.cmd /test/ 复制文件

6)hadoop fs -text xxx  查看内容

7)hadoop fs -rmr /a  rmr递归的删除

3. HDFS优点

1)高容错

2)适合批处理

3)适合大数据处理

4)可构建在廉价的机器上

  HDFS缺点:

1)低延迟的数据访问

2)小文件存储

4. 分布式计算框架MapReduce(公司里基本不用了)

1)易于编程

2)良好的扩展性

3)高容错性

4)适合海量数据的离线处理

5)将计算向存储转移

  (1)MapReduce不擅长的场景

1)实时计算;

2)流式计算;(流式计算的特点是 无时无刻都在产生数据,但是MapReduce的数据是静态离线的)

3)DAG计算;(DAG是指任务相互之间存在先后关系的)

  (2)NapReduce编程模型

1)input

2)map&reduce

3)output

4)过程:首先被分成3个块,然后逐步处理每行,每行以空格分割,然后map逐个统计个数,形成kv对,然后在reduce中将相同key值得value加起来

5.资源调度框架YARN

(1)YARN产生背景

1)MapReduce1.x存在的问题:JobTracker负责资源管理,任务调度,工作较多:容易发生单点故障

2)资源利用率&运维成本比较高,因为几个框架Hadoop,spark,MPI不能统一调配

YARN的优点在于,所有的资源管理都是可以由YARN完成的,无论是什么框架和数据类型,都可以跑在YARN上

(2)YARN架构

由1个RM(Resource Manger) + N个NM(Node Manger)

RM(ResourceManager)的职责:一个集群active状态的RM只有一个,负责整个集群的资源管理和调度

1)处理客户端的请求(启动/杀死)

2)启动、监控ApplicationMaster(一个作业对应一个AM)

3)监控NM

4)系统的资源分配和调度

NodeManager:整个集群中有N个,负责单个节点的资源管理和使用以及task的运行情况

1)定期向RM汇报本节点的资源使用请求和各个Container的运行状态

2)接收并处理RM的container启停的各种命令

3)单个节点的资源管理和任务管理

ApplicationMaster:一个作业对应一个,负责应用程序的管理

1)数据的切分

2)为应用程序向RM申请资源(container),并分配给内部任务

3)与NM通信以启停task,task是运行在container中的

4)task的监控和容错

Container:对任务运行情况的描述:cpu、memory、环境变量等

(3)YARN的执行流程:首先客户端找到RM,然后RM找到NM,然后NM找到一个AM,并且AM向RM汇报和申请资源,并在对应的NM上启动,开始作业

1)用户向YARN提交作业

2)RM为该作业分配第一个container(AM)

3)RM会与对应的NM通信,要求NM在这个container上启动应用程序的AM

4)AM首先向RM注册,然后AM将为各个任务申请资源,并监控运行情况

5)AM采用轮训的方式通过RPC协议向RM申请和领取资源

6)AM申请到资源以后,便和响应的NM通信,要求NM启动任务

7)NM启动我们作业对应的task

6. 大数据数据仓库Hive

(1)Hive产生背景

1)MapReduce的编程不便性(必须本地编好代码,并打包上传文件运行

2)HDFS上的文件缺少Scheme(Scheme是指数据类型信息,必须学习到Java或者MapReduce相关编程技巧)

(2)Hive是什么

1)由facebook开源的,最初用于解决海量结构化的日志数据统计问题

2)构建在Hadoop之上的数据仓库

3)Hive定义了一种类SQL查询语言:HQL(类似SQL但不完全相同)

4)通常用于进行离线数据处理(采用MapReduce)

5)底层支持多种不同的执行引擎(可以使用spark,Tez,MapReduce,Hive on spark)

6) 支持多种不同的压缩格式,存储格式以及自定义函数(压缩:GZIP,LZO,Snappy,BZIP2;存储:TextFile,SequenceFile,RCFile,ORC)

(3)为什么要使用Hive

1)简单,容易上手(提供类似于SQL查询语言HQL)

2)为超大数据集设计的计算/存储扩展能力(MR计算,HDFS存储)

3)统一的元数据管理(可与Presto/Impala(基于内存)/SparkSQL等共享数据) 意味着创建的表在相互之间可与通用

(4)Hive体系架构

1)最上层:可与通过shell和JDBC等客户端进行操作,写SQL语句

2)Driver:首先解析SQL语句,生成逻辑执行计划,然后进行优化,然后生成物理执行计划,最后生成执行引擎,提交到MapReduce执行

3)采用HDFS,HBase执行

4)左侧是指表格存放在Mysql中

  Hive部署架构--生产环境

1)所有元数据管理都放在MySQL中执行

2)Hive在Hadoop上运行

3)具有Active MySQL和Standby MySQL

4)Hive只需要部署一个,因为他只是一个客户端,用来提交SQL

  Hive的基本使用

1)创建表 CREAT TABLE table_name(数据名 数据类型)

2)将数据加载 LOAD DATA LOCAL INPATH 'filepath' INTO TABLE tablename

3)查询语句 select word,count(1) from hive_wordcount lateral view explode(split(context,'\t')) wc as word group by word;

    lateral view explode();

猜你喜欢

转载自blog.csdn.net/canglan211/article/details/82953486