菜鸟的Hadoop快速⼊门
⼀、相关概念
1、⼤数据
⼤数据是⼀门概念,也是⼀门技术,是以Hadoop为代表的⼤数据平台框架上进⾏各种数据分析的技术。
⼤数据包括了以Hadoop和Spark为代表的基础⼤数据框架,还包括实时数据处理,离线数据处理,数据分析,数据挖掘和⽤机器算法进⾏预测分析等技术。
2、Hadoop
hadoop分布式集搭建Hadoop是⼀个开源的⼤数据框架,是⼀个分布式计算的解决⽅案。
Hadoop的两个核⼼解决了数据存储问题(HDFS分布式⽂件系统)和分布式计算问题(MapRe-duce)。
举例1:⽤户想要获取某个路径的数据,数据存放在很多的机器上,作为⽤户不⽤考虑在哪台机器上,HD-FS⾃动搞定。
举例2:如果⼀个100p的⽂件,希望过滤出含有Hadoop字符串的⾏。这种场景下,HDFS分布式存储,突
破了服务器硬盘⼤⼩的限制,解决了单台机器⽆法存储⼤⽂件的问题,同时MapReduce分布式计算可以将⼤数据量的作业先分⽚计算,最后汇总输出。
⼆、Hadoop特点
优点
1、⽀持超⼤⽂件。HDFS存储的⽂件可以⽀持TB和PB级别的数据。
2、检测和快速应对硬件故障。数据备份机制,NameNode通过⼼跳机制来检测DataNode是否还存在。
3、⾼扩展性。可建构在廉价机上,实现线性(横向)扩展,当集增加新节点之后,NameNode也可以感知,将数据分发和备份到相应的节点上。
4、成熟的⽣态圈。借助开源的⼒量,围绕Hadoop衍⽣的⼀些⼩⼯具。
缺点
1、不能做到低延迟。⾼数据吞吐量做了优化,牺牲了获取数据的延迟。
2、不适合⼤量的⼩⽂件存储。
3、⽂件修改效率低。HDFS适合⼀次写⼊,多次读取的场景。
三、HDFS介绍
1、HDFS框架分析
HDFS是Master和Slave的主从结构。主要由Name-Node、Secondary NameNode、DataNode构成。
NameNode
管理HDFS的名称空间和数据块映射信存储元数据与⽂件到数据块映射的地⽅。
如果NameNode挂掉了,⽂件就会⽆法重组,怎么办?有哪些容错机制?
Hadoop可以配置成HA即⾼可⽤集,集中有两个NameNode节点,⼀台active主节点,另⼀台stan-dby备⽤节点,两者数据时刻保持⼀致。当主节点不可⽤时,备⽤节点马上⾃动切换,⽤户感知不到,避免了NameNode的单点问题。
Secondary NameNode
辅助NameNode,分担NameNode⼯作,紧急情况下可辅助恢复NameNode。
Slave节点,实际存储数据、执⾏数据块的读写并汇报存储信息给NameNode。
2、HDFS⽂件读写
⽂件按照数据块的⽅式进⾏存储在DataNode上,数据块是抽象块,作为存储和传输单元,⽽并⾮整个⽂件。
⽂件为什么要按照块来存储呢?
⾸先屏蔽了⽂件的概念,简化存储系统的设计,⽐如100T的⽂件⼤于磁盘的存储,需要把⽂件分成多个数据块进⽽存储到多个磁盘;为了保证数据的安全,需要备份的,⽽数据块⾮常适⽤于数据的备份,进⽽提升数据的容错能⼒和可⽤性。
数据块⼤⼩设置如何考虑?
⽂件数据块⼤⼩如果太⼩,⼀般的⽂件也就会被分成多个数据块,那么在访问的时候也就要访问多个数据块地址,这样效率不⾼,同时也会对NameNode的内存消耗⽐较严重;数据块设置得太⼤的话,对并⾏的⽀持就不太好了,同时系统如果重启需要加载数据,数据块越⼤,系统恢复就会越长。
3.2.1 HDFS⽂件读流程
1、向NameNode通信查询元数据(block所在的DataNode节点),到⽂件块所在的DataNode服务器。
2、挑选⼀台DataNode(就近原则,然后随机)服务器,请求建⽴socket流。
3、DataNode开始发送数据(从磁盘⾥⾯读取数据放⼊流,以packet为单位来做校验)。
4、客户端已packet为单位接收,现在本地缓存,然后写⼊⽬标⽂件,后⾯的block块就相当于是append到前⾯的block块最后合成最终需要的⽂件。
3.2.2 HDFS⽂件写流程
1、向NameNode通信请求上传⽂件,NameNode检查⽬标⽂件是否已存在,⽗⽬录是否存在。
2、NameNode返回确认可以上传。
3、client会先对⽂件进⾏切分,⽐如⼀个block块128m,⽂件有300m就会被切分成3个块,⼀个128m、⼀个128m、⼀个44m。请求第⼀个block该传输到哪些DataNode服务器上。
4、NameNode返回DataNode的服务器。
5、client请求⼀台DataNode上传数据,第⼀个DataNode收到请求会继续调⽤第⼆个DataNode,然后第⼆个调⽤第三个DataNode,将整个通道建⽴完成,逐级返回客户端。
6、client开始往A上传第⼀个block,当然在写⼊的时候DataNode会进⾏数据校验,第⼀台DataNode收到后就会传给第⼆台,第⼆台传给第三台。
7、当⼀个block传输完成之后,client再次请求NameNode上传第⼆个block的服务器。
四、MapReduce介绍
1、概念
MapReduce是⼀种编程模型,是⼀种编程⽅法,是抽象的理论,采⽤了分⽽治之的思想。MapReduce框架的核⼼步骤主要分两部分,分别是Map和Reduce。每个⽂件分⽚由单独的机器去处理,这就是Map的⽅法,将各个机器计算的结果汇总并得到最终的结果,这就是Reduce的⽅法。
向MapReduce框架提交⼀个计算作业时,它会⾸先把计算作业拆分成若⼲个Map任务,然后分配到不同的节点上去执⾏,每⼀个Map任务处理输⼊数据中的⼀部分,当Map任务完成后,它会⽣成⼀些中间⽂件,这些中间⽂件将会作为Reduce任务的输⼊数据。Reduce任务的主要⽬标就是把前⾯若⼲个Map的输出汇总到⼀起并输出。
3、运⾏MapReduce⽰例
运⾏Hadoop⾃带的MapReduce经典⽰例Word-count,统计⽂本中出现的单词及其次数。⾸先将任务提交到Hadoop框架上。
查看MapReduce运⾏结束后的输出⽂件⽬录及结果内容。
可以看到统计单词出现的次数结果
五、Hadoop安装
墙裂推荐:史上最详细的Hadoop环境搭建()
1、Hadoop部署模式
本地模式
伪分布式模式
完全分布式模式
以上部署模式区分的依据是NameNode、Data-Node、ResourceManager、NodeManager等模块运⾏在⼏个JVM进程、⼏个机器上。
2、安装步骤(以伪分布式模式为例)
学习Hadoop⼀般是在伪分布式模式下进⾏。这种模式是在⼀台机器上各个进程上运⾏Hadoop的各个模块,伪分布式的意思是虽然各个模块是在各个进程上分开运⾏的,但是只是运⾏在⼀个操作系统上的,并不是真正的分布式。
5.2.1 JDK包下载、解压安装及JAVA环境变量配置
exportJAVA_HOME=/home/admin/apps/jdk1.8.0_151
exportCLASSPATH=.:JAVA_HOME/lib/tools.jar
exportPATH=PATH
5.2.2 Hadoop包下载、解压安装及Hadoop环境变量配置
exportHADOOP_HOME="/zmq/modules/hadoop/hadoop-3.1.0"
exportPATH=HADOOP_HOME/sbin:$PATH
5.2.3 配置Hadoop-env.sh、mapred-env.sh、yarn-env.sh⽂件的JAVA_HOME参数
exportJAVA_HOME="/home/admin/apps/jdk1.8.0_151"
5.2.4 配置l,配置的是HDFS的地址和Hadoop临时⽬录
5.2.5 配置l,设置HDFS存储时的备份数量,这⾥是伪分布式部署,就填写1
5.2.6 格式化HDFS,启动NameNode、Data-Node、SecondaryNameNode,查看进程
5.2.7 搭建完成,操作HDFS(常⽤的新建⽬录、上传下载⽂件等),以及运⾏MapReduceJob
六、Hadoop更多
以上介绍的仅是对Hadoop的初步学习和使⽤,Ha-doop的HA完全分布式部署、Hadoop的资源调度YARN、Hadoop的⾼可⽤和容错机制、Hadoop⽣态圈的其他组件等等还没有去研究,感叹Hadoop⽔很深,哈哈。
作者简介:梦琴,两年+测试经验,当前主要负责内部平台产品的测试及部分外部交付项⽬测试。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。