大数据框架整理
作者:水分子Andy 发布时间:[ 2017/1/22 10:42:46 ] 推荐标签:框架 大数据
	  大数据离线部分
	  一、HDFS
	  1:HDFS的架构部分及工作原理
	  NameNode:负责管理元素据,将信息保存在内存中
	  DataNode:保存数据,以块的形式保存。启动后需要定时的向NameNode发送心跳,报告自身存储的块信息
	  2:HDFS的上传过程
	  3:HDFS的下载
	  4:NameNode的元数据安全机制
	  以记日志的形式将每一个操作写在磁盘的日志文件中,然后借助Secondary NameNode的checkpoint功能将fsImage和日志进行合并。
	  重点:记住checkpoint工作过程
	  5:如果服务器的磁盘坏了,如何挽救数据?
	  配置多个dfs.namenode.name.dir 路径为本地磁盘路径和nfs网络磁盘路径。
	  6:hdfs集群中,受到拓展瓶颈的是NameNode还是Datanode?
	  是NameNode,因为DataNode不够可以很方便的水平拓展,而工作的NameNode只有一个,他的存储能力完全取决于他的内存,所以。。。。,
	  但是其实NameNode一般不会成为瓶颈,因为一个块记录的元数据信息大小约为150B,如果每一个块大小为128M的话,那么15G的NameNode内存可以存储12PB的数据。
	  7:datanode明明已启动,但是集群中的可用datanode列表中是没有,怎么办?
	  已经不是处女,在她的Data目录下,已经有其他NameNode的标记,这个NameNode不认。
	  8:文件下载到window中,为什么会报错?
	  默认使用操作系统的内核进行磁盘数据的写入,也是需要一个winutil的工具,而默认的安装包中不提供,所以需要编译源码或者设置为使用Java的进行磁盘写入。
	  9:hadoop的HA(高可用)
	  二、MapReduce
	  1:MapReduce中,fileinputformat -> map -> shuffle -> reduce的过程
	  2:MapReduce中,job提交的过程
	  3:自定义Javabean作为数据,需要extends writableandCompareble接口。
	  4:自定义outputformat,进行不同方向的处理。
	  5:MapReduce的一些应用场景
	  1、排序并且求 TOPOne 和TOPN
	  2、求某个用户前几个月的总流量,并且选择出流量前几名的用户。
	  3、reduce端的join
	  4、map端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组成的一个流程图。他描述着本次任务的信息
	  spout:
	  open
	  nexttuple
	  declareOutputFields
	  bolt:
	  prepare
	  execute
	  declareOutputFields
	  6:storm的tuple结构,它里面有两个数据结构,一个list、一个是map
	  list:记录着信息
	  map:记录着每个字段对应的下表,通过找到下边再去上面的list中找数据。
	  7:storm任务提交的过程
	
 
					
 
			 
								 
								 
								 
								 
								 
								 
								 
								 
								 
								 
					 
				 sales@spasvo.com
sales@spasvo.com
