作者声明:只做分享,不做讲解,仅供参考
一、 Hadoop概述
1、什么是Hadoop?
- Hadoop是开源的技术框架,提供分布式存储、计算、资源调度的解决方案
复制代码 2、Hadoop的三大组件是什么?
- Hadoop的三大组件HDFS 分布式存储、MapReduce分布式计算和YARN资源调动;也是Hadoop的三大功能。
复制代码 HDFS组件
HDFS是Hadoop内的分布式存储组件
可以构建分布式文件体系用于数据存储
MapReduce组件
MapReduce是Hadoop内分布式计算组件。
提供编程接口供用户开发分布式计算程
序
YARN组件
YARN是Hadoop内分布式资源调度组件。
可供用户团体调度大规模集群的资源使
二、认识Hadoop 第一面
1、学习Hadoop的第一组件HDFS
- HDFS是Hadoop内的分布式存储组件可以构建分布式文件系统用于数据存
复制代码 1.为什么需要分布式存储?
1.数据量太大,单机存储能力有上限,需要靠数目来解决问题
2.数目的提升带来的是网络传输、磁盘读写、CPU、 内存等各方面的
综合提升。分布式组合在一起可以达到1+1>2的效果
2.HDFS的基础架构是什么?
- 首先HDFS是主从模式架构,主从模式(Master-Slaves) 就是中心化模式,表示有一个主节点来作为管理者,管理协调下属一批从节点工作。
复制代码 3.理解什么是HDFS他和Hadoop的关系
- HDFS的全称是: Hadoop Distributed File System ,它是解决Hadoop框架中的分布式数据存储解的,
- 可以在多台服务器上构建存储集群,存储海量的数据
复制代码 4.理解Hadoop HDFS分布式存储体系的基础架构脚色
NameNode:
HDFS体系的主脚色,是一个独立的历程
负责管理HDFS整个文件体系
负责管理DataNode
DataNode:
HDFS体系的从脚色,是一个独立历程
主要负责数据的存储,即存入数据和取出数据
SecondaryNameNode:
NameNode的辅助, 是逐一个独立历程
主要帮助NameNode完成元数据整理工作(打杂)
2、部署Hadoop的第一组件HDFS
1.Hadoop 服务器部署前期预备工作
- 配置IP
- [root@node1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
- [root@node1 ~]# systemctl restart network
- 配置hosts文件
- [root@node1 ~]# vim /etc/hosts
- ssh设置免密登录
- [root@node1 ~]# ssh-keygen -t rsa -b 4096
- [root@node1 ~]# cd .ssh/
- [root@node1 .ssh]# ls
- id_rsa id_rsa.pub
- 本地和Linux文件传输
- 查看是否安装 lrzsz
- [root@node1 ~]# rpm -qa |grep lrzsz
- lrzsz-0.12.20-36.el7.x86_64
- 安装lrzsz
- [root@node1 ~]# yum -y install lrzsz
复制代码 2.创建hadoop用户并配置免密登录
- 我们为大数据的软件创建一个单独的用户hadoop,并为三台服务器同样配置hadoop用户的免密互通
- 1.在每一台机器执行: useradd hadoop,创建hadoop用户
- 2.在每一台机器执行: passwd hadoop,设置hadoop用户密码为123456
- 3.在每一台机器均切换到hadoop用户: su - hadoop,并执行ssh-keygen -t rsa -b 4096,创建ssh密钥
- 4.在每一台机器均执行
- ssh-copy-id node1
- ssh-copy-id node2
- ssh-copy-id node3
复制代码 3. jdk 的安装与配置
1.创建文件夹,用来部署JDK,将JDK和Tomcat都安装部署到: /export/server内
2.解压缩JDK安装文件
- tar -zxvf jdk-8u45-linux-x64.tar.gz -C /export/server/
复制代码 3.配置JDK的软链接
- ln -s /export/server/jdk1.8.0_45 /export/server/jdk
复制代码 4.配置JAVA_ HOME环境变量,以及将$JAVA_ HOME/bin文件夹加入PATH环境变量中
- vim /etc/profile
- 添加以下变量:
- export JAVA_HOME=/export/server/jdk
- export PATH=$PATH: $JAVA_HOME/bin
复制代码 5.生效环境变量
4.配置java实行程序的软链接
1 #删除体系自带的java程序
2 #软链接我们自己安装的java程序
- ln -s /export/server/jdk/bin/java /usr/bin/java
复制代码 5.实行验证
- java -version
- javac -version
复制代码 6. linux服务器时间同步
- yum -y install ntp
- rm -f /etc/localtime
- ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
- ntpdate -u ntp.aliyun.com 同步时间
- systemctl start ntpd 启动ntp
- systemctl enable ntpd 开机自启
- systemctl status ntpd 查看状态
复制代码 3、HDFS副本块数目的配置
1.修改配置文件
HDFS文件体系的数据安全,是依靠多个副原来确保的。
如何设置默认文件上传到HDFS中拥有的副本数目呢?可以在hdfs-site.xm1中配置如下属性:
- <property>
- <name>dfs.replication< /name>
- <value>3</value>
- </ property>
复制代码 这个属性默认是3,一般情况下,我们无需自动配置(除非需要设置非3的数值)
如果需要自界说这个属性,请修改每一台服务器的hdfs-site.xml文件,并设置此属性。
2.命令修改
●除了配置文件外,我们还可以在上传文件的时间,临时决定被上传文件以多少个副本存储。
- hadoop fs -D dfs.replication=2 -put test.txt /tmp/
复制代码 如上命令,就可以在上传test.txt的时间,临时设置其副本数为2
对于已经存在HDFS的文件,修改dfs.replication属性不会生效,如果要修改已存在文件可以通过命令
- hadoop fs -setrep [-R] 2 路径
复制代码 如上命令,指定path的内容将会被修改为2个副本存储。
-R选项可选,使用-R表现对子目录也生效。
3.fsck命令检查文件的副本数
同时,我们可以使用hdfs提供的fsck命令来检查文件的副本数
- hdfs fsck 文件路径 [-files [-blocks [-locations]]]
- [hadoopanode1 ~]$ hdfs fsck /3gdata - files -blocks -locat ions
复制代码 fsck可以检查指定路径是否正常
●
-files可以列出路径内的文件状态
●
-files -blocks 输出文件块陈诉(有几个块,多少副本)
●
-files -blocks -locations 输出每一个block的详情
4、NameNode元数据管理维护
NameNode基于edits和FSImage的配合,完成整个文件体系文件的管理。
1.每次对HDFS的操作,均被edits文件记录
2. edits达到大小上线后,开启新的edits记录
3.定期举行edits的合并操作,如当前没有 fsimage文件,将全部edits合并为第一个fsimage;如当前 已存在fsimage文件,将全部edits和己存在的fsimage举行合并,形成新的fsimage
4.合并的条件是基于设置的时间或者处理的事物量。以上两个条件通过内置参数定时判断。
元数据合并控制参数
对于元数据的合并,是一个定时过程,基于:
●dfs.namenode.checkpoint.period, 默认3600 (秒)即1小时
●dfs.namenode.checkpoint.txns, 默认1000000, 即100W次事件只要有一个达到条件就实行。
●检查是否达到条件,默认60秒检查一次,基于:
dfs.namenode. checkpoint. check. period,默认60 (秒),来决定
SecondaryNameNode的作用
SecondaryNameNode会通过http从NameNode拉取数据( edits和fsimage)然后合并完成后提供给NameNode使用。
5、HDFS的读写流程
1.对于客户端读取HDFS数据的流程中,一定要知道岂论读、还是写,NameNode都不经手数据,均是客户端和DataNode直接通讯,不然对NameNode压力太大
2.写入和读取的流程,简单来说就是:
●NameNode做授权判断 (是否能写、是否能读)
●客户端直连DataNode举行写入(由DataNode自己完成副本复制),
客户端直连DataNode举行block读取
●写入,客户端会被分配找离自己近来的DataNode写数据
●读取,客户端拿到的block列表,会是网络距离近来的一份
3.网络距离
●近来的距离就是在同一台机器
●其次就是同一个局域网(交换机)
●再其次就是超过交换机
●再其次就是超过数据中心
HDFS内置网络距离计算算法,可以通过IP地点、路由表来推断网络距离
三、认识Hadoop 第二面
1、学习Hadoop的第二组件MapReduce
1.什么是计算、分布式计算?
●计算:对数据举行处理,使用统计分析等手段得到需要的效果
●分布式计算:即以分布式的形式完成数据的统计,得到需要的效果。多台服务器协同工作,共同完成一个计算任务
2.分布式(数据)计算模式
模式一:分散 ----> 汇总模式: ( MapReduce就是这种模式)
1>.将数据分片,多台服务器各自负责一部分数据处理
2>.然后将各自的效果,举行汇总处理
3>.最终得到想要的计算效果
模式二: 中心调度 —> 步调实行模式: (大数据体系的Spark、Flink等是这种模式)
1>.由一个节点作为中心调度管理者
2>.将任务划分为几个详细步调
3>.管理者安排每个机器实行任务
4>.最终得到效果数据
2、分布式计算框架- MapReduce
1.MapReduce 的认识
MapReduce即Hadoop内提供的举行分布式计算的组件
MapReduce是“分散->汇总"模式的分布式计算框架,可供开发人员开发相干程序举行分布式数据计算。
2.MapReduce提供了2个编程接口:Map、Reduce 其中
●Map功能接口提供了“分散”的功能,由服务器分布式对数据举行处理
●Reduce功能接口提供了“汇总(聚合)”的功能,将分布式的处理效果汇总统计
3.MapReduce的运行机制
●将要实行的需求,分解为多个MapTask和ReduceTask
●将Map Task和Reduce Task分配到对应的服务器去实行
四、认识Hadoop 第三面
1、学习Hadoop的第三组件YARN的概述
1.YARN是做什么的?
●YARN是Hadoop的一个组件,用以做集群的资源(内存、CPU等)调度
2.为什么需要资源调度
将资源统一管控举行分配可以进步资源利用率
3.程序如安在YARN内运行?
● 程序向YARN申请所需资源
● YARN为程序分配所需资源供程序使用
4.MapReduce和YARN的关系
●YARN用来调度资源给MapReduce分配和管理运行资源所以, MapReduce需要YARN才能实行(普遍情况)
3.、YARN 的核心框架
1>. YARN的架构有哪2个核心脚色?
●主( Master ) : ResourceManager
ResourceManager(主):整个集群的资源调度者,负责协调调度各个程序所需的资源。
●从( Slave ) : NodeManager
NodeManager(从):单个服务器的资源调度者,负责调度单个服务器上的资源提供给应用程序使用
2>.两个脚色各自的功能是什么?
● ResourceManager: 管理、统筹并分配整个集群的资源
● NodeManager: 管理、分配单个服务器的资源,即创建管理容器,由容器提供资
源供程序使用
3>.什么是YARN的容器?
● 容器(Container )是YARN的NodeManager在所属服务器上分配资源的手段
● 创建一个资源容器, 即由NodeManager占用这部分资源
● 然后应用程序运行在NodeManager创建的这个容器内
● 应用程序无法突破容器的资源限定
4>.YARN架构的辅助脚色:
● 辅助脚色 roxyServer(代理服务器) ,保障WEB UI访问的安全性
● 辅助脚色:JobHistoryServer(历史服务器),记录历史程序运行信息和日记
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |