hadoop整理笔记

#hadoop整理笔记
##第一章
1.hadoop的特点(理解)
(1)高可靠性;采用冗余数据存储的方式,即使一个副本发生故障,其他副本也可以保证正常对外服务
(2)高效性;作为并行分布式计算平台,Hadoop采用分布式存储和分布式处理两大核心技术,能够高效的处理PB级数据
(3)高扩展性;Hadoop的设计目标是可以高效稳定的运行在廉价的计算机集群上,可以扩展到数以千计的计算机节点上
(4)高容错性;采用冗余链式存储方式,自动保存数据的多个副本,并且能够自动的失败的任务重新进行分配。
(5)成本低;
(6)支持多种编程语言
2.Hadoop生态系统和相关技术(记住,理解其作用)
*HDFS:是Hadoop两大核心之一,作为底层数据存储
*HBase:是一个分布式的列式数据库,解决非关系型数据库的数据存储问题
*MapReduce:是一种编程模型,用于大规模数据集的并行运算
*Hive:是一个基于Hadoop的数据仓库工具,用于对Hadoop文件中的数据集进行数据整理、特殊查询和分析存储
*Pig:是一种数据流语言和运行环境,适合于使用Hadoop和MapReduce平台来查询大型半结构化数据集
*zookeeper:是一个分布式的,开放源码的分布式应用程序协调服务,用来解决分布式应用中经常遇到的一些数据管理问题
##第二章
1.修改主机名是哪个文件?
*etc/hostname
2.免密登录命令
*ssh-keygen - rsa
3.核心配置文件的作用(记住)
*core-site.xml配置文件



fs.defaultFS
hdfs://master:8020



hadoop.tmp.dir
/usr/local/hadoop/tmp


*hdfs-site.xml 配置文件



dfs.replication
1



dfs.namenode.name.dir
file:/usr/local/hadoop/tmp/dfs/name



dfs.datanode.data.dir
file:/usr/local/hadoop/tmp/dfs/data


*mapred-site.xml


mapreduce.framework.name
yarn //配置使用yarn框架,Hadoop下没有此文件,需要先创建此文件


*yarn-site.xml

<!—配置resourceManager在哪台机器 -->

yarn.resourcemanager.hostname
master



yarn.nodemanager.aux-services
mapreduce_shuffle


2.HDFS命令(重点)
*NameNode格式化
hdfs namenode -format
*启动/停止HDFS
start-dfs.sh stop-dfs.sh
*启动/停止YARN
start-yarn.sh stop-yarn.sh
*一次性同时启动HDFS和YARN
start-all.sh stop-all.sh
*启动成功后的5个进程有哪些
NameNode,(主节点)
SecondaryNamenode,(主节点)
DataNode,(从节点)
ResourceManager(主节点)
NodeManager(从节点)
##第三章
1.高可用(了解)
是指一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
HA群集中,两台独立的计算机配置为NameNode。在任何时间点,其中一个NameNode处于活动状态(即Active NameNode),另一个NameNode处于待机状态(即Standby NameNode)
2.Zookeeper三个特点(理解):
(1)具有存储功能,但通常用它来保存应用系统的元数据信息,在Hadoop的HA集群中,使用Zookeeper的存储功能来保存NameNode的状态信息;
(2)对数据的变化提供监听和触发事件机制;Hadoop HA集群中,Zookeeper会监听两个NameNode的工作状态,当状态发生改变时,由其协调Active与Standby状态的切换;
(3)具有强大的高可用性,Zookeeper集群的节点只要有半数以上存活,就可以对外提供服务。
3.各守护进程名字(记住)
*通信守护进程:Journal Node
*检查工作状态的进程:FailoverController(ZKFC)
4.什么是联邦
在联邦的HDFS中可以设置多个NameNode,每个NameNode管理文件系统命名空间中的一部分,例如一个NameNode可能管理/user目录下的所有文件,而另一个NameNode可能管理/docs目录下的所有文件
5.联邦的优点(了解):
*命名空间可伸缩性 – 联邦添加命名空间水平扩展
*性能 – 文件系统吞吐量不受单个Namenode的限制
*隔离 – 通过使用多个Namenode,可以将不同类别的应用程序和用户隔离到不同的名称空间,并且彼此之间互不影响,即使一个NameNode失效,也不会影响到其它NameNode维护的命名空间的可用性
##第四章
1.数据块 block
HDFS在存放文件的时候先将文件切分为大小相同的block,并进行独立存储。文件被切分后的block在Linux文件系统的视角下就是一个一个的文件; 默认大小是128M
2.数据复制
*数据复制由NameNode统一管理;
三份副本的放置策略如下:
第一个副本放置在客户端所在的节点,若客户端为远程访问则随机选择一个节点。
第二个副本放置在与第一个副本同机架的另外一个节点上
第三个副本放置在不同机架的节点上
3.心跳检测与副本恢复(了解)
每个DataNode都会定期的向NameNode发送心跳包消息。一旦有DataNode离线的情况出现,NameNode会根据对心跳包的监测来实时的获知异常情况,并将该节点标识为死节点,NameNode将不会向死节点转发任何IO请求。死节点的出现意味着有不可用副本,也就是说文件的副本数可能会低于配置数,此时NameNode会根据需要启动副本的重新复制
4.HDFS元数据管理机制
*分类:
(1)文件目录结构信息,及其自身的属性信息。
(2)文件存储信息,包括文件分块信息及block和节点对应信息
(3)Datanode信息。
5.HDFS持久化的两个文件
EditLog和FSImage
6.HDFS shell命令(重点)
作业2
##第五章
1.YARN的守护进程和作用(了解不需要背)
*ResourceManager
负责整个集群的资源管理和分配;包括Scheduler和ApplicationsManager两个主要组件
*ApplicationMaster
负责任务协调工作,主要功能为:
(1)代替了MRv1中的JobTracker。
(2)用户每提交一个应用程序就会产生一个对应的AM。
(3)为运行的应用向RM申请资源。
(4)在Job中对Task实现调度。
(5)与NodeManager通信以启动或者停止任务。
(6)监控所有任务的运行情况,任务失败后重新申请资源以重启任务。
*NodeManager
(1)代替了MRv1中的TaskTracker。
(2)定向通过心跳向RM汇报本节点的资源使用和各个Container的运行情况。
(3)接收并且处理来自AM的Container启动和停止的各种请求
*Container
(1)是YARN中的资源抽象,是系统资源分配的基本单位。
(2)封装内存、CPU、磁盘、网络等资源。
(3)YARN为每个任务分配一个Container.
2.YARN的资源调度(知道这些调度选项)
FIFO Scheduler(FIFO调度器)
Capacity Scheduler(容量调度器)
Fair Scheduler(公平调度器)
##第六章

1.MapReduce概念(理解)
	MapReduce是一种可用于数据处理的编程模型。该模型比较简单,将一个作业划分为map和reduce两个阶段。
	map阶段主要是将大量的数据进行拆分,并进行并行处理(体现了分而治之的思想),
	此阶段处理的结果有可能是最终结果,如果不是最终结果,则再转入到reduce阶段。
	reduce阶段的作用是将map的输出进行整合汇总,两个阶段互相配合,以可靠、容错的方式在集群上并行处理大量数据(TB级别的数据集)。
2.为何引入mapreduce?(了解)
	(1)海量数据的处理
	(2)集群运行的困难
	(3)业务逻辑与底层资源分配的隔离
3.Wordcount案例(重点)
3.map本地化(重点)
	    map任务有本地化的局限,意思是map任务一般情况下都会运行在分片所在的节点上,
		这样的好处是可以不用跨节点传输数据,从而大大提高了程序运行效率;当然如果本地节点正在忙碌,
		无法分配出资源运行map任务,那么会在分片所在节点的同一个机架上分配节点(机架本地化),
		总的来说就是在距离数据最近的节点上来运行,这也符合大数据“数据在哪,计算就在哪”的思想。
		与map任务不同,reduce任务可以在集群的任何位置运行。
4.Combiner(重点)
	Combiner是一个继承了Reducer的类;
	它的作用是当map生成的数据过大时,可以精简压缩传给reduce的数据;
	它的使用可以使在map的输出在给予reduce之前做一下合并或计算,如把具有相同key的value做一个计算
	多数情况下,Combiner和reduce处理的是同一种逻辑
5.Partioner(重点)
	Partioner定义分区规则;
	默认情况下,使用的是HashPartitioner,也就是使用hash的方式对键进行分区
	通过继承Partitoner类,定义自己的分区规则
	通过Job的setPartitonerClass()方法和setNumReduceTasks()设置使用分区
6.Hadoop默认使用的是FileInputFormat下的TextInputFormat输入处理类(记住);
	Hadoop默认使用的是FileOutputFormat下的TextOutputFormat类

##第七章
1.Hadoop I/O操作时进行数据的完整性检查主要是在两个阶段进行
(1)本地文件上传到HDFS集群中
(2)HDFS集群数据读取到本地中
2.一般使用CompressionCodec接口实现具体的编解码器来对流进行压缩和解压缩
3.i/o序列化接口(重点)
*Writable接口必须要实现write方法和readFields方法
4.典型hadoop序列化接口及使用方法(了解)
*NullWritable类型
NullWritable的序列化长度为0,它既不从数据流中读取数据也不向数据流中写数据。
在不需要使用键值的情况下可使用该类型进行占位。
*ObjectWritable类型
ObjectWritable 是一种多用途的封装,他可以指向Java 基本类型、字符串、枚举、Writable 、空值, 它使用Hadoop 的RPC 来封装和反封装方法的参数和返回类型.
5.实现自定义的序列化类需要注意以下事项
(1)Writable的序列化方法必须要重写,重写序列化方法时写入和读取的顺序必须完全一样。
(2)必须要有无参构造方法,因为反序列化时需要反射调用无参构造方法。
(3)如果有写入文件的需求则需要实现 toString() 方法。
(4)如果有排序的需求则需要实现compareTo() 方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值