大数据框架整理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大数据框架整理

大数据离线部分

一、HDFS

1 : HDFS的架构部分及.工作原理

NameNode :负责管理元素据,将信息保存在内存中

DataNode :保存数据,以块的形式保存。启动后需要定时的向NameNode 发送心跳,报告自身存储的块信息

2: HDFS的上传过程

3: HDFS的下载

4: NameNode 的元数据安全机制

以记日志的形式将每一个操作写在磁盘的日志文件中,然后借助Seco ndary NameNode 的checkpoint 功能将fslmage 和日志进行合并。

重点:记住checkpoint 工作过程

5:如果服务器的磁盘坏了,如何挽救数据?

配置多个dfs. name node, name.dir 路径为本地磁盘路径和nfs网络磁盘路径。

6 : hdfs集群中,受到拓展瓶颈的是NameNode 还是Data node?

是NameNode ,因为DataNode 不够可以很方便的水平拓展,而工作的

NameNode 只有一个,他的存储能力完全取决于他的内存,所以。。。。,

但是其实NameNode —般不会成为瓶颈,因为一个块记录的元数据信息大小约为150B,如果每一个块大小为128M 的话,那么15G的NameNode 内存可以存储12PB 的数据。

7: data node 明明已启动,但是集群中的可用data node 列表中就是没有,怎么办?

NameNode 不认。

8:文件下载到window 中,为什么会报错?

默认使用操作系统的内核进行磁盘数据的写入,也就是需要一个win util的工具,而默认的安装包中不提供,所以需要编译源码或者设置为使用Java的进行磁盘写入。

9 : hadoop 的HA (高可用)

二、MapReduce

1: MapReduce 中,file in putformat -> map -> shuffle -> reduce 的过程

2 : Map Reduce 中,job提交的过程

3:自定义Javabean 作为数据,需要extends writableandCompareble 接口。

4 :自定义outputformat ,进行不同方向的处理。

5: MapReduce 的一些应用场景

1、排序并且求TOP One 和TOPN

2、求某个用户前几个月的总流量,并且选择出流量前几名的用户。

3、r educe 端的join

4、m ap 端join

5、求共同好友问题

三、hive

1 :什么是hive ?

一个将sql转化为MapReduce 程序的、单机版的、数据仓库工具。通过关系型数据库(mysql等)来记录表元数据信息。真正的数据在HDFS中。

Hive利用HDFS存储数据,利用MapReduce 查询分析数据

hive2.0 版本之后,都是基于Spark 处理了。

安装的时候,需要注意jline 的版本冲突。

2:如何启动?

3:执行的sql 的形式

hiveshell 、hive -e "sql 命令" 、hive -f " 一个包含着很多SQL 语句的文件" 4:hive 的创建表操作

内部表、外部表就差连个关键字(external 和location )

分区表、分桶表

5:hive 查询表

join

动态分区

分组查询

复杂的那个累计报表操作。

6:hive 自定义函数(UDF )

四、sqoop

利用hadoop 的map 端进行数据的并行导入导出。

安装在HDFS 上,配置HDFS 的路径和Hive 路径即可。

五、flume

1:agent :sources 、channel 、sinks

2:sources :exec 、spooldir 、arvo (加一个拦截器)3:channel :men 、disk4 :sinks :arvo 、HDFS 、kafka

5:flume 安装在数据源这一边。

6:如何自定义拦截器?class myiterceptor implements Iterceptor

// 里面有一个静态的公共内部类。

public static class mybuilder implements Iterceptor.Builder

7:如何实现flume 的多级连接,以及如何实现高可用?

大数据实时storm 部分

storm

1:storm 是一个实时的计算框架,只负责计算,不负责存储。它通过spout 的open 和nextTuple 方法去外部存储系统(kafka )获取数据,然后传送给后续的bolt 处理,bolt 利用prepare 和execute 方法处理完成后,继续往后续的bolt 发送,或者根据输出目录,把信息写到指定的外部存储系统中。

2:storm 的数据不丢失原理

交叉收到的数据做异或元算中间结果不为0 的原理。

3:设置spout_max_pending (可以限流)

4:jstorm 的通信机制,每一个:worker 都有一个接受线程和输出线程

5:storm 的架构分析

nimbus 、zookeeper 、supervisor 、worker

nimbus :接受任务请求,并且进行任务的分发,最后写入到zookeeper 中。

supervisor :接受nimbus 的任务调度,然后启动和管理属于自己的worker 进程, supervisor 是可以快速失败的,不影响任务的执行。

我们可以写一个脚本来监控supervisor 的进程,如果不存在了,立马启动,就可以了。

worker :启动spoutTask 、boltTask 等等任务,去执行业务逻辑。

6:storm 的编程模型

topology :由spout 和bolt 组成的一个流程图。他描述着本次任务的信息

相关文档
最新文档